aboutsummaryrefslogtreecommitdiff
path: root/src
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
parentf8e133343b9c07dbb66ea313fd982339fbd72137 (diff)
I over use render textures lol
Diffstat (limited to 'src')
-rw-r--r--src/game.c2
-rw-r--r--src/gameScreen.c48
-rw-r--r--src/gameScreen.h5
-rw-r--r--src/settings.c5
-rw-r--r--src/settings.h5
5 files changed, 53 insertions, 12 deletions
diff --git a/src/game.c b/src/game.c
index 4f36d6a..7973807 100644
--- a/src/game.c
+++ b/src/game.c
@@ -21,7 +21,7 @@ void initGame(Game * game) {
initCameras(game, game->cameras);
// Game screen.
- initGameScreen(&game->gameScreen);
+ initGameScreen(game, &game->gameScreen);
// World.
initWorld(&game->world);
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) {
diff --git a/src/gameScreen.h b/src/gameScreen.h
index e4f8d20..aa690fa 100644
--- a/src/gameScreen.h
+++ b/src/gameScreen.h
@@ -22,9 +22,12 @@ typedef struct GameScreen {
bool levelComplete;
double timeAtLevelComplete;
int lastLevel;
+
+ RenderTexture worldRender;
+ bool usingWorldRenderTexture;
} GameScreen;
-void initGameScreen(GameScreen * gameScreen);
+void initGameScreen(Game * game, GameScreen * gameScreen);
void freeGameScreen(GameScreen * gameScreen);
void updateGameScreen(Game * game);
diff --git a/src/settings.c b/src/settings.c
index b5614f1..3e3a178 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -13,7 +13,10 @@ void initSettings(Settings * settings) {
.speedStick = 3,
.joystickSensitivity = 0.5,
.fps = 0,
- .drawFps = true
+ .drawFps = true,
+ .renderWidth = 480,
+ .renderHeight = 270,
+ .useWorldRenderTexture = false
};
}
diff --git a/src/settings.h b/src/settings.h
index 7d97bd2..119f4f4 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -29,6 +29,11 @@ typedef struct Settings {
// Fps shit.
int fps;
bool drawFps;
+
+ // World render shit.
+ int renderWidth;
+ int renderHeight;
+ bool useWorldRenderTexture;
} Settings;
void initSettings(Settings * settings);