From d4462fab3c68dc14f4cba96cc9a57593a999008a Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Mon, 15 Jan 2018 23:31:40 +0000 Subject: [PATCH] [Fix] Fixed system_info_view's misalignment. --- src/star_system.cpp | 1 - src/system_info_view.cpp | 23 ++++++++++++++--------- src/system_info_view.h | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/star_system.cpp b/src/star_system.cpp index da47b9e..2a8734b 100644 --- a/src/star_system.cpp +++ b/src/star_system.cpp @@ -506,7 +506,6 @@ StarSystem::StarSystem(int sector_x, int sector_y, int system_idx) { centGrav2->name = s.m_systems[system_idx].name; centGrav2->orbMax = 0; - StarSystem::BodyType type = s.m_systems[system_idx].primaryStarClass; star[2] = new SBody; star[2]->name = s.m_systems[system_idx].name+" C"; star[2]->parent = centGrav2; diff --git a/src/system_info_view.cpp b/src/system_info_view.cpp index 4fd8640..3fd10d0 100644 --- a/src/system_info_view.cpp +++ b/src/system_info_view.cpp @@ -55,7 +55,8 @@ void SystemInfoView::OnBodySelected(StarSystem::SBody* b) { m_infoText->SetText(desc); } -void SystemInfoView::PutBodies(StarSystem::SBody* body, int dir, float pos[2], int& majorBodies) { +void SystemInfoView::PutBodies(StarSystem::SBody* body, int dir, float pos[2], + int& majorBodies, float prevSize) { float size[2]; float myPos[2]; myPos[0] = pos[0]; @@ -64,20 +65,24 @@ void SystemInfoView::PutBodies(StarSystem::SBody* body, int dir, float pos[2], i Gui::ImageButton* ib = new Gui::ImageButton(body->GetIcon()); ib->GetSize(size); size[1] = -size[1]; - pos[dir] += size[dir]; - myPos[dir] += size[dir]; + if(prevSize == -1) prevSize = size[!dir]; ib->onClick.connect(sigc::bind(sigc::mem_fun(this, &SystemInfoView::OnBodySelected), body)); - Add(ib, pos[0], pos[1]+0.5*size[1]); + myPos[0] += (dir ? prevSize*0.5 - size[0]*0.5 : 0); + myPos[1] += (!dir ? prevSize*0.5 - size[1]*0.5 : 0); + Add(ib, myPos[0], myPos[1]+size[1]); majorBodies++; + pos[dir] += size[dir]; dir = !dir; - myPos[dir] += 0.5*size[dir]; + myPos[dir] += size[dir]; } else { + size[0] = -1; + size[1] = -1; pos[!dir] += 320; } for(std::vector::iterator i = body->children.begin(); i != body->children.end(); ++i) { - PutBodies(*i, dir, myPos, majorBodies); + PutBodies(*i, dir, myPos, majorBodies, size[!dir]); } } @@ -88,10 +93,10 @@ void SystemInfoView::SystemChanged(StarSystem* s) { GetSize(csize); float pos[2]; - pos[0] = 50; - pos[1] = csize[1]+40; + pos[0] = 0; + pos[1] = csize[1]; - PutBodies(s->rootBody, 1, pos, majorBodies); + PutBodies(s->rootBody, 1, pos, majorBodies, -1); char buf[512]; snprintf(buf, sizeof(buf), "Stable system with %d major bodies", majorBodies); diff --git a/src/system_info_view.h b/src/system_info_view.h index b4fc771..526c47e 100644 --- a/src/system_info_view.h +++ b/src/system_info_view.h @@ -13,7 +13,7 @@ public: private: void SystemChanged(StarSystem* s); void OnBodySelected(StarSystem::SBody* b); - void PutBodies(StarSystem::SBody* body, int dir, float pos[2], int& majorBodies); + void PutBodies(StarSystem::SBody* body, int dir, float pos[2], int& majorBodies, float prevSize); StarSystem::SBody* m_bodySelected; Gui::Label* m_infoText; };