]> git.localhorst.tv Git - blobs.git/blobdiff - src/ui/ui.cpp
reorder record panel
[blobs.git] / src / ui / ui.cpp
index dc17b2be7bba5487f35dcf8a6af3329028e5a242..126e3079b37fac1c9022298f7dd3831ee9bfa56e 100644 (file)
@@ -231,24 +231,21 @@ void CreaturePanel::Draw(graphics::Viewport &viewport) noexcept {
        }
 
        pos->Text(VectorString(c->GetSituation().Position(), 2));
-       tile->Text(c->GetSituation().GetTileType().label);
+       tile->Text(c->GetSituation().GetTileType().label + (
+               c->GetSituation().OnGround()
+                       ? (c->GetSituation().Moving() ? " (moving)" : " (standing)")
+                       : (c->GetSituation().Moving() ? " (flying)" : " (hovering)")
+       ));
        head->Text(VectorString(c->GetSituation().Heading(), 2));
 
        const creature::Composition &comp = c->GetComposition();
        if (comp.size() < components.size()) {
+               components.clear();
                composition->Clear();
-               while (comp.size() < components.size()) {
-                       delete components.back();
-                       components.pop_back();
-               }
-               for (auto l : components) {
-                       composition->Add(l);
-               }
-       } else {
-               while (comp.size() > components.size()) {
-                       components.emplace_back(new Label(assets.fonts.medium));
-                       composition->Add(components.back());
-               }
+       }
+       while (comp.size() > components.size()) {
+               components.emplace_back(new Label(assets.fonts.medium));
+               composition->Add(components.back());
        }
        {
                int i = 0;
@@ -319,21 +316,28 @@ RecordsPanel::RecordsPanel(world::Simulation &sim)
        holders.reserve(sim.Records().size() * (world::Record::MAX + 1));
        int ri = 0;
        for (const auto &r : sim.Records()) {
+               Panel *by_panel = new Panel;
+               by_panel
+                       ->Direction(Panel::VERTICAL);
+               Panel *val_panel = new Panel;
+               val_panel
+                       ->Direction(Panel::VERTICAL);
+               Panel *tab_panel = new Panel;
+               tab_panel
+                       ->Direction(Panel::HORIZONTAL)
+                       ->Spacing(10.0f)
+                       ->Add(by_panel)
+                       ->Add(val_panel);
                Label *rec_label = new Label(sim.Assets().fonts.medium);
                rec_label->Text(r.name);
-               Label *by_label = new Label(sim.Assets().fonts.medium);
-               by_label->Text("By");
                Panel *rec_panel = new Panel;
                rec_panel
                        ->Direction(Panel::VERTICAL)
-                       ->Add(rec_label);
-               Panel *by_panel = new Panel;
-               by_panel
-                       ->Direction(Panel::VERTICAL)
-                       ->Add(by_label);
+                       ->Add(rec_label)
+                       ->Add(tab_panel);
                for (int i = 0; i < world::Record::MAX; ++i) {
                        Label *val_label = new Label(sim.Assets().fonts.medium);
-                       rec_panel->Add(val_label);
+                       val_panel->Add(val_label);
                        records.push_back(val_label);
                        Label *holder_label = new Label(sim.Assets().fonts.medium);
                        by_panel->Add(holder_label);
@@ -343,8 +347,7 @@ RecordsPanel::RecordsPanel(world::Simulation &sim)
                group_panel
                        ->Direction(Panel::HORIZONTAL)
                        ->Spacing(10.0f)
-                       ->Add(rec_panel)
-                       ->Add(by_panel);
+                       ->Add(rec_panel);
                panel.Add(group_panel);
                ++ri;
        }