diff options
author | nathansmith117 <thenathansmithsmith@gmail.com> | 2024-03-28 18:17:14 +0000 |
---|---|---|
committer | nathansmith117 <thenathansmithsmith@gmail.com> | 2024-03-28 18:17:14 +0000 |
commit | 5158fa9b31a5bfe69c9feae17e1714e41ba683bd (patch) | |
tree | 4715e044103fc37aecf34f2ff3cb82cb68e8a76a /src | |
parent | 7f91656b8d69f79a38746e4f8c577c2314ab2d79 (diff) | |
download | PenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.tar.gz PenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.tar.bz2 PenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.zip |
Remover tool working
Diffstat (limited to 'src')
-rw-r--r-- | src/clicky.c | 14 | ||||
-rw-r--r-- | src/clicky.h | 1 | ||||
-rw-r--r-- | src/game.c | 6 | ||||
-rw-r--r-- | src/gameScreen.c | 22 |
4 files changed, 39 insertions, 4 deletions
diff --git a/src/clicky.c b/src/clicky.c index f3201f6..aac3fc2 100644 --- a/src/clicky.c +++ b/src/clicky.c @@ -32,6 +32,20 @@ void addClickyToClickies(Clickies* clickies, Clicky clicky) clickies->clickies[clickies->clickiesCount - 1] = clicky; } +void removeClickyFromClickies(Clickies* clickies, int id) +{ + // Free clicky. + clickies->clickies[id].freeCB(clickies->clickies[id]); + + // Move things back. + for (int i = id; i < clickies->clickiesCount - 1; ++i) + { + clickies->clickies[i] = clickies->clickies[i + 1]; + } + + --clickies->clickiesCount; +} + void updateClickies(Game* game, Clickies* clickies) { for (int i = 0; i < clickies->clickiesCount; ++i) diff --git a/src/clicky.h b/src/clicky.h index 8fb339d..819c177 100644 --- a/src/clicky.h +++ b/src/clicky.h @@ -47,6 +47,7 @@ typedef struct Clickies { void initClickies(Clickies* clickies); void closeClickies(Clickies* clickies); void addClickyToClickies(Clickies* clickies, Clicky clicky); +void removeClickyFromClickies(Clickies* clickies, int id); void updateClickies(Game* game, Clickies* clickies); // A silly silly penguin lol. @@ -17,8 +17,10 @@ void initGame(Game* game) initClickies(&game->clickies); // Test clickies. - Clicky testClicky = createPenguinLolClicky(game); - addClickyToClickies(&game->clickies, testClicky); + Clicky firstClicky = createPenguinLolClicky(game); + firstClicky.rect.x = WINDOW_WIDTH / 2.0 - firstClicky.rect.width / 2.0; + firstClicky.rect.y = WINDOW_HEIGHT / 2.0 - firstClicky.rect.height / 2.0; + addClickyToClickies(&game->clickies, firstClicky); game->screenTexture = LoadRenderTexture(WINDOW_WIDTH, WINDOW_HEIGHT); diff --git a/src/gameScreen.c b/src/gameScreen.c index 81d5ab1..230005d 100644 --- a/src/gameScreen.c +++ b/src/gameScreen.c @@ -86,7 +86,25 @@ void updateGameScreenTool(GameScreen* gameScreen, Game* game) for (int i = 0; i < clickies->clickiesCount; ++i) { - // Lazyness + Rectangle rect = clickies->clickies[i].rect; + + if (CheckCollisionPointRec(getScaledMousePosition(), rect)) + { + // Draw silly outline. + Color colorOptions[] = {YELLOW, PINK, BLACK, BLUE, PURPLE, MAGENTA, RED}; + SetRandomSeed(time(NULL)); + int colorIndex = GetRandomValue(0, sizeof(colorOptions) / sizeof(Color) - 1); + Color color = colorOptions[colorIndex]; + + DrawRectangleLinesEx(rect, colorIndex + 1, color); + + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) + { + removeClickyFromClickies(clickies, i); + } + + break; // Only one at a time. + } } break; @@ -181,8 +199,8 @@ void updateGameScreen(GameScreen* gameScreen, Game* game) DrawText(stonesBuf, 40.0, 5.0, 30, BLACK); updateGameScreenNavigation(gameScreen, game); + updateGameScreenTool(gameScreen, game); // This should go before tool bar update because of how clicks work. updateGameScreenToolBar(gameScreen, game); - updateGameScreenTool(gameScreen, game); } void closeGameScreen(GameScreen* gameScreen) |