X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fui%2Fui.cpp;h=f7dcc027c6805349f8de1ad3a684d2a5e56dd88e;hb=d921cba26f21e4a75b22f5e9d9be988707bf6a8f;hp=88d128877c3c900cffcbf5da15f4cdc8214dd264;hpb=d364d8a9203138be1c569cdc31144f51883ec79f;p=blobs.git diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp index 88d1288..f7dcc02 100644 --- a/src/ui/ui.cpp +++ b/src/ui/ui.cpp @@ -30,6 +30,9 @@ CreaturePanel::CreaturePanel(app::Assets &assets) , age(new Label(assets.fonts.medium)) , mass(new Label(assets.fonts.medium)) , goal(new Label(assets.fonts.medium)) +, pos(new Label(assets.fonts.medium)) +, tile(new Label(assets.fonts.medium)) +, head(new Label(assets.fonts.medium)) , composition(new Panel) , stats{nullptr} , props{nullptr} @@ -68,6 +71,32 @@ CreaturePanel::CreaturePanel(app::Assets &assets) ->Add(info_label_panel) ->Add(info_value_panel); + Label *pos_label = new Label(assets.fonts.medium); + pos_label->Text("Pos"); + Label *tile_label = new Label(assets.fonts.medium); + tile_label->Text("Tile"); + Label *head_label = new Label(assets.fonts.medium); + head_label->Text("Heading"); + + Panel *loc_label_panel = new Panel; + loc_label_panel + ->Direction(Panel::VERTICAL) + ->Add(pos_label) + ->Add(tile_label) + ->Add(head_label); + Panel *loc_value_panel = new Panel; + loc_value_panel + ->Direction(Panel::VERTICAL) + ->Add(pos) + ->Add(tile) + ->Add(head); + Panel *loc_panel = new Panel; + loc_panel + ->Direction(Panel::HORIZONTAL) + ->Spacing(10.0f) + ->Add(loc_label_panel) + ->Add(loc_value_panel); + Label *stat_label[7]; for (int i = 0; i < 7; ++i) { stat_label[i] = new Label(assets.fonts.medium); @@ -91,6 +120,8 @@ CreaturePanel::CreaturePanel(app::Assets &assets) ->Spacing(2) ->Direction(Panel::VERTICAL); Panel *stat_meter_panel = new Panel; + stat_label[0]->Layout(); + stats[0]->Layout(); stat_meter_panel ->Spacing(stat_label[0]->Size().y - stats[0]->Size().y + 2) ->Direction(Panel::VERTICAL); @@ -142,6 +173,7 @@ CreaturePanel::CreaturePanel(app::Assets &assets) panel .Add(name) ->Add(info_panel) + ->Add(loc_panel) ->Add(composition) ->Add(stat_panel) ->Add(prop_panel) @@ -192,6 +224,10 @@ void CreaturePanel::Draw(graphics::Viewport &viewport) noexcept { goal->Text(c->Goals()[0]->Describe()); } + pos->Text(VectorString(c->GetSituation().Position(), 2)); + tile->Text(c->GetSituation().GetTileType().label); + head->Text(VectorString(c->GetSituation().Heading(), 2)); + const creature::Composition &comp = c->GetComposition(); if (comp.size() < components.size()) { composition->Clear(); @@ -241,6 +277,7 @@ void CreaturePanel::Draw(graphics::Viewport &viewport) noexcept { const glm::vec2 margin(20.0f); panel.Position(glm::vec2(viewport.Width() - margin.x - panel.Size().x, margin.y)); + panel.Layout(); panel.Draw(assets, viewport); } @@ -304,24 +341,7 @@ void RecordsPanel::Draw(graphics::Viewport &viewport) noexcept { int i = 0; for (const auto &r : sim.Records()) { if (!r) continue; - switch (r.type) { - default: - case world::Record::VALUE: - records[i]->Text(DecimalString(r.value, 2)); - break; - case world::Record::LENGTH: - records[i]->Text(LengthString(r.value)); - break; - case world::Record::MASS: - records[i]->Text(MassString(r.value)); - break; - case world::Record::PERCENTAGE: - records[i]->Text(PercentageString(r.value)); - break; - case world::Record::TIME: - records[i]->Text(TimeString(r.value)); - break; - } + records[i]->Text(r.ValueString()); std::string str(r.holder->Name()); bool first = true; for (auto p : r.holder->Parents()) { @@ -339,6 +359,7 @@ void RecordsPanel::Draw(graphics::Viewport &viewport) noexcept { const glm::vec2 margin(20.0f); panel.Position(glm::vec2(margin.x, margin.y)); + panel.Layout(); panel.Draw(sim.Assets(), viewport); } @@ -388,6 +409,7 @@ void TimePanel::Draw(graphics::Viewport &viewport) noexcept { const glm::vec2 margin(20.0f); panel.Position(glm::vec2(margin.x, viewport.Height() - margin.y - panel.Size().y)); + panel.Layout(); panel.Draw(sim.Assets(), viewport); }