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