From 1e48dbafe5d7bfb875f80d07a30580fc892ed102 Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Tue, 14 Nov 2017 20:21:06 +0000 Subject: [PATCH] [Add] Wheels up/down transition. --- icons/wheels_down.png | Bin 0 -> 460 bytes icons/wheels_up.png | Bin 0 -> 454 bytes src/ship.cpp | 14 ++++++++++++++ src/ship.h | 4 ++++ src/world_view.cpp | 11 +++++++++++ src/world_view.h | 1 + 6 files changed, 30 insertions(+) create mode 100644 icons/wheels_down.png create mode 100644 icons/wheels_up.png diff --git a/icons/wheels_down.png b/icons/wheels_down.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca99613b5a0aa8c536848187547e15a9eaff819 GIT binary patch literal 460 zcmV;-0WPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RT1{@S4E3OQz=l}o!8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0Xa!TK~y-)&6U4vgfJAxU&Mk#P{`PW zF8UwbEww|3($W8>qjV^a{UiE6xSr$H<+=(Tq#z_6GWoVEp>_z!q34fN5BjFOm*kUg zzJV7Ky+m-CFyLa*iB5JZ*{O4ZXt;jXS%HAQRh!u6rK;Bg#_ zZ*l+V1Hd-fW?2>lL7U!)@HreXBu!H;IHgpllu|BunxPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RT1{@S48D`u4XaE2J8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0W(QNK~y-)#nrKD!!Qs4(345QgOI^v zvl!w(XqLJ|htko16gq@_NdLiWyriUB($&zZ#UORiPb4o<9ytm z$!5KQzj=c3#QVeQJi6TLa<84QjBC};&f1`NH?xk|*Mmu1t3LB{0U%j#PPwGl4uPLL zS%(a{L%s1^+Rt^@y6;-W#5Q;Ctey2u2Ikp93n_L_J9EDHdKOZ6xR!zlDT<LU(lu{uD=iFnrbhB1UwQb87GgrnKA}Xbv(CG#> zU(ltGpGR|edwuK&M=jMjjtL=%sI}HwBO)Orj^hamk}lG^t`QLtO(YD%bdgR#XV)13 w99|Ah(*QseMa!$D367(&m_laserCollisionObj)); m_tempLaserGeom[i] = ray; } + + if(m_wheelTransition != 0.0f) { + m_wheelState += m_wheelTransition*timeStep*0.001; + m_wheelState = CLAMP(m_wheelState, 0, 1); + if((m_wheelState == 0) || (m_wheelState == 1)) m_wheelTransition = 0; + } } const ShipType& Ship::GetShipType(void) { @@ -124,6 +132,11 @@ void Ship::SetGunState(int idx, int state) { m_gunState[idx] = state; } +void Ship::SetWheelState(bool down) { + if(down) m_wheelTransition = 1; + else m_wheelTransition = -1; +} + /* Assumed to be at model coords. */ void Ship::RenderLaserfire(void) { const ShipType& stype = GetShipType(); @@ -167,6 +180,7 @@ void Ship::Render(const Frame* camFrame) { params.pAnim[ASRC_MINFRAC] = L3D::GetGameTime() / 60; params.pAnim[ASRC_HOURFRAC] = L3D::GetGameTime() / 3600.0f; params.pAnim[ASRC_DAYFRAC] = L3D::GetGameTime() / (24*3600.0f); + params.pAnim[ASRC_GEAR] = m_wheelState; strncpy(params.pText[0], GetLabel().c_str(), sizeof(params.pText)); diff --git a/src/ship.h b/src/ship.h index 43f09ae..a51cc73 100644 --- a/src/ship.h +++ b/src/ship.h @@ -29,6 +29,7 @@ public: const ShipType& GetShipType(void); void CalcStats(shipstats_t* stats); void UpdateMass(void); + void SetWheelState(bool down); class LaserObj : public Object { public: @@ -45,6 +46,9 @@ protected: ObjMesh* m_mesh; Uint32 m_gunState[ShipType::GUNMOUNT_MAX]; private: + float m_wheelState; + float m_wheelTransition; + float m_thrusters[ShipType::THRUSTER_MAX]; float m_angThrusters[3]; dGeomID m_tempLaserGeom[ShipType::GUNMOUNT_MAX]; diff --git a/src/world_view.cpp b/src/world_view.cpp index 549e391..ed176cc 100644 --- a/src/world_view.cpp +++ b/src/world_view.cpp @@ -11,6 +11,13 @@ static const float lightCol[] = { 1, 1, .9, 0 }; WorldView::WorldView(void): View() { SetTransparency(true); + Gui::MultiStateImageButton* wheels_button = new Gui::MultiStateImageButton(); + wheels_button->SetShortcut(SDLK_F7, KMOD_NONE); + wheels_button->AddState(0, "icons/wheels_up.png"); + wheels_button->AddState(1, "icons/wheels_down.png"); + wheels_button->onClick.connect(sigc::mem_fun(this, &WorldView::OnChangeWheelsState)); + m_rightButtonBar->Add(wheels_button, 34, 2); + m_hyperspaceButton = new Gui::ImageButton("icons/hyperspace_f8.png"); m_hyperspaceButton->SetShortcut(SDLK_F8, KMOD_NONE); m_hyperspaceButton->onClick.connect(sigc::mem_fun(this, &WorldView::OnClickHyperspace)); @@ -37,6 +44,10 @@ WorldView::WorldView(void): View() { glEndList(); } +void WorldView::OnChangeWheelsState(Gui::MultiStateImageButton* b) { + L3D::player->SetWheelState(b->GetState()); +} + void WorldView::OnClickHyperspace(void) { StarSystem* s = L3D::GetSelectedSystem(); if(s /* && isn's current system. */) { diff --git a/src/world_view.h b/src/world_view.h index 77d86c8..4fcaeb5 100644 --- a/src/world_view.h +++ b/src/world_view.h @@ -12,6 +12,7 @@ public: private: void OnClickHyperspace(void); + void OnChangeWheelsState(Gui::MultiStateImageButton* b); Gui::ImageButton* m_hyperspaceButton; GLuint m_bgstarsDlist; };