diff options
Diffstat (limited to 'src/title.c')
-rw-r--r-- | src/title.c | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/src/title.c b/src/title.c index 5ab0bf3..9e0d4af 100644 --- a/src/title.c +++ b/src/title.c @@ -116,9 +116,11 @@ static void score_screen(Camera2D *MainCamera) { /* Page Buttons Rectangles. */ Rectangle PrevPage = {5, 720-50, 70, 45}; Rectangle NextPage = {1280-70, 720-50, 70, 45}; + int Page = 0; bool EndOfPages = false; + bool BackButtonSelected = false; while(LookingAtScores == true && GameGoing == true) { /* Update Camera */ MainCamera->zoom = GetScreenHeight()/720.0f; @@ -164,6 +166,7 @@ static void score_screen(Camera2D *MainCamera) { /* Page Buttons */ if(CheckCollisionRecs(MouseCursor, PrevPage) && Page > 0) { DrawRectangleRec(PrevPage, RED); + BackButtonSelected = false; if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { if(Page > 0) { Page--; @@ -171,27 +174,53 @@ static void score_screen(Camera2D *MainCamera) { } } else if(CheckCollisionRecs(MouseCursor, NextPage) && EndOfPages == false) { DrawRectangleRec(NextPage, RED); + BackButtonSelected = false; if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { if(EndOfPages == false) { Page++; } } } + switch(player_controls_pressed()) { + case CONTROLLER_RIGHT: + if(EndOfPages == false) { + ++Page; + } + break; + case CONTROLLER_LEFT: + if(Page > 0) { + --Page; + } + break; + case CONTROLLER_UP: + BackButtonSelected = true; + break; + case CONTROLLER_ACTIVATE: + if(BackButtonSelected == true) { + LookingAtScores = false; + } + break; + default: + break; + } DrawText("<--", 5, 720-50, 48, WHITE); DrawText("-->", 1280-70, 720-50, 48, WHITE); /* Exit Button */ - if(CheckCollisionRecs(MouseCursor, (Rectangle){0,0,42,120})) { + if(CheckCollisionRecs(MouseCursor, (Rectangle){0,0,42,120}) || BackButtonSelected == true) { DrawRectangle(0, 0, 42, 120, RED); + BackButtonSelected = true; if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { LookingAtScores = false; } } + DrawText("<", 0, 0, 128, WHITE); /* Cursor */ DrawTexture(MouseCursorSprite, MouseCursor.x, MouseCursor.y, WHITE); EndMode2D(); EndDrawing(); } + clear_input_buffer(); return; } @@ -490,12 +519,7 @@ int title_screen() { 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) { @@ -534,25 +558,37 @@ int title_screen() { default: break; } - /* Activate menu item */ if( player_controls_pressed() == CONTROLLER_ACTIVATE ){ switch(Choice) { case 2: + clear_input_buffer(); settings(&MainCamera, TitleMusic); break; case 3: + clear_input_buffer(); OpenURL("docs/index.html"); EnableCursor(); break; case 4: TitleScreenGoing = false; GameGoing = false; + break; + case -1: + TitleScreenGoing = true; + break; default: TitleScreenGoing = false; break; } } + + /* Make sure choice selector doesn't go off screen */ + if(Choice > 4) { + Choice = 4; + } else if(Choice < 0) { + Choice = 0; + } BeginDrawing(); ClearBackground(BLACK); @@ -587,6 +623,7 @@ int title_screen() { DrawRectangleRec(AllScores, RED); if(player_controls_pressed() == CONTROLLER_ACTIVATE) { score_screen(&MainCamera); + Choice = -1; } } DrawText("See All Scores...", 600, 720-150, 48, WHITE); @@ -596,6 +633,7 @@ int title_screen() { DrawText(VersionString, GetScreenWidth()-400, GetScreenHeight()-32, 32, GREEN); EndDrawing(); } + printf("%d\n", Choice); Mix_HaltMusic(); Mix_FreeMusic(TitleMusic); return Choice; |