From 93bb1553be6a02c8c63d411665f1998c3865a9a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Till=20W=C3=BCbbers?= Date: Sun, 16 Mar 2025 21:03:41 +0100 Subject: [PATCH] wip --- src/game/Level.cpp | 65 +++++++++++++------------------- src/game/Level.h | 1 + src/game/mini.def | 19 +++++----- src/game/rendering/Rendering.cpp | 2 +- src/gen/Generated.cpp | 2 - src/gen/Generated.h | 3 +- 6 files changed, 38 insertions(+), 54 deletions(-) diff --git a/src/game/Level.cpp b/src/game/Level.cpp index 610e897..e1f4346 100644 --- a/src/game/Level.cpp +++ b/src/game/Level.cpp @@ -76,6 +76,10 @@ namespace Game needReset |= PuzzleTiles.Setup(storagePtr, needReset); needReset |= UIQuads.Setup(storagePtr, needReset); + UIQuads.IsEnabled = false; + Tests.IsEnabled = false; + Cubes.IsEnabled = false; + Puzzle::Setup(); bx::Error err; @@ -148,14 +152,13 @@ namespace Game { Tests.Get(Tests.New()).Setup(); } - if (PuzzleTiles.Count == 0) + for (int32_t i = 0; i < BX_COUNTOF(Puzzles); ++i) { - for (uint32_t puzI = 0; puzI < BX_COUNTOF(Puzzles); ++puzI) + if (Puzzles[i].Data.ID != UINT16_MAX && !Puzzles[i].IsSetup) { - Puzzles[puzI].Setup(); + Puzzles[i].Setup(); } } - UpdatePlayerInputMode(); } @@ -301,32 +304,11 @@ namespace Game void WorldPuzzle::Setup() { - Data.PlacedCardCount = 16; - for (int32_t i = 0; i < 16; ++i) + auto& level = GetInstance().GameLevel; + for (int32_t i = 0; i < Puzzle::Config::MaxCardsInPuzzle; ++i) { - Data.PlacedCards[i].RefCard = {0}; - Data.PlacedCards[i].Position = {int8_t(i % 4), int8_t(i / 4)}; - } - - for (uint32_t cardI = 0; cardI < Data.PlacedCardCount; ++cardI) - { - const Generated::PlacedPuzzleCard& card = Data.PlacedCards[cardI]; - Level& level = GetInstance().GameLevel; - TileHandles[cardI] = level.PuzzleTiles.New(); - UIPlacedCards[cardI] = level.UIQuads.New(); - - bx::Vec3 Pos = { - WorldPosition.x + card.Position.X * WorldCardSize.x, - WorldPosition.y, - WorldPosition.z + card.Position.Y * WorldCardSize.y, - }; - PuzzleTileEntity& tile = level.PuzzleTiles.Get(TileHandles[cardI]); - tile.EData.Transform.Position = Pos; - tile.EData.MaterialHandle = 0; - - UIQuadEntity& quad = level.UIQuads.Get(UIPlacedCards[cardI]); - quad.EData.MaterialHandle = 0; - quad.EData.ModelHandle = GameRendering::Get().GetModelHandleFromPath("models/plane.glb"); + TileHandles[i] = level.PuzzleTiles.New(); + UIPlacedCards[i] = level.UIQuads.New(); } } @@ -336,18 +318,23 @@ namespace Game Vec3 cameraPos = camTransform.GetPosition() * -1; Level& level = GetInstance().GameLevel; - for (int32_t cardI = 0; cardI < Data.PlacedCardCount; ++cardI) + for (int8_t y = 0; y < Data.WidthTiles / Puzzle::Config::CardSize; ++y) { - Generated::PlacedPuzzleCard& card = Data.PlacedCards[cardI]; - if (!Puzzle::IsValid(card.RefCard)) continue; - const Generated::StaticPuzzleCard& cData = Puzzle::GetCard(card.RefCard); - level.PuzzleTiles.Get(TileHandles[cardI]).EData.ModelHandle = cData.ModelHandle; + for (int8_t x = 0; x < Data.WidthTiles / Puzzle::Config::CardSize; ++x) + { + Generated::PlacedPuzzleCard& card = Data.PlacedCards[y * Puzzle::Config::MaxPuzzleSizeCards + x]; + if (!Puzzle::IsValid(card.RefCard)) + const Generated::StaticPuzzleCard& cData = Puzzle::GetCard(card.RefCard); + auto& tile = level.PuzzleTiles.Get(TileHandles[y * Puzzle::Config::MaxPuzzleSizeCards + x]); + tile.EData.ModelHandle = Puzzle::GetStaticPuzzleData().Cards[card.RefCard.Idx].ModelHandle; + tile.EData.Transform.SetPosition({(float)card.Position.X, (float)card.Position.Y, 0.0f}); - auto& quad = level.UIQuads.Get(UIPlacedCards[cardI]); - Vec3 fw = {0, -1, 0}; - // quad.EData.Transform.SetPosition(cameraPos + Vec3{0, -2, 0}); - quad.EData.Transform.SetPosition({}); - quad.EData.Transform.Rotation = camTransform.Rotation; + auto& quad = level.UIQuads.Get(UIPlacedCards[y * Puzzle::Config::MaxPuzzleSizeCards + x]); + Vec3 fw = {0, -1, 0}; + // quad.EData.Transform.SetPosition(cameraPos + Vec3{0, -2, 0}); + quad.EData.Transform.SetPosition({}); + quad.EData.Transform.Rotation = camTransform.Rotation; + } } } } // namespace Game diff --git a/src/game/Level.h b/src/game/Level.h index e19cf98..fd822a1 100644 --- a/src/game/Level.h +++ b/src/game/Level.h @@ -135,6 +135,7 @@ namespace Game Vec3 WorldPosition; PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle]; UIQuadEntityHandle UIPlacedCards[Puzzle::Config::MaxCardsInPuzzle]; + bool IsSetup = false; void Setup(); void Update(); diff --git a/src/game/mini.def b/src/game/mini.def index 90c7032..b68cab9 100644 --- a/src/game/mini.def +++ b/src/game/mini.def @@ -89,15 +89,14 @@ type PlacedPuzzleCard type PuzzleData { - u16 ID - str PuzzleName Arr(64) - u8 WidthTiles - u8 HeightTiles - u32 AvailableCardCount - PuzzleCardStack AvailableCards Arr(16) - u32 PlacedCardCount - PlacedPuzzleCard PlacedCards Arr(256) + u16 ID + str PuzzleName Arr(64) + u8 WidthTiles + u8 HeightTiles + u32 AvailableCardCount + PuzzleCardStack AvailableCards Arr(16) + PlacedPuzzleCard PlacedCards Arr(256) PuzzleElementType BackgroundTiles Arr(1024) - u32 GoalPositionCount - PuzPos GoalPositions Arr(16) + u32 GoalPositionCount + PuzPos GoalPositions Arr(16) } diff --git a/src/game/rendering/Rendering.cpp b/src/game/rendering/Rendering.cpp index 0e83e05..e7553cf 100644 --- a/src/game/rendering/Rendering.cpp +++ b/src/game/rendering/Rendering.cpp @@ -343,7 +343,7 @@ namespace Game bgfx::Init init; init.type = bgfx::RendererType::Direct3D12; #ifdef _DEBUG - init.debug = true; + // init.debug = true; #endif init.platformData.nwh = shared.Window.Handle; init.platformData.ndt = nullptr; diff --git a/src/gen/Generated.cpp b/src/gen/Generated.cpp index 085952a..a3a1a52 100644 --- a/src/gen/Generated.cpp +++ b/src/gen/Generated.cpp @@ -257,7 +257,6 @@ namespace Generated isOk = Save(&obj[i].HeightTiles, 1, serializer) && isOk; isOk = Save(&obj[i].AvailableCardCount, 1, serializer) && isOk; isOk = Save(obj[i].AvailableCards, 16, serializer) && isOk; - isOk = Save(&obj[i].PlacedCardCount, 1, serializer) && isOk; isOk = Save(obj[i].PlacedCards, 256, serializer) && isOk; isOk = Save(obj[i].BackgroundTiles, 1024, serializer) && isOk; isOk = Save(&obj[i].GoalPositionCount, 1, serializer) && isOk; @@ -276,7 +275,6 @@ namespace Generated isOk = Load(&obj[i].HeightTiles, 1, serializer) && isOk; isOk = Load(&obj[i].AvailableCardCount, 1, serializer) && isOk; isOk = Load(obj[i].AvailableCards, 16, serializer) && isOk; - isOk = Load(&obj[i].PlacedCardCount, 1, serializer) && isOk; isOk = Load(obj[i].PlacedCards, 256, serializer) && isOk; isOk = Load(obj[i].BackgroundTiles, 1024, serializer) && isOk; isOk = Load(&obj[i].GoalPositionCount, 1, serializer) && isOk; diff --git a/src/gen/Generated.h b/src/gen/Generated.h index 099dcc8..4d118da 100644 --- a/src/gen/Generated.h +++ b/src/gen/Generated.h @@ -131,14 +131,13 @@ namespace Generated }; struct PuzzleData { - static constexpr uint32_t Hash = 2775382112; + static constexpr uint32_t Hash = 657000000; uint16_t ID = {}; char PuzzleName[64] = {}; uint8_t WidthTiles = {}; uint8_t HeightTiles = {}; uint32_t AvailableCardCount = {}; PuzzleCardStack AvailableCards[16] = {}; - uint32_t PlacedCardCount = {}; PlacedPuzzleCard PlacedCards[256] = {}; PuzzleElementType::Enum BackgroundTiles[1024] = {}; uint32_t GoalPositionCount = {};