From ae069c4949045a4393616271f79f7f53d0a0176f Mon Sep 17 00:00:00 2001 From: Asuro Date: Mon, 31 Mar 2025 17:51:57 +0200 Subject: [PATCH] puzzle ui positioning --- src/game/Level.cpp | 12 ++++++++---- src/game/Level.h | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/game/Level.cpp b/src/game/Level.cpp index 2c8b06d..a8e9c51 100644 --- a/src/game/Level.cpp +++ b/src/game/Level.cpp @@ -353,9 +353,14 @@ namespace Game UpdateMatrix(camTransform); Vec3 cameraPos = camTransform.Position; + Vec2 uiOffset = Vec2{static_cast(Data.WidthTiles / Puzzle::Config::CardSize - 1), + static_cast(Data.HeightTiles / Puzzle::Config::CardSize) - 1}; + uiOffset *= -UICardOffset * 0.5f; + Transform& boardTransform = level.UIQuads.Get(level.TabletHandle).EData.Transform; Transform tileOriginTransform = boardTransform; tileOriginTransform.Position += AxisForward(camTransform.M) * -0.01f; + TranslateLocal(tileOriginTransform, Vec3{uiOffset.x, 0.0f, uiOffset.y} * 1.0f); UpdateMatrix(tileOriginTransform); Vec2 mousePos = GetMousePos(); @@ -384,7 +389,7 @@ namespace Game bool isValid = Puzzle::IsValid(card.RefCard); - // Tile + // World Tile tile.EData.Visible = true; tile.EData.ModelH = isValid ? staticCards[card.RefCard.Idx].ModelHandle : staticCards[0].ModelHandle; tile.EData.DotColor = visuals.TileDotColor; @@ -402,7 +407,7 @@ namespace Game tile.EData.Transform.Position = cardPos; bx::mtxRotateY(tile.EData.Transform.Rotation.M, card.Rotation * bx::kPi * 0.5f); - // Quad + // UI Quad quad.EData.Visible = isValid; quad.EData.TextureHandle = isValid ? staticCards[card.RefCard.Idx].BoardTextureHandle : Gen::TextureHandle{}; @@ -412,8 +417,7 @@ namespace Game quad.EData.Transform.Position = tileOriginTransform.Position; quad.EData.Transform.Rotation = camTransform.Rotation; TranslateLocal(quad.EData.Transform, - Vec3{(float)card.Position.X, (float)card.Position.Y, 0.0f} * UICardOffset * - 0.1f); // no clue where the 0.1 comes from + Vec3{(float)card.Position.X, (float)card.Position.Y, 0.0f} * UICardOffset * UICardScale); Rotate(quad.EData.Transform, Vec3{bx::kPi * 0.5f, 0.0f, (1.0f - card.Rotation * 0.5f) * bx::kPi}); quad.EData.Transform.Scale = {UICardScale, UICardScale, UICardScale}; diff --git a/src/game/Level.h b/src/game/Level.h index 77cefe2..bbaa421 100644 --- a/src/game/Level.h +++ b/src/game/Level.h @@ -142,8 +142,8 @@ namespace Game struct WorldPuzzle { static constexpr Gen::Vec2 WorldCardSize{10.0f, 10.0f}; - static constexpr float UICardOffset = 0.21f; - static constexpr float UICardScale = 0.1f; + static constexpr float UICardScale = 0.05f; + static constexpr float UICardOffset = 2.1f * UICardScale; Gen::PuzzleData Data; Gen::Vec3 WorldPosition; PuzzleTileEntityHandle TileHandles[Puzzle::Config::MaxCardsInPuzzle];