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 |= 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

View File

@@ -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();

View File

@@ -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)
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 = {};