Files
Destrum/lightkeeper/include/Lightkeeper.h
T

56 lines
1.4 KiB
C++

#ifndef LIGHTKEEPER_H
#define LIGHTKEEPER_H
#include <random>
#include <vector>
#include <destrum/App.h>
#include <destrum/Graphics/RenderResources.h>
#include "destrum/Graphics/Resources/Cubemap.h"
#include "destrum/ObjectModel/GameObject.h"
class LightKeeper final : public App {
public:
LightKeeper();
virtual ~LightKeeper();
void customInit() override;
void customUpdate(float dt) override;
void customDraw() override;
void customCleanup() override;
void customFixedUpdate(float dt) override;
void onWindowResize(int newWidth, int newHeight) override;
private:
struct FallingStar {
GameObject* object{};
float speed{};
};
void resetGame();
void respawnStar(FallingStar& star, float minimumHeight);
void drawHud();
Camera camera{glm::vec3(0.f, 0.f, -5.f), glm::vec3(0, 1, 0)};
MeshID sphereMesh{NULL_MESH_ID};
MaterialID playerMaterial{NULL_MATERIAL_ID};
MaterialID starMaterial{NULL_MATERIAL_ID};
std::unique_ptr<CubeMap> skyboxCubemap;
GameObject* player{nullptr};
std::vector<FallingStar> stars;
std::mt19937 randomEngine{0xD35A1234u};
std::uniform_real_distribution<float> spawnX{-5.5f, 5.5f};
std::uniform_real_distribution<float> spawnHeight{0.0f, 2.0f};
std::uniform_real_distribution<float> spawnSpeed{2.8f, 4.2f};
int score{0};
int misses{0};
bool gameOver{false};
};
#endif //LIGHTKEEPER_H