solved status ui

This commit is contained in:
Asuro
2025-05-19 18:20:05 +02:00
parent 1a8be39c19
commit 70db6ca2aa
11 changed files with 166 additions and 21 deletions

View File

@@ -32,12 +32,6 @@ namespace Game
int64_t StartTime = 0;
};
// TODO: move to generated data and save
struct SavedPlayerConfig
{
Gen::SavedEntityRenderData TabletRenderData;
};
struct PlayerData
{
Gen::Transform PlayerCamTransform;
@@ -53,7 +47,7 @@ namespace Game
InteractionMode InteractionM = InteractionMode::Walk;
float MouseSensitivity = 1.0f;
float MovementSpeed = 10.0f;
SavedPlayerConfig Config;
Gen::SavedPlayerConfig Config;
};
struct InstanceDebugData

View File

@@ -195,7 +195,7 @@ namespace Game
{
Deserializer d;
d.Init("game/data/static/uiconfig.dat", "UICO");
d.ReadT(GetInstance().Player.Config.TabletRenderData);
d.ReadT(GetInstance().Player.Config);
d.Finish();
}
}
@@ -271,7 +271,7 @@ namespace Game
if (IsValid(TabletHandle))
{
auto& tablet = UIQuads.Get(TabletHandle);
tablet.EData.LoadFromSaved(player.Config.TabletRenderData);
tablet.EData.LoadFromSaved(player.Config.TabletBackgroundRenderData);
UpdateMatrix(player.PlayerCamTransform);
tablet.EData.Transform.Rotation = player.PlayerCamTransform.Rotation;
Rotate(tablet.EData.Transform, {0.5f * bx::kPi, 0.0f, 0.0f});
@@ -382,6 +382,7 @@ namespace Game
quad.EData.MaterialHandle = EMaterial::UI;
quad.EData.ModelH = GameRendering::Get().GetModelHandleFromPath("models/plane.glb");
}
SolvedQuad = level.UIQuads.New();
IsSetup = true;
LOG("finished setup!");
}
@@ -450,6 +451,21 @@ namespace Game
Vec3 mousePosWorld = GetMousePosWorld();
Puzzle::PuzzleSolver solver;
EntityRenderData solvedData;
solvedData.LoadFromSaved(GetInstance().Player.Config.TabletStatusRenderData);
auto& solvedQuad = level.UIQuads.Get(SolvedQuad);
solvedQuad.EData = solvedData;
solvedQuad.EData.Visible = IsActive;
solvedQuad.EData.TextureHandle = solver.IsPuzzleSolved(Data)
? GetInstance().Player.Config.TabletStatusSolvedTexture
: solvedData.TextureHandle;
solvedQuad.EData.Transform.Position = tileOriginTransform.Position;
solvedQuad.EData.Transform.Rotation = camTransform.Rotation;
solvedQuad.EData.Transform.Scale = solvedData.Transform.Scale;
TranslateLocal(solvedQuad.EData.Transform, solvedData.Transform.Position);
Rotate(solvedQuad.EData.Transform, Vec3{bx::kPi * 0.5f, 0.0f, (1.0f - 0 * 0.5f) * bx::kPi});
// Available Cards
for (int32_t i = 0; i < Puzzle::Config::MaxAvailableStacks; ++i)
{

View File

@@ -157,6 +157,7 @@ namespace Game
PuzzleTileCoverHandle CoverHandles[Puzzle::Config::MaxCardsInPuzzle * Puzzle::Config::MaxCoversInTile];
UIQuadEntityHandle UIPlacedCards[Puzzle::Config::MaxCardsInPuzzle];
UIQuadEntityHandle UIAvailableCards[Puzzle::Config::MaxAvailableStacks * UIAvailableCardMaxStackPreview];
UIQuadEntityHandle SolvedQuad;
Gen::PuzPos DraggedCard{-1, -1};
uint16_t DraggedAvailableCardIdx = UINT16_MAX;
bool IsSetup = false;

View File

@@ -240,7 +240,7 @@ namespace Puzzle
return from == PuzzleElementType::ElectricIn || from == PuzzleElementType::ElectricGoal ||
from == PuzzleElementType::None;
}
assert(false);
// assert(false);
return false;
}
bool PuzzleSolver::IsValidSource(PuzzleElementType::Enum sourceType, PuzzleElementType::Enum goalType)

View File

@@ -39,6 +39,7 @@ namespace Tools
bool EntityDataSettings(Gen::SavedEntityRenderData& data)
{
ImGui::PushID(&data);
bool changed = false;
changed |= ModelDropdown(data.Model);
changed |= MaterialDropdown(data.Material);
@@ -47,6 +48,7 @@ namespace Tools
changed |= ImGui::Checkbox("Visible", &data.Visible);
changed |= ImGui::ColorEdit4("Color 1", &data.BaseColor.x);
changed |= ImGui::ColorEdit4("Color 2", &data.HighlightColor.x);
ImGui::PopID();
return changed;
}
@@ -299,11 +301,16 @@ namespace Tools
ImGui::Separator();
ImGui::Text("Game Tablet");
if (Tools::EntityDataSettings(player.Config.TabletRenderData))
bool bTabletChanged = false;
bTabletChanged |= Tools::EntityDataSettings(player.Config.TabletBackgroundRenderData);
ImGui::Text("Status");
bTabletChanged |= Tools::EntityDataSettings(player.Config.TabletStatusRenderData);
bTabletChanged |= Tools::TextureDropdown(player.Config.TabletStatusSolvedTexture);
if (bTabletChanged)
{
Serializer s;
s.Init("game/data/static/uiconfig.dat", "UICO");
s.WriteT(player.Config.TabletRenderData);
s.WriteT(player.Config);
s.Finish();
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -165,3 +165,10 @@ type SavedEntityRenderData
ModelHandle Model
b Visible
}
type SavedPlayerConfig
{
SavedEntityRenderData TabletBackgroundRenderData
SavedEntityRenderData TabletStatusRenderData
TextureHandle TabletStatusSolvedTexture
}