aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornathansmith117 <thenathansmithsmith@gmail.com>2024-03-28 18:17:14 +0000
committernathansmith117 <thenathansmithsmith@gmail.com>2024-03-28 18:17:14 +0000
commit5158fa9b31a5bfe69c9feae17e1714e41ba683bd (patch)
tree4715e044103fc37aecf34f2ff3cb82cb68e8a76a
parent7f91656b8d69f79a38746e4f8c577c2314ab2d79 (diff)
downloadPenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.tar.gz
PenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.tar.bz2
PenguinYippies-5158fa9b31a5bfe69c9feae17e1714e41ba683bd.zip
Remover tool working
-rw-r--r--src/clicky.c14
-rw-r--r--src/clicky.h1
-rw-r--r--src/game.c6
-rw-r--r--src/gameScreen.c22
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.
diff --git a/src/game.c b/src/game.c
index 49fb4f8..0a688a0 100644
--- a/src/game.c
+++ b/src/game.c
@@ -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)