/********************************************************************************************** * * raylib - Advance Game template * * Gameplay Screen Functions Definitions (Init, Update, Draw, Unload) * * Copyright (c) 2014-2020 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, including commercial * applications, and to alter it and redistribute it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not claim that you * wrote the original software. If you use this software in a product, an acknowledgment * in the product documentation would be appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not be misrepresented * as being the original software. * * 3. This notice may not be removed or altered from any source distribution. * **********************************************************************************************/ #include "raylib.h" #include "screens.h" static bool doHairCut = false; static bool doHairTint = false; static bool doEyeLiner = false; static bool doLipStick = false; static bool doNose = false; static bool doGlasses = false; //---------------------------------------------------------------------------------- // Global Variables Definition (local to this module) //---------------------------------------------------------------------------------- const unsigned int headColors[6] = { 0xffe29bff, 0xfed5a8ff, 0xad8962ff, 0xfff1b8ff, 0xffd6c4ff, 0xd49c8dff }; const unsigned int hairColors[10] = { 0xf5bf60ff, 0xaa754aff, 0x974e14ff, 0xf36347ff, 0x87f347ff, 0xfc48d0ff, 0x3b435dff, 0x5f5e60ff, 0xe7e7e7ff, 0xfb386bff }; // Gameplay screen global variables static int framesCounter = 0; static int finishScreen = 0; static RenderTexture target = { 0 }; //---------------------------------------------------------------------------------- // Gameplay Screen Functions Definition //---------------------------------------------------------------------------------- // Gameplay Screen Initialization logic void InitGameplayScreen(void) { // Initialize GAMEPLAY screen variables framesCounter = 0; finishScreen = 0; target = LoadRenderTexture(720, 720); SetTextureFilter(target.texture, FILTER_BILINEAR); // Generate player character! //player = GenerateCharacter(); playerBase = player; // Generate dating character! dating = GenerateCharacter(); datingBase = dating; // TODO: Generate dating character likes // For the different types of properties we assign random like values: 0% (total-dislike) -> 100% (total-like) // The total match point will be the (like accumulated amount)/(num properties) // Some of the elements add points or remove points // At the end we can show the like percentadge of every element doHairCut = false; doHairTint = false; doEyeLiner = false; doLipStick = false; doNose = false; doGlasses = false; } // Gameplay Screen Update logic void UpdateGameplayScreen(void) { if (IsKeyPressed(KEY_SPACE)) { player = GenerateCharacter(); playerBase = player; } if (IsKeyPressed(KEY_ENTER)) finishScreen = 1; } // Gameplay Screen Draw logic void DrawGameplayScreen(void) { // Draw background DrawTexture(background, 0, 0, GetColor(0xf6aa60ff)); // Draw left menu buttons GuiButton((Rectangle){ 20, 40, 300, 60 }, "RE-TOUCH:", 2); if (GuiButton((Rectangle){ 20, 40 + 90, 300, 80 }, "HAIR TINT", doHairTint? 3 : -1)) { doHairTint = true; player.colHair = hairColors[GetRandomValue(0, 9)]; } if (GuiButton((Rectangle){ 20, 40 + 180, 300, 80 }, "HAIR", doHairCut? 3 : -1)) { doHairCut = true; player.hair = GetRandomValue(0, texHair.width/BASE_HAIR_WIDTH); } if (GuiButton((Rectangle){ 20, 40 + 270, 300, 80 }, "EYES", doEyeLiner? 3 : -1)) { doEyeLiner = true; player.eyes = GetRandomValue(0, texEyes.width/BASE_EYES_WIDTH - 1); } if (GuiButton((Rectangle){ 20, 40 + 360, 300, 80 }, "NOSE", doNose? 3 : -1)) { doNose = true; player.nose = GetRandomValue(0, texNose.width/BASE_NOSE_WIDTH - 1); } if (GuiButton((Rectangle){ 20, 40 + 450, 300, 80 }, "LIPS", doLipStick? 3 : -1)) { doLipStick = true; player.mouth = GetRandomValue(0, texMouth.width/BASE_MOUTH_WIDTH - 1); } if (GuiButton((Rectangle){ 20, 40 + 540, 300, 80 }, "GLASSES", 3)) { doGlasses = true; } // Draw player DrawCharacter(player, (Vector2){ GetScreenWidth()/2 - 125, 80 }); // Draw dating view GuiButton((Rectangle){ 970, 40, 260, 60 }, "DATING:", 2); GuiButton((Rectangle){ 970, 40 + 70, 260, 260 }, " ", 0); BeginTextureMode(target); DrawCharacter(dating, (Vector2){ (720 - 250)/2, (720 - 500)/2 }); EndTextureMode(); DrawTexturePro(target.texture, (Rectangle){ 0.0f, 0.0f, (float)target.texture.width, (float)-target.texture.height }, (Rectangle){ 970, 40 + 70, 260, 260 }, (Vector2){ 0, 0 }, 0.0f, WHITE); // Draw left button: date! if (GuiButton((Rectangle){ 970, 580, 260, 90 }, "GO DATE!", -1)) { finishScreen = 1; } } // Gameplay Screen Unload logic void UnloadGameplayScreen(void) { // Unload required textures } // Gameplay Screen should finish? int FinishGameplayScreen(void) { return finishScreen; }