feat: add camera singleton
This commit is contained in:
+12
-6
@@ -1,3 +1,4 @@
|
|||||||
|
#include "engine.h"
|
||||||
#include "appTypes.h"
|
#include "appTypes.h"
|
||||||
|
|
||||||
const ShaderAsset shaderAssets[SHADER_COUNT] = {
|
const ShaderAsset shaderAssets[SHADER_COUNT] = {
|
||||||
@@ -11,7 +12,9 @@ const SoundtrackAsset soundtrackAssets[SOUNDTRACK_COUNT] = {
|
|||||||
|
|
||||||
void InitGame(App *app)
|
void InitGame(App *app)
|
||||||
{
|
{
|
||||||
GameState *g = &app->game;
|
|
||||||
|
SetRandomSeed(1234);
|
||||||
|
GameState *g = &app->game;
|
||||||
g->assets = (Assets){
|
g->assets = (Assets){
|
||||||
.shaderAssets = shaderAssets,
|
.shaderAssets = shaderAssets,
|
||||||
.soundtrackAssets = soundtrackAssets
|
.soundtrackAssets = soundtrackAssets
|
||||||
@@ -27,12 +30,14 @@ void InitGame(App *app)
|
|||||||
g->soundtracks[i] = LoadSoundtrack(g->assets.soundtrackAssets[i].path);
|
g->soundtracks[i] = LoadSoundtrack(g->assets.soundtrackAssets[i].path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
g->target = LoadRenderTexture(app->window.width, app->window.height);
|
g->target = LoadRenderTexture(app->window.width, app->window.height);
|
||||||
|
|
||||||
g->player = CreatePlayer();
|
g->player = CreatePlayer();
|
||||||
|
CreateCamera(g->player.physics.position, 10.0f);
|
||||||
g->birds = CreateBirds();
|
g->birds = CreateBirds();
|
||||||
g->islands = CreateIslands();
|
g->islands = CreateIslands();
|
||||||
g->floor = CreateFloor();
|
g->floor = CreateFloor();
|
||||||
g->camera = CreateCamera(g->player.physics.position, 10.0f);
|
|
||||||
|
|
||||||
Texture2D mouseTexture = LoadTexture("assets/mouse.png");
|
Texture2D mouseTexture = LoadTexture("assets/mouse.png");
|
||||||
g->mouse = CreateMouse(0.10f, 5.0f, 10.0f, &mouseTexture);
|
g->mouse = CreateMouse(0.10f, 5.0f, 10.0f, &mouseTexture);
|
||||||
@@ -66,9 +71,9 @@ void UpdateGame(App *app)
|
|||||||
UpdateSoundtrack(&g->soundtracks[i], app->flags.soundtrackOn);
|
UpdateSoundtrack(&g->soundtracks[i], app->flags.soundtrackOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateMouse(&g->mouse, &g->camera);
|
UpdateMouse(&g->mouse);
|
||||||
UpdateCamera2D(&g->camera, &g->player.physics.position, &g->mouse);
|
UpdateCamera2D(&g->player.physics.position, &g->mouse);
|
||||||
UpdateFloor(&g->floor, &g->camera);
|
UpdateFloor(&g->floor);
|
||||||
UpdatePlayer(&g->player);
|
UpdatePlayer(&g->player);
|
||||||
UpdateBirds(&g->birds);
|
UpdateBirds(&g->birds);
|
||||||
UpdateIslands(&g->islands);
|
UpdateIslands(&g->islands);
|
||||||
@@ -89,7 +94,8 @@ void RenderGame(App *app)
|
|||||||
|
|
||||||
BeginTextureMode(g->target);
|
BeginTextureMode(g->target);
|
||||||
ClearBackground(BLACK);
|
ClearBackground(BLACK);
|
||||||
BeginMode2D(g->camera);
|
Camera2D *camera = GetCamera();
|
||||||
|
BeginMode2D(*camera);
|
||||||
RenderComponents(app);
|
RenderComponents(app);
|
||||||
EndMode2D();
|
EndMode2D();
|
||||||
DrawTextureRec
|
DrawTextureRec
|
||||||
|
|||||||
+3
-1
@@ -1,3 +1,4 @@
|
|||||||
|
#include "engine.h"
|
||||||
#include "appTypes.h"
|
#include "appTypes.h"
|
||||||
|
|
||||||
Floor CreateFloor(void)
|
Floor CreateFloor(void)
|
||||||
@@ -54,8 +55,9 @@ Floor CreateFloor(void)
|
|||||||
return floor;
|
return floor;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateFloor(Floor *floor, const Camera2D *camera)
|
void UpdateFloor(Floor *floor)
|
||||||
{
|
{
|
||||||
|
Camera2D *camera = GetCamera();
|
||||||
floor->bounds.x = (int)((camera->target.x - (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) - 1;
|
floor->bounds.x = (int)((camera->target.x - (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) - 1;
|
||||||
floor->bounds.width = (int)((camera->target.x + (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) + 1;
|
floor->bounds.width = (int)((camera->target.x + (GetScreenWidth() / 2.0f / camera->zoom)) / floor->sprite.frameSize.x) + 1;
|
||||||
floor->bounds.y = (int)((camera->target.y - (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) - 1;
|
floor->bounds.y = (int)((camera->target.y - (GetScreenHeight() / 2.0f / camera->zoom)) / floor->sprite.frameSize.y) - 1;
|
||||||
|
|||||||
+2
-2
@@ -15,8 +15,8 @@ void UpdateMouseScreen(Mouse *mouse){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateMouse(Mouse *mouse, Camera2D *camera) {
|
void UpdateMouse(Mouse *mouse) {
|
||||||
|
Camera2D* camera = GetCamera();
|
||||||
Vector2 pos = GetMousePosition();
|
Vector2 pos = GetMousePosition();
|
||||||
mouse->screenPosition = pos;
|
mouse->screenPosition = pos;
|
||||||
mouse->worldPosition = GetScreenToWorld2D(pos, *camera);
|
mouse->worldPosition = GetScreenToWorld2D(pos, *camera);
|
||||||
|
|||||||
Reference in New Issue
Block a user