diff --git a/external/engine/array.h b/external/engine/array.h index 6886b5f..3fb9465 100644 --- a/external/engine/array.h +++ b/external/engine/array.h @@ -66,6 +66,14 @@ void* GetRandomElementFromArray(Array* array){ return &array->elements[randomIndex]; } +void UpdateArray(Array* array, void (*updateFunc)(void*)) +{ + if (!array || !updateFunc) return; + for (unsigned int i = 0; i < array->count; i++) { + updateFunc(array->elements[i]); + } +} + void RenderArray(Array* array, void (*renderFunc)(void*)) { if (!array || !renderFunc) return; diff --git a/include/flowers.h b/include/flowers.h index 9fe4905..8202571 100644 --- a/include/flowers.h +++ b/include/flowers.h @@ -13,6 +13,7 @@ typedef struct { Sprite sprite; Vector2 position; AGE age; + float ageTimer; } Flower; Array* CreateFlowers(Texture2D texture, float frameWidth, float rotation, float fieldSize) @@ -35,13 +36,32 @@ Array* CreateFlowers(Texture2D texture, float frameWidth, float rotation, float .rotation = rotation, .color = WHITE, }, - .age = CHILD + .age = CHILD, + .ageTimer = 0.0f }; AddElementToArray(flowers, flower); } return flowers; } + +void UpdateFlower(void* element) { + Flower* f = (Flower*)element; + if (!f) return; + + f->ageTimer += 1; + + if (f->age == CHILD && f->ageTimer >= 3000.0f) { + f->age = TEEN; + f->sprite.sourceRec.x = f->sprite.sourceRec.width; + } + else if (f->age == TEEN && f->ageTimer >= 6000.0f) { + f->age = ADULT; + f->sprite.sourceRec.x = 2.0f * f->sprite.sourceRec.width; + } +} + + void RenderFlower(void* element) { Flower* f = (Flower*)element; @@ -51,4 +71,5 @@ void RenderFlower(void* element) + #endif // FLOWERS_H diff --git a/include/game.h b/include/game.h index 69949cc..e7b3f5b 100644 --- a/include/game.h +++ b/include/game.h @@ -102,6 +102,7 @@ void UpdateGame(GameState *g, View *currentView, bool *running) UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse); UpdateFloor(&g->floor, &g->camera); UpdatePlayer(&g->player); + UpdateArray(g->flowers, UpdateFlower); // UpdateBee(&g->bee1, &g->flowers, &g->hive); } diff --git a/include/gameassets.h b/include/gameassets.h index 1b5bc43..bf31de6 100644 --- a/include/gameassets.h +++ b/include/gameassets.h @@ -21,7 +21,7 @@ const TextureAsset texAssets[TEX_COUNT] = { {"assets/SproutLandsBasic/Characters/character.png", 48.0f, 48.0f, 0.0f}, {"assets/SproutLandsBasic/Characters/BasicCharakterActions.png", 48.0f, 48.0f, 0.0f}, {"assets/SproutLandsBasic/Objects/tools.png", 48.0f, 16.0f, 0.0f}, - {"assets/flower.png", 16.0f, 16.0f, 45.0f}, + {"assets/carrot_and_tomato.png", 32.0f, 32.0f, 0.0f}, {"assets/character_bee.png", 16.0f, 16.0f, 0.0f}, {"assets/grass.png", 16.0f, 16.0f, 0.0f}, {"assets/hive.png", 32.0f, 32.0f, 0.0f},