Upercase function naming, renamed shader to postfx shader, added assets and texture structs and arrays, rewrote texturehandling with arrays for better encapsulation

This commit is contained in:
huaqo-games
2025-03-18 10:32:49 +01:00
parent 94597e2c0a
commit 1ee2deb190
+52 -34
View File
@@ -3,16 +3,25 @@
#include "../engine/object.h"
#include "../engine/camera.h"
#include "../engine/input.h"
#include "../engine/shader.h"
#include "../engine/postfx.h"
#include "../engine/musicmanager.h"
#include "../engine/asset.h"
#include "floor.h"
#include "player.h"
#include "bee.h"
#include "hive.h"
#include "flowers.h"
typedef enum {
FLOWER,
BEE,
GRASS,
HIVE,
TEX_COUNT
} TextureID;
typedef struct {
VignetteShader vignetteShader;
PostProcessing postFX;
MyMusic ambient;
RenderTexture2D target;
Texture2D flowerTexture, beeTexture, floorTexture, hiveTexture;
@@ -23,69 +32,78 @@ typedef struct {
Bee bee1;
Camera2D camera;
Mouse mouse;
TextureAsset textureAssets[TEX_COUNT];
Texture2D textures[TEX_COUNT];
} GameState;
void initGame(GameState* g){
void InitGame(GameState* g){
InitAudioDevice();
g->vignetteShader = CreateShader("shaders/vignette.fs", 0.3f);
g->postFX = CreatePostFX("shaders/postfx.fs", 0.3f);
g->ambient = CreateMusic("assets/beez.mp3");
g->textureAssets[FLOWER] = (TextureAsset){"assets/flower.png", 16.0f, 16.0f, 45.0f};
g->textureAssets[BEE] = (TextureAsset){"assets/character_bee.png", 16.0f, 16.0f, 0.0f};
g->textureAssets[GRASS] = (TextureAsset){"assets/grass.png", 16.0f, 16.0f, 0.0f};
g->textureAssets[HIVE] = (TextureAsset){"assets/hive.png", 32.0f, 32.0f, 0.0f};
g->target = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
g->flowerTexture = LoadTexture("assets/flower.png");
g->beeTexture = LoadTexture("assets/character_bee.png");
g->floorTexture = LoadTexture("assets/grass.png");
g->hiveTexture = LoadTexture("assets/hive.png");
g->floor = CreateFloor(g->floorTexture, 16.0f);
g->flowers = CreateFlowers(g->flowerTexture, 16.0f, 45.0f, 50.0f);
g->hive = CreateHive(g->hiveTexture, 32.0f);
g->player = CreatePlayer(g->beeTexture, 16.0f, 4, 10, g->hive.position, 50.0f);
g->bee1 = CreateBee(g->beeTexture, 16.0f, 4, 10, g->hive.position, 10.0f, &g->flowers, &g->hive);
g->textures[FLOWER] = LoadTexture(g->textureAssets[FLOWER].path);
g->textures[BEE] = LoadTexture(g->textureAssets[BEE].path);
g->textures[GRASS] = LoadTexture(g->textureAssets[GRASS].path);
g->textures[HIVE] = LoadTexture(g->textureAssets[HIVE].path);
g->flowers = CreateFlowers(g->textures[FLOWER], g->textureAssets[FLOWER].frameWidth, g->textureAssets[FLOWER].rotation, 50.0f);
g->player = CreatePlayer(g->textures[BEE], g->textureAssets[BEE].frameWidth, 4, 10, g->hive.position, 50.0f);
g->floor = CreateFloor(g->textures[GRASS], g->textureAssets[GRASS].frameWidth);
g->hive = CreateHive(g->textures[HIVE], g->textureAssets[HIVE].frameWidth);
g->bee1 = CreateBee(g->textures[BEE], g->textureAssets[BEE].frameWidth, 4, 10, g->hive.position, 10.0f, &g->flowers, &g->hive);
g->camera = CreateCamera(GetScreenWidth(), GetScreenHeight(), g->player.physics.position, 10.0f);
g->mouse = CreateMouse(0.10f, 5.0f, 10.0f);
g->target = LoadRenderTexture(GetScreenWidth(), GetScreenHeight());
}
void updateGame(GameState* g){
UpdateShader(&g->vignetteShader);
void UpdateGame(GameState* g){
UpdatePostFX(&g->postFX);
UpdateMusic(&g->ambient);
UpdateMouse(&g->mouse, &g->camera);
UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse);
UpdateFloor(&g->floor, &g->camera);
UpdatePlayer(&g->player);
UpdateBee(&g->bee1, &g->flowers, g->hive);
UpdateBee(&g->bee1, &g->flowers, &g->hive);
}
void renderGame(GameState* g){
void RenderComponents(GameState* g){
RenderFloor(&g->floor);
RenderSprite(&g->hive.sprite);
RenderObjectArray(&g->flowers);
RenderSprite(&g->bee1.sprite);
RenderSprite(&g->player.sprite);
}
void RenderGame(GameState* g){
BeginTextureMode(g->target);
ClearBackground(BLACK);
BeginMode2D(g->camera);
RenderFloor(&g->floor);
RenderSprite(&g->hive.sprite);
RenderObjectArray(&g->flowers);
RenderSprite(&g->bee1.sprite);
RenderSprite(&g->player.sprite);
RenderComponents(g);
EndMode2D();
EndTextureMode();
BeginDrawing();
ClearBackground(BLACK);
BeginShaderMode(g->vignetteShader.shader);
DrawTextureRec(g->target.texture, (Rectangle){ 0, 0, g->target.texture.width, -g->target.texture.height }, (Vector2){ 0, 0 }, WHITE);
EndShaderMode();
RenderPostFX(&g->postFX, &g->target);
DrawFPS(10, 10);
EndDrawing();
}
void cleanupGame(GameState* g){
UnloadVignetteShader(&g->vignetteShader);
void CleanupGame(GameState* g){
UnloadPostFX(&g->postFX);
UnloadRenderTexture(g->target);
UnloadTexture(g->floorTexture);
UnloadTexture(g->hiveTexture);
UnloadTexture(g->flowerTexture);
UnloadTexture(g->beeTexture);
for (int i = 0; i < TEX_COUNT; i++){
if (g->textures[i].id > 0) { UnloadTexture(g->textures[i]); }
}
UnloadMusicStream(g->ambient.music);
free(g->flowers.data);
CloseAudioDevice();