From 23f16988b3ad8de7eb08df7a3138a3b00adf0aac Mon Sep 17 00:00:00 2001 From: beyer-rebecca Date: Sat, 12 Apr 2025 21:52:50 +0200 Subject: [PATCH] feat: flower plant on player location --- include/flowers.h | 36 ++++++++++++++++++++++++------------ include/game.h | 4 ++-- include/inventar.h | 2 +- include/player.h | 11 +++++++---- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/include/flowers.h b/include/flowers.h index 8202571..1446db5 100644 --- a/include/flowers.h +++ b/include/flowers.h @@ -16,6 +16,8 @@ typedef struct { float ageTimer; } Flower; +Flower DEFAULT_FLOWER; + Array* CreateFlowers(Texture2D texture, float frameWidth, float rotation, float fieldSize) { Array* flowers = CreateArray(10); @@ -25,25 +27,35 @@ Array* CreateFlowers(Texture2D texture, float frameWidth, float rotation, float exit(1); } + DEFAULT_FLOWER = (Flower){ + .sprite = { + .texture = texture, + .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth}, + .destRec = {(float)GetRandomValue(-fieldSize,fieldSize), (float)GetRandomValue(-fieldSize,fieldSize), frameWidth, frameWidth}, + .origin = {frameWidth / 2, frameWidth / 2}, + .rotation = rotation, + .color = WHITE, + }, + .age = CHILD, + .ageTimer = 0.0f + }; + for (int i = 0; i < 10; i++) { Flower* flower = malloc(sizeof(Flower)); - *flower = (Flower){ - .sprite = { - .texture = texture, - .sourceRec = {0.0f, 0.0f, frameWidth, frameWidth}, - .destRec = {(float)GetRandomValue(-fieldSize,fieldSize), (float)GetRandomValue(-fieldSize,fieldSize), frameWidth, frameWidth}, - .origin = {frameWidth / 2, frameWidth / 2}, - .rotation = rotation, - .color = WHITE, - }, - .age = CHILD, - .ageTimer = 0.0f - }; + *flower = DEFAULT_FLOWER; + flower->sprite.destRec = (Rectangle){(float)GetRandomValue(-fieldSize,fieldSize), (float)GetRandomValue(-fieldSize,fieldSize), frameWidth, frameWidth}; AddElementToArray(flowers, flower); } return flowers; } +void AddFlower(Array* flowers, Rectangle rec){ + Flower* flower = malloc(sizeof(Flower)); + *flower = DEFAULT_FLOWER; + flower->sprite.destRec = rec; + AddElementToArray(flowers, flower); +} + void UpdateFlower(void* element) { Flower* f = (Flower*)element; diff --git a/include/game.h b/include/game.h index e7b3f5b..05bbb73 100644 --- a/include/game.h +++ b/include/game.h @@ -101,7 +101,7 @@ void UpdateGame(GameState *g, View *currentView, bool *running) UpdateMouse(&g->mouse, &g->camera); UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse); UpdateFloor(&g->floor, &g->camera); - UpdatePlayer(&g->player); + UpdatePlayer(&g->player, g->flowers); UpdateArray(g->flowers, UpdateFlower); // UpdateBee(&g->bee1, &g->flowers, &g->hive); } @@ -130,7 +130,7 @@ void RenderGame(GameState *g, const State *appState, Flags *flags) { RenderPostFX(&g->postFX[i], &g->target); } - DrawText(TextFormat("%d", g->player.inventar.seedCount), 10, 10, 50, WHITE); + DrawText(TextFormat("Flower Seeds: %d", g->player.inventar.flowerSeedCount), 10, 10, 50, WHITE); if (flags->showFPS) { diff --git a/include/inventar.h b/include/inventar.h index f672b7c..e271dca 100644 --- a/include/inventar.h +++ b/include/inventar.h @@ -3,7 +3,7 @@ typedef struct{ - int seedCount; + int flowerSeedCount; } Inventar; #endif // INVENTAR_H diff --git a/include/player.h b/include/player.h index 0d48220..7bb8912 100644 --- a/include/player.h +++ b/include/player.h @@ -5,7 +5,9 @@ #include #include #include +#include +#include "flowers.h" #include "inventar.h" typedef enum @@ -70,7 +72,7 @@ Player CreatePlayer(PlayerAnimationState animState, SelectedTool selectedTool, T .color = WHITE}, .animation = {.state = animState, .currentFrame = 0, .maxFrame = maxFrame, .framesCounter = 0, .framesSpeed = framesSpeed, .animTimer = 0.0f}, .physics = {.position = startPosition, .direction = (Vector2){0.0f, 0.0f}, .speed = speed}, - .inventar = {.seedCount = 6}}; + .inventar = {.flowerSeedCount = 6}}; } void UpdatePlayerAnimationState(int *state, SelectedTool *selectedTool, Vector2 *dir) @@ -129,11 +131,12 @@ void UpdatePlayerAnimationState(int *state, SelectedTool *selectedTool, Vector2 } } -void UpdatePlayer(Player *player) +void UpdatePlayer(Player *player, Array* flowers) { - if (IsKeyPressed(KEY_SPACE) && player->inventar.seedCount > 0) + if (IsKeyPressed(KEY_SPACE) && player->inventar.flowerSeedCount > 0) { - player->inventar.seedCount--; + AddFlower(flowers, player->sprite.destRec); + player->inventar.flowerSeedCount--; } Vector2 dir = GetDirectionVector(); UpdatePlayerAnimationState(&player->animation.state, &player->selectedTool, &dir);