aboutsummaryrefslogtreecommitdiffstats
path: root/src/clicky.c
diff options
context:
space:
mode:
authornathansmith117 <thenathansmithsmith@gmail.com>2024-02-22 22:37:18 +0000
committernathansmith117 <thenathansmithsmith@gmail.com>2024-02-22 22:37:18 +0000
commit8409c0fef6be37b3b5081402c1669207a1dc9ca3 (patch)
tree74a35a59860450e4915d01c8313545a242d87747 /src/clicky.c
parent23707911599413826ee20044cf4eeecbb8e3bdb7 (diff)
downloadPenguinYippies-8409c0fef6be37b3b5081402c1669207a1dc9ca3.tar.gz
PenguinYippies-8409c0fef6be37b3b5081402c1669207a1dc9ca3.tar.bz2
PenguinYippies-8409c0fef6be37b3b5081402c1669207a1dc9ca3.zip
Working on clicky list
Diffstat (limited to 'src/clicky.c')
-rw-r--r--src/clicky.c40
1 files changed, 29 insertions, 11 deletions
diff --git a/src/clicky.c b/src/clicky.c
index 691aa85..3afb515 100644
--- a/src/clicky.c
+++ b/src/clicky.c
@@ -3,9 +3,27 @@
#include "assets.h"
#include "util.h"
-void updateClicky(Game* game, Clicky* clicky)
+void initClickies(Clickies* clickies)
{
- clicky->updateCB(game, clicky);
+ clickies->clickiesCount = 0;
+}
+
+void closeClickies(Clickies* clickies)
+{
+ for (int i = 0; i < clickies->clickiesCount; ++i)
+ {
+ // Yes, we shall free it using a callback it stores.
+ // Just wish I could free myself like this ):
+ clickies->clickies[i].freeCB(clickies->clickies[i]);
+ }
+}
+
+void updateClickies(Game* game, Clickies* clickies)
+{
+ for (int i = 0; i < clickies->clickiesCount; ++i)
+ {
+ clickies->clickies[i].updateCB(game, &clickies->clickies[i]);
+ }
}
void updatePenguinLol(Game* game, Clicky* clicky)
@@ -39,26 +57,26 @@ void updatePenguinLol(Game* game, Clicky* clicky)
clicky->rect, Vector2Zero(), 0.0, WHITE);
}
+void freePenginLolClicky(Clicky clicky)
+{
+ closeAnimation(&clicky.animation);
+}
+
Clicky createPenguinLolClicky(Game* game)
{
Clicky clicky;
clicky.animation = createAnimation(&game->assets.animations[PENGUIN_LOL_ANIMATION], ANIMATION_DEFAULT_DELAY);
- setAnimationFrame(&clicky.animation, 0);
+ setAnimationFrame(&clicky.animation, clicky.animation.frameCount - 1);
clicky.animation.repeat = false;
clicky.texture = NULL;
clicky.rect = (Rectangle){0.0, 0.0, 512, 512};
- clicky.colors = LoadImageColors(game->assets.animations[PENGUIN_LOL_ANIMATION].image);
-
clicky.data = NULL;
clicky.updateCB = updatePenguinLol;
+ clicky.freeCB = freePenginLolClicky;
- return clicky;
-}
+ clicky.wasClicked = false;
-void freePenginLolClicky(Clicky clicky)
-{
- closeAnimation(&clicky.animation);
- UnloadImageColors(clicky.colors);
+ return clicky;
}