51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "../engine/Shared.h"
|
|
#include "Puzzle.h"
|
|
#include "UI.h"
|
|
#include "rendering/Rendering.h"
|
|
#include <bgfx/bgfx.h>
|
|
#include <cstdint>
|
|
namespace Game
|
|
{
|
|
|
|
struct WorldPuzzle
|
|
{
|
|
static constexpr Gen::Vec2 WorldCardSize{10.0f, 10.0f};
|
|
Gen::PuzzleData Data;
|
|
Gen::Vec3 WorldPosition;
|
|
PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle];
|
|
PuzzleTileCoverHandle CoverHandles[Puzzle::Config::MaxCardsInPuzzle * Puzzle::Config::MaxCoversInTile];
|
|
bool IsSetup = false;
|
|
bool IsActive = false;
|
|
|
|
void Setup();
|
|
void Update();
|
|
void Reset(); // TODO!
|
|
};
|
|
|
|
class Level
|
|
{
|
|
public:
|
|
EntityManager<Cube, CubeHandle, 1024> Cubes;
|
|
EntityManager<TestEntity, TestEntityHandle, 32> Tests;
|
|
EntityManager<PuzzleTileEntity, PuzzleTileEntityHandle, Puzzle::Config::MaxTilesTotal> PuzzleTiles;
|
|
EntityManager<PuzzleTileCover, PuzzleTileCoverHandle, Puzzle::Config::MaxCoversTotal> PuzzleTileCovers;
|
|
UIQuadEntityManager UIQuads;
|
|
EntityManager<LevelEntity, LevelEntityHandle, 64> LevelEntities;
|
|
|
|
CubeHandle PlayerOutsideViewCube;
|
|
UIQuadEntityHandle TabletHandle;
|
|
|
|
public:
|
|
Gen::StaticPuzzleData PuzzleData;
|
|
WorldPuzzle Puzzles[Puzzle::Config::MaxVisiblePuzzles];
|
|
WorldPuzzleUI PuzzleUI;
|
|
|
|
public:
|
|
void Setup(GameData& data);
|
|
void Update();
|
|
void Render(uint16_t ViewID, const Model* models, const Material* materials, const Texture* textures);
|
|
};
|
|
} // namespace Game
|