diff options
Diffstat (limited to 'games/repair/screens/screen_gameplay.c')
| -rw-r--r-- | games/repair/screens/screen_gameplay.c | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/games/repair/screens/screen_gameplay.c b/games/repair/screens/screen_gameplay.c new file mode 100644 index 00000000..9d1c4473 --- /dev/null +++ b/games/repair/screens/screen_gameplay.c @@ -0,0 +1,169 @@ +/********************************************************************************************** +* +* 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; +} |
