summaryrefslogtreecommitdiffhomepage
path: root/games/repair/screens/screen_gameplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'games/repair/screens/screen_gameplay.c')
-rw-r--r--games/repair/screens/screen_gameplay.c169
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;
+}