Zen 0.3.0
Loading...
Searching...
No Matches
GameLayer.h
1#pragma once
2#include "Player.h"
3#include "editor/src/Obstacle.h"
4#include "editor/src/QuadBuilder.h"
5#include <memory>
6#include <particles/ZEN_ParticleSystem.h>
7#include <time/ZEN_DeltaTime.h>
8#include <zen/camera/ZEN_Camera.h>
9#include <zen/camera/ZEN_CameraController.h>
10#include <zen/events/ZEN_Event.h>
11#include <zen/inputs/ZEN_Input.h>
12#include <zen/layer/ZEN_Layer.h>
13#include <zen/renderer/ZEN_Buffer.h>
14#include <zen/renderer/ZEN_RenderCommand.h>
15#include <zen/renderer/ZEN_Renderer.h>
16#include <zen/renderer/ZEN_Shader.h>
17#include <zen/renderer/ZEN_VertexArray.h>
18
19using namespace Zen;
20
21enum class GameState { Playing, GameOver, Paused };
22
23class GameLayer final : public Layer {
24public:
25 GameLayer() : Layer(49), m_camera(CameraType::Orthographic), m_cameraController(m_camera) {}
26
27 void onAttach() override;
28 void onUpdate(DeltaTime deltaTime) override;
29 bool onEvent(const ZenEvent &event) override;
30 void onGUIRender() override;
31
32private:
33 void drawPlayer();
34 void drawGround();
35 void emitJumpBurst();
36 void emitCollisionEffect();
37 void drawObstacles();
38 void drawUI();
39 void updateGame(DeltaTime deltaTime);
40 void updateGamePaused(DeltaTime deltaTime);
41 void updateGameOver(DeltaTime deltaTime);
42 void spawnObstacle();
43 void checkCollisions();
44 void restartGame();
45
46 Camera m_camera;
47 CameraController m_cameraController;
48 std::unique_ptr<ParticleSystem> m_particleSystem;
49
50 Player m_player;
51 std::vector<Obstacle> m_obstacles;
52
53 std::shared_ptr<Shader> m_shader;
54 QuadBuilder m_quadBuilder;
55
56 bool m_playerEmitTrail = true;
57 bool m_obstacleEmitTrail = true;
58 bool m_emitJumpBurst = true;
59
60 glm::vec2 m_groundSize = {30.0f, (5.625f * 2)};
61 glm::vec2 m_groundPos = {0, -5.625f};
62 glm::vec4 m_groundColour = {0.2f, 0.2f, 0.18f, 1.0f};
63
64 GameState m_gameState = GameState::Playing;
65 float m_score = 0.0f;
66 float m_highScore = 0.0f;
67 float m_gameSpeed = 1.0f;
68
69 float m_spawnTimer = 0.0f;
70 float m_spawnInterval = 2.0f;
71 float m_minSpawnInterval = 0.8f;
72 float m_speedIncreaseRate = 0.05f;
73
74 int m_nextObstacleIndex = 0;
75
76 ObstacleType getRandomObstacleType();
77};
Definition Player.h:6