#pragma once #include "../engine/Shared.h" #include "Puzzle.h" #include "UI.h" #include "rendering/Rendering.h" #include #include 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 Cubes; EntityManager Tests; EntityManager PuzzleTiles; EntityManager PuzzleTileCovers; UIQuadEntityManager UIQuads; EntityManager 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