aboutsummaryrefslogtreecommitdiff
path: root/src/gameScreen.c
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-10-29 21:41:30 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-10-29 21:41:30 -0600
commit0dd152a45305b54c6881eed1ff7d8d814cb92e59 (patch)
tree3118d279cd4246fb73aab97bd84c38eb84092218 /src/gameScreen.c
parentf8e133343b9c07dbb66ea313fd982339fbd72137 (diff)
I over use render textures lol
Diffstat (limited to 'src/gameScreen.c')
-rw-r--r--src/gameScreen.c48
1 files changed, 39 insertions, 9 deletions
diff --git a/src/gameScreen.c b/src/gameScreen.c
index 61865bd..700b8cd 100644
--- a/src/gameScreen.c
+++ b/src/gameScreen.c
@@ -27,13 +27,23 @@ void initGameScreenGui(GameScreen * gameScreen) {
gameScreen->levelComplete = false;
}
-void initGameScreen(GameScreen * gameScreen) {
+void initGameScreen(Game * game, GameScreen * gameScreen) {
initGameScreenGui(gameScreen);
+
+ if (game->settings.useWorldRenderTexture) {
+ gameScreen->worldRender = LoadRenderTexture(game->settings.renderWidth, game->settings.renderHeight);
+ gameScreen->usingWorldRenderTexture = true;
+ } else {
+ gameScreen->usingWorldRenderTexture = false;
+ }
}
void freeGameScreen(GameScreen * gameScreen) {
closeGyroscope(&gameScreen->gyroscope);
closeRadar(&gameScreen->radar);
+
+ if (gameScreen->usingWorldRenderTexture)
+ UnloadRenderTexture(gameScreen->worldRender);
}
void drawCrossHair(float size, float thick, Color color) {
@@ -219,6 +229,17 @@ void gameScreenHandleLevels(Game * game, GameScreen * gameScreen) {
}
}
+void renderWorldGameScreen(Game * game, GameScreen * gameScreen) {
+ BeginMode3D(game->cameras[gameScreen->mainCamera]);
+
+ DrawGrid(50, 25.0);
+
+ // Draw world.
+ drawWorld(&game->world, game);
+
+ EndMode3D();
+}
+
void updateGameScreen(Game * game) {
GameScreen * gameScreen = &game->gameScreen;
@@ -242,14 +263,23 @@ void updateGameScreen(Game * game) {
runCameraUpdate(game, game->cameras, gameScreen->mainCamera);
// Draw.
- BeginMode3D(game->cameras[gameScreen->mainCamera]);
-
- DrawGrid(50, 25.0);
-
- // Draw world.
- drawWorld(&game->world, game);
-
- EndMode3D();
+ if (gameScreen->usingWorldRenderTexture) {
+ BeginTextureMode(gameScreen->worldRender);
+ ClearBackground(BLACK);
+ renderWorldGameScreen(game, gameScreen);
+ EndTextureMode();
+
+ DrawTexturePro(
+ gameScreen->worldRender.texture,
+ (Rectangle){0.0, 0.0, game->settings.renderWidth, -game->settings.renderHeight},
+ (Rectangle){0.0, 0.0, GetScreenWidth(), GetScreenHeight()},
+ (Vector2){0.0, 0.0},
+ 0.0,
+ WHITE
+ );
+ } else {
+ renderWorldGameScreen(game, gameScreen);
+ }
}
void openGameScreen(Game * game) {