diff options
Diffstat (limited to 'src/marathon.c')
-rw-r--r-- | src/marathon.c | 281 |
1 files changed, 140 insertions, 141 deletions
diff --git a/src/marathon.c b/src/marathon.c index 70484b6..2807ee1 100644 --- a/src/marathon.c +++ b/src/marathon.c @@ -1,123 +1,122 @@ #include "pong.h" void leaderboard_record(int Score) { - bool LeaderBoardGoing = true; - - /* Create Leaderboard struct */ - #define MAX_CHARACTERS 16 - struct { - char Name[MAX_CHARACTERS]; - int Score; - } LeaderboardEntry; - LeaderboardEntry.Score = Score; - - /* Init strings */ - int16_t CharacterNumber = 0; - int Key = 0; + bool LeaderBoardGoing = true; + +/* Create Leaderboard struct */ +#define MAX_CHARACTERS 16 + struct { + char Name[MAX_CHARACTERS]; + int Score; + } LeaderboardEntry; + LeaderboardEntry.Score = Score; + + /* Init strings */ + int16_t CharacterNumber = 0; + int Key = 0; int i = 0; - for(i = 0; i < sizeof(LeaderboardEntry.Name); i++) { - LeaderboardEntry.Name[i] = '\0'; - } - char Scored[8192]; - snprintf(Scored, sizeof(Scored), "You Scored: %d", LeaderboardEntry.Score); - - /* Init Camera */ - Camera2D MainCamera; - (void)MainCamera; /* Works-around unused variable compiler warning. */ - MainCamera.target = (Vector2){0, 0}; - MainCamera.offset = (Vector2){0, 0}; - MainCamera.rotation = 0; - while(LeaderBoardGoing == true) { - MainCamera.zoom = GetScreenHeight()/720.0f; - MainCamera.offset = (Vector2){GetScreenWidth()/2.0f, GetScreenHeight()/2.0f}; - MainCamera.target = (Vector2){1280/2.0f, 720/2.0f}; - - BeginDrawing(); - DrawRectangle(0, 0, 1280, 720, (Color){20, 20, 20, 255}); - Key = GetKeyPressed(); - switch(Key) { - case KEY_BACKSPACE: - if(CharacterNumber != 0) { - LeaderboardEntry.Name[CharacterNumber] = '\0'; - CharacterNumber -= 1; - } - break; - case KEY_ENTER: - if(CharacterNumber != 0) { - LeaderBoardGoing = false; - } - break; - default: - if (Key >= 33 && Key <= 126 && CharacterNumber < MAX_CHARACTERS) { - LeaderboardEntry.Name[CharacterNumber] = GetCharPressed(); - CharacterNumber += 1; - } - break; - } - DrawText(Scored, 5, 0, 48, BLUE); - DrawText("Enter Name:", 5, 50, 48, WHITE); - DrawText(LeaderboardEntry.Name, 300, 50, 48, WHITE); - EndDrawing(); - } - char *LeaderboardDirectory = SDL_GetPrefPath("iotib", "Pong"); + for (i = 0; i < sizeof(LeaderboardEntry.Name); i++) { + LeaderboardEntry.Name[i] = '\0'; + } + char Scored[8192]; + snprintf(Scored, sizeof(Scored), "You Scored: %d", LeaderboardEntry.Score); + + /* Init Camera */ + Camera2D MainCamera; + (void)MainCamera; /* Works-around unused variable compiler warning. */ + MainCamera.target = (Vector2){0, 0}; + MainCamera.offset = (Vector2){0, 0}; + MainCamera.rotation = 0; + while (LeaderBoardGoing == true) { + MainCamera.zoom = GetScreenHeight() / 720.0f; + MainCamera.offset = (Vector2){GetScreenWidth() / 2.0f, GetScreenHeight() / 2.0f}; + MainCamera.target = (Vector2){1280 / 2.0f, 720 / 2.0f}; + + BeginDrawing(); + DrawRectangle(0, 0, 1280, 720, (Color){20, 20, 20, 255}); + Key = GetKeyPressed(); + switch (Key) { + case KEY_BACKSPACE: + if (CharacterNumber != 0) { + LeaderboardEntry.Name[CharacterNumber] = '\0'; + CharacterNumber -= 1; + } + break; + case KEY_ENTER: + if (CharacterNumber != 0) { + LeaderBoardGoing = false; + } + break; + default: + if (Key >= 33 && Key <= 126 && CharacterNumber < MAX_CHARACTERS) { + LeaderboardEntry.Name[CharacterNumber] = GetCharPressed(); + CharacterNumber += 1; + } + break; + } + DrawText(Scored, 5, 0, 48, BLUE); + DrawText("Enter Name:", 5, 50, 48, WHITE); + DrawText(LeaderboardEntry.Name, 300, 50, 48, WHITE); + EndDrawing(); + } + char *LeaderboardDirectory = SDL_GetPrefPath("iotib", "Pong"); char LeaderboardFilePath[8192]; snprintf(LeaderboardFilePath, sizeof(LeaderboardFilePath), "%s/leaderboard.txt", LeaderboardDirectory); FILE *LeaderboardFile; - /* Put save to file here. */ - if ((LeaderboardFile = fopen(LeaderboardFilePath, "a")) == NULL) { - fprintf(stderr, "Unable to create leaderboard file.\n"); - return; - } - fprintf(LeaderboardFile, "%s %d\n", LeaderboardEntry.Name, Score); - fclose(LeaderboardFile); - return; + /* Put save to file here. */ + if ((LeaderboardFile = fopen(LeaderboardFilePath, "a")) == NULL) { + fprintf(stderr, "Unable to create leaderboard file.\n"); + return; + } + fprintf(LeaderboardFile, "%s %d\n", LeaderboardEntry.Name, Score); + fclose(LeaderboardFile); + return; } void marathon_main() { - - /* Init Music */ - Mix_Music *Background = Mix_LoadMUS("resources/marathon.wav"); - Mix_PlayMusic(Background, -1); - Mix_VolumeMusic(GlobalSettings.MusicVolume); - - /* Init balls lmao */ - struct Balls Ball; - Ball.X = 1280/2.0f; - Ball.Y = 720/2.0f; + /* Init Music */ + Mix_Music *Background = Mix_LoadMUS("resources/marathon.wav"); + Mix_PlayMusic(Background, -1); + Mix_VolumeMusic(GlobalSettings.MusicVolume); + + /* Init balls lmao */ + struct Balls Ball; + Ball.X = 1280 / 2.0f; + Ball.Y = 720 / 2.0f; Ball.Direction = LEFT; Ball.Speed = 3.0f; Ball.Angle = 0.0f; - Ball.NextTick = SDL_AtomicGet(&Ticks)+1; + Ball.NextTick = SDL_AtomicGet(&Ticks) + 1; - /* Init Player */ - struct Players Player; - Player.Y = 0; - Player.Direction = 0; - Player.Score = 0; + /* Init Player */ + struct Players Player; + Player.Y = 0; + Player.Direction = 0; + Player.Score = 0; - /* Init sprites */ - Texture2D PaddleSprite = LoadTexture("resources/paddle.png"); + /* Init sprites */ + Texture2D PaddleSprite = LoadTexture("resources/paddle.png"); Texture2D BallSprite = LoadTexture("resources/ball.png"); - char PlayerScore[50]; /* Used later to display score on screen. */ + char PlayerScore[50]; /* Used later to display score on screen. */ - /* Set Collision Boxes */ + /* Set Collision Boxes */ Player.HitBox = (Rectangle){80, Player.Y, 5, PaddleSprite.height}; Ball.HitBox = (Rectangle){Ball.X, Ball.Y, BallSprite.width, BallSprite.height}; - /* Init Camera */ - Camera2D MainCamera; - MainCamera.target = (Vector2){0, 0}; - MainCamera.offset = (Vector2){0, 0}; - MainCamera.rotation = 0; - bool MarathonGoing = true; + /* Init Camera */ + Camera2D MainCamera; + MainCamera.target = (Vector2){0, 0}; + MainCamera.offset = (Vector2){0, 0}; + MainCamera.rotation = 0; + bool MarathonGoing = true; bool HasScored = false; (void)HasScored; Vector2 MouseCurrentPosition = GetMousePosition(); - while(MarathonGoing == true && GameGoing == true) { - if (WindowShouldClose()) { /* Quit Game if the window is closed. */ - GameGoing = false; - } + while (MarathonGoing == true && GameGoing == true) { + if (WindowShouldClose()) { /* Quit Game if the window is closed. */ + GameGoing = false; + } /* Prevents multi-scoring in some cases. */ if (Ball.Direction == LEFT) { @@ -126,13 +125,13 @@ void marathon_main() { HasScored = false; } - snprintf(PlayerScore, 50, "Player: %d", Player.Score); - MainCamera.zoom = GetScreenHeight()/720.0f; - MainCamera.offset = (Vector2){GetScreenWidth()/2.0f, GetScreenHeight()/2.0f}; - MainCamera.target = (Vector2){1280/2.0f, 720/2.0f}; + snprintf(PlayerScore, 50, "Player: %d", Player.Score); + MainCamera.zoom = GetScreenHeight() / 720.0f; + MainCamera.offset = (Vector2){GetScreenWidth() / 2.0f, GetScreenHeight() / 2.0f}; + MainCamera.target = (Vector2){1280 / 2.0f, 720 / 2.0f}; - /* Controls */ - switch(player_controls()) { + /* Controls */ + switch (player_controls()) { case CONTROLLER_UP: Player.Y -= 20; break; @@ -145,55 +144,55 @@ void marathon_main() { EndDrawing(); MarathonGoing = pause_screen(&MainCamera); Mix_ResumeMusic(); - Ball.NextTick = SDL_AtomicGet(&Ticks)+1; + Ball.NextTick = SDL_AtomicGet(&Ticks) + 1; break; default: break; } /* Mouse Controls */ - if(MouseCurrentPosition.y != GetMousePosition().y) { - Player.Y = GetMouseY()-PaddleSprite.height/2.0f; - - if(GetMouseY() < 0) { - SetMousePosition(0, 0); - } else if(GetMouseY() > 720) { - SetMousePosition(0, 720); - } + if (MouseCurrentPosition.y != GetMousePosition().y) { + Player.Y = GetMouseY() - PaddleSprite.height / 2.0f; + + if (GetMouseY() < 0) { + SetMousePosition(0, 0); + } else if (GetMouseY() > 720) { + SetMousePosition(0, 720); + } MouseCurrentPosition = GetMousePosition(); } - /* Check if players are off-screen */ - if (Player.Y < 0) { - Player.Y = 0; - } else if (Player.Y > 480) { - Player.Y = 480; - } - - /* Collision */ - ball(&Player.HitBox, NULL, &Ball, &Player.Score, NULL); - /* Updates hitbox with player's position. */ - Player.HitBox.y = Player.Y; - - /* End Game */ - if(Ball.X < 0) { - MarathonGoing = false; - } - - BeginDrawing(); - ClearBackground(BLACK); - BeginMode2D(MainCamera); - DrawRectangle(0, 0, 1280, 720, (Color){20, 20, 20, 255}); - DrawTexture(PaddleSprite, 0, Player.Y, WHITE); - DrawTexture(BallSprite, Ball.X, Ball.Y, WHITE); - DrawText(PlayerScore, 0, 0, 32, BLUE); - EndMode2D(); + /* Check if players are off-screen */ + if (Player.Y < 0) { + Player.Y = 0; + } else if (Player.Y > 480) { + Player.Y = 480; + } + + /* Collision */ + ball(&Player.HitBox, NULL, &Ball, &Player.Score, NULL); + /* Updates hitbox with player's position. */ + Player.HitBox.y = Player.Y; + + /* End Game */ + if (Ball.X < 0) { + MarathonGoing = false; + } + + BeginDrawing(); + ClearBackground(BLACK); + BeginMode2D(MainCamera); + DrawRectangle(0, 0, 1280, 720, (Color){20, 20, 20, 255}); + DrawTexture(PaddleSprite, 0, Player.Y, WHITE); + DrawTexture(BallSprite, Ball.X, Ball.Y, WHITE); + DrawText(PlayerScore, 0, 0, 32, BLUE); + EndMode2D(); EndDrawing(); - } - Mix_HaltMusic(); + } + Mix_HaltMusic(); if (Player.Score > 0) { - leaderboard_record(Player.Score); + leaderboard_record(Player.Score); } - Mix_FreeMusic(Background); - return; + Mix_FreeMusic(Background); + return; } |