about summary refs log tree commit diff stats
path: root/src/title.c
diff options
context:
space:
mode:
authorCharadon <dev@iotib.net>2022-09-21 09:06:48 -0400
committerCharadon <dev@iotib.net>2022-09-21 09:06:48 -0400
commitecf9374e3e75d6528afb44f013432844d5fc01dd (patch)
tree3634c32689cb1f9684e90d3fe69a03bab98f6231 /src/title.c
parent4ea69698424f7bfe93d0e9142f6f50c0583ef168 (diff)
downloadPong-C-ecf9374e3e75d6528afb44f013432844d5fc01dd.tar.gz
Made it possible for new controls to select All Scores Screen
Diffstat (limited to 'src/title.c')
-rw-r--r--src/title.c62
1 files changed, 46 insertions, 16 deletions
diff --git a/src/title.c b/src/title.c
index 7594ed9..5ab0bf3 100644
--- a/src/title.c
+++ b/src/title.c
@@ -8,6 +8,10 @@ struct LeaderboardEntries {
 
 struct LeaderboardEntries Top10[10];
 
+/* Fun fact, I don't know what this does for the most part!
+ * Okay, well I kind of do. It sorts the leaderboard from highest score to lowest.
+ * But uh, I don't know how it does, but it works!
+ */
 static int compare_int(const void *Score1, const void *Score2) {
     const struct LeaderboardEntries *Entry1 = *(struct LeaderboardEntries**) Score1;
     const struct LeaderboardEntries *Entry2 = *(struct LeaderboardEntries**) Score2;
@@ -421,6 +425,7 @@ int title_screen() {
     Vector2 NewPosition = GetMousePosition();
     Texture2D MouseCursor = LoadTexture("resources/cursor.png");
     bool MouseCursorIn = true;
+	bool LeaderboardButtonSelected = false;
     DisableCursor();
 
     while(TitleScreenGoing == true && GameGoing == true) {
@@ -447,6 +452,21 @@ int title_screen() {
                 Mouse.x += OldPosition.x-NewPosition.x;
             }
         }
+		/* Check which button the mouse is hovering over. */
+		if(CheckCollisionRecs(Mouse, Versus)) {
+			Choice = 0;
+		} else if(CheckCollisionRecs(Mouse, Marathon)) {
+			Choice = 1;
+		} else if(CheckCollisionRecs(Mouse, Settings)) {
+			Choice = 2;
+		} else if(CheckCollisionRecs(Mouse, Help)) {
+			Choice = 3;
+		} else if(CheckCollisionRecs(Mouse, Exit)) {
+			Choice = 4;
+		} else if(CheckCollisionRecs(Mouse, AllScores)) {
+			LeaderboardButtonSelected = true;
+		}
+
 
 		/* Gamepad & Keyboard */
 		switch (player_controls_pressed()) {
@@ -456,14 +476,33 @@ int title_screen() {
 			case CONTROLLER_DOWN:
 				++Choice;
 				break;
+			case CONTROLLER_RIGHT:
+				if(Choice == 1) {
+					LeaderboardButtonSelected = true;
+					break;
+				}
+				break;
+			case CONTROLLER_LEFT:
+				if(LeaderboardButtonSelected == true) {
+					LeaderboardButtonSelected = false;
+				}
+				break;
 			default:
 				break;
 		}
+		/* Make sure choice selector doesn't go off screen */
 		if(Choice > 4) {
 			Choice = 4;
 		} else if(Choice < 0) {
 			Choice = 0;
 		}
+
+		/* Unselect the Leaderboard button if Marathon is no longer selected. */
+		if(Choice != 1) {
+			LeaderboardButtonSelected = false;
+		}
+
+		/* Unlock, and locking cursor */
         if (IsKeyPressed(KEY_ESCAPE)) {
             EnableCursor();
             MouseCursorIn = false;
@@ -473,20 +512,9 @@ int title_screen() {
 			EndDrawing();
             MouseCursorIn = true;
         }
-		/* Mouse */
-		if(CheckCollisionRecs(Mouse, Versus)) {
-			Choice = 0;
-		} else if(CheckCollisionRecs(Mouse, Marathon)) {
-			Choice = 1;
-		} else if(CheckCollisionRecs(Mouse, Settings)) {
-			Choice = 2;
-		} else if(CheckCollisionRecs(Mouse, Help)) {
-			Choice = 3;
-		} else if(CheckCollisionRecs(Mouse, Exit)) {
-			Choice = 4;
-		}
 
-		/* Select Menu Item */
+		
+		/* Highlight selected Menu Item */
 		switch(Choice) {
 			case 0:
             	Selected = &Versus;
@@ -505,7 +533,9 @@ int title_screen() {
 				break;
 			default:
 				break;
-        } /* Activate menu item */
+        } 
+		
+		/* Activate menu item */
 		if( player_controls_pressed() == CONTROLLER_ACTIVATE ){
 			switch(Choice) {
 				case 2:
@@ -553,9 +583,9 @@ int title_screen() {
                 }
 				skip:
 				if (Choice == 1) {
-					if(CheckCollisionRecs(Mouse, AllScores)) {
+					if(LeaderboardButtonSelected == true) {
 						DrawRectangleRec(AllScores, RED);
-						if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
+						if(player_controls_pressed() == CONTROLLER_ACTIVATE) {
 							score_screen(&MainCamera);
 						}
 					}