solved status ui
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
BIN
src/game/data/puzzles/0.pzl
LFS
BIN
src/game/data/puzzles/0.pzl
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -165,3 +165,10 @@ type SavedEntityRenderData
|
||||
ModelHandle Model
|
||||
b Visible
|
||||
}
|
||||
|
||||
type SavedPlayerConfig
|
||||
{
|
||||
SavedEntityRenderData TabletBackgroundRenderData
|
||||
SavedEntityRenderData TabletStatusRenderData
|
||||
TextureHandle TabletStatusSolvedTexture
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user