This commit is contained in:
Till Wübbers
2025-03-16 21:03:41 +01:00
parent ebf29b058a
commit 93bb1553be
6 changed files with 38 additions and 54 deletions

View File

@@ -76,6 +76,10 @@ namespace Game
needReset |= PuzzleTiles.Setup(storagePtr, needReset); needReset |= PuzzleTiles.Setup(storagePtr, needReset);
needReset |= UIQuads.Setup(storagePtr, needReset); needReset |= UIQuads.Setup(storagePtr, needReset);
UIQuads.IsEnabled = false;
Tests.IsEnabled = false;
Cubes.IsEnabled = false;
Puzzle::Setup(); Puzzle::Setup();
bx::Error err; bx::Error err;
@@ -148,14 +152,13 @@ namespace Game
{ {
Tests.Get(Tests.New()).Setup(); 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(); UpdatePlayerInputMode();
} }
@@ -301,32 +304,11 @@ namespace Game
void WorldPuzzle::Setup() void WorldPuzzle::Setup()
{ {
Data.PlacedCardCount = 16; auto& level = GetInstance().GameLevel;
for (int32_t i = 0; i < 16; ++i) for (int32_t i = 0; i < Puzzle::Config::MaxCardsInPuzzle; ++i)
{ {
Data.PlacedCards[i].RefCard = {0}; TileHandles[i] = level.PuzzleTiles.New();
Data.PlacedCards[i].Position = {int8_t(i % 4), int8_t(i / 4)}; UIPlacedCards[i] = level.UIQuads.New();
}
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");
} }
} }
@@ -336,18 +318,23 @@ namespace Game
Vec3 cameraPos = camTransform.GetPosition() * -1; Vec3 cameraPos = camTransform.GetPosition() * -1;
Level& level = GetInstance().GameLevel; 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]; for (int8_t x = 0; x < Data.WidthTiles / Puzzle::Config::CardSize; ++x)
if (!Puzzle::IsValid(card.RefCard)) continue; {
const Generated::StaticPuzzleCard& cData = Puzzle::GetCard(card.RefCard); Generated::PlacedPuzzleCard& card = Data.PlacedCards[y * Puzzle::Config::MaxPuzzleSizeCards + x];
level.PuzzleTiles.Get(TileHandles[cardI]).EData.ModelHandle = cData.ModelHandle; 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]); auto& quad = level.UIQuads.Get(UIPlacedCards[y * Puzzle::Config::MaxPuzzleSizeCards + x]);
Vec3 fw = {0, -1, 0}; Vec3 fw = {0, -1, 0};
// quad.EData.Transform.SetPosition(cameraPos + Vec3{0, -2, 0}); // quad.EData.Transform.SetPosition(cameraPos + Vec3{0, -2, 0});
quad.EData.Transform.SetPosition({}); quad.EData.Transform.SetPosition({});
quad.EData.Transform.Rotation = camTransform.Rotation; quad.EData.Transform.Rotation = camTransform.Rotation;
}
} }
} }
} // namespace Game } // namespace Game

View File

@@ -135,6 +135,7 @@ namespace Game
Vec3 WorldPosition; Vec3 WorldPosition;
PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle]; PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle];
UIQuadEntityHandle UIPlacedCards[Puzzle::Config::MaxCardsInPuzzle]; UIQuadEntityHandle UIPlacedCards[Puzzle::Config::MaxCardsInPuzzle];
bool IsSetup = false;
void Setup(); void Setup();
void Update(); void Update();

View File

@@ -89,15 +89,14 @@ type PlacedPuzzleCard
type PuzzleData type PuzzleData
{ {
u16 ID u16 ID
str PuzzleName Arr(64) str PuzzleName Arr(64)
u8 WidthTiles u8 WidthTiles
u8 HeightTiles u8 HeightTiles
u32 AvailableCardCount u32 AvailableCardCount
PuzzleCardStack AvailableCards Arr(16) PuzzleCardStack AvailableCards Arr(16)
u32 PlacedCardCount PlacedPuzzleCard PlacedCards Arr(256)
PlacedPuzzleCard PlacedCards Arr(256)
PuzzleElementType BackgroundTiles Arr(1024) PuzzleElementType BackgroundTiles Arr(1024)
u32 GoalPositionCount u32 GoalPositionCount
PuzPos GoalPositions Arr(16) PuzPos GoalPositions Arr(16)
} }

View File

@@ -343,7 +343,7 @@ namespace Game
bgfx::Init init; bgfx::Init init;
init.type = bgfx::RendererType::Direct3D12; init.type = bgfx::RendererType::Direct3D12;
#ifdef _DEBUG #ifdef _DEBUG
init.debug = true; // init.debug = true;
#endif #endif
init.platformData.nwh = shared.Window.Handle; init.platformData.nwh = shared.Window.Handle;
init.platformData.ndt = nullptr; init.platformData.ndt = nullptr;

View File

@@ -257,7 +257,6 @@ namespace Generated
isOk = Save(&obj[i].HeightTiles, 1, serializer) && isOk; isOk = Save(&obj[i].HeightTiles, 1, serializer) && isOk;
isOk = Save(&obj[i].AvailableCardCount, 1, serializer) && isOk; isOk = Save(&obj[i].AvailableCardCount, 1, serializer) && isOk;
isOk = Save(obj[i].AvailableCards, 16, 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].PlacedCards, 256, serializer) && isOk;
isOk = Save(obj[i].BackgroundTiles, 1024, serializer) && isOk; isOk = Save(obj[i].BackgroundTiles, 1024, serializer) && isOk;
isOk = Save(&obj[i].GoalPositionCount, 1, 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].HeightTiles, 1, serializer) && isOk;
isOk = Load(&obj[i].AvailableCardCount, 1, serializer) && isOk; isOk = Load(&obj[i].AvailableCardCount, 1, serializer) && isOk;
isOk = Load(obj[i].AvailableCards, 16, 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].PlacedCards, 256, serializer) && isOk;
isOk = Load(obj[i].BackgroundTiles, 1024, serializer) && isOk; isOk = Load(obj[i].BackgroundTiles, 1024, serializer) && isOk;
isOk = Load(&obj[i].GoalPositionCount, 1, serializer) && isOk; isOk = Load(&obj[i].GoalPositionCount, 1, serializer) && isOk;

View File

@@ -131,14 +131,13 @@ namespace Generated
}; };
struct PuzzleData struct PuzzleData
{ {
static constexpr uint32_t Hash = 2775382112; static constexpr uint32_t Hash = 657000000;
uint16_t ID = {}; uint16_t ID = {};
char PuzzleName[64] = {}; char PuzzleName[64] = {};
uint8_t WidthTiles = {}; uint8_t WidthTiles = {};
uint8_t HeightTiles = {}; uint8_t HeightTiles = {};
uint32_t AvailableCardCount = {}; uint32_t AvailableCardCount = {};
PuzzleCardStack AvailableCards[16] = {}; PuzzleCardStack AvailableCards[16] = {};
uint32_t PlacedCardCount = {};
PlacedPuzzleCard PlacedCards[256] = {}; PlacedPuzzleCard PlacedCards[256] = {};
PuzzleElementType::Enum BackgroundTiles[1024] = {}; PuzzleElementType::Enum BackgroundTiles[1024] = {};
uint32_t GoalPositionCount = {}; uint32_t GoalPositionCount = {};