[Add] Wheels up/down transition.

This commit is contained in:
Allanis 2017-11-14 20:21:06 +00:00
parent ffe1f35386
commit 74e68eb265
6 changed files with 30 additions and 0 deletions

BIN
icons/wheels_down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

BIN
icons/wheels_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

View File

@ -7,6 +7,8 @@
#include "space.h" #include "space.h"
Ship::Ship(ShipType::Type shipType) : RigidBody() { Ship::Ship(ShipType::Type shipType) : RigidBody() {
m_wheelTransition = 0;
m_wheelState = 0;
m_dockedWith = 0; m_dockedWith = 0;
m_mesh = 0; m_mesh = 0;
m_shipType = shipType; m_shipType = shipType;
@ -95,6 +97,12 @@ void Ship::AITurn(void) {
dGeomSetData(ray, static_cast<Object*>(&m_laserCollisionObj)); dGeomSetData(ray, static_cast<Object*>(&m_laserCollisionObj));
m_tempLaserGeom[i] = ray; 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) { const ShipType& Ship::GetShipType(void) {
@ -124,6 +132,11 @@ void Ship::SetGunState(int idx, int state) {
m_gunState[idx] = 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. */ /* Assumed to be at model coords. */
void Ship::RenderLaserfire(void) { void Ship::RenderLaserfire(void) {
const ShipType& stype = GetShipType(); const ShipType& stype = GetShipType();
@ -167,6 +180,7 @@ void Ship::Render(const Frame* camFrame) {
params.pAnim[ASRC_MINFRAC] = L3D::GetGameTime() / 60; params.pAnim[ASRC_MINFRAC] = L3D::GetGameTime() / 60;
params.pAnim[ASRC_HOURFRAC] = L3D::GetGameTime() / 3600.0f; params.pAnim[ASRC_HOURFRAC] = L3D::GetGameTime() / 3600.0f;
params.pAnim[ASRC_DAYFRAC] = L3D::GetGameTime() / (24*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)); strncpy(params.pText[0], GetLabel().c_str(), sizeof(params.pText));

View File

@ -29,6 +29,7 @@ public:
const ShipType& GetShipType(void); const ShipType& GetShipType(void);
void CalcStats(shipstats_t* stats); void CalcStats(shipstats_t* stats);
void UpdateMass(void); void UpdateMass(void);
void SetWheelState(bool down);
class LaserObj : public Object { class LaserObj : public Object {
public: public:
@ -45,6 +46,9 @@ protected:
ObjMesh* m_mesh; ObjMesh* m_mesh;
Uint32 m_gunState[ShipType::GUNMOUNT_MAX]; Uint32 m_gunState[ShipType::GUNMOUNT_MAX];
private: private:
float m_wheelState;
float m_wheelTransition;
float m_thrusters[ShipType::THRUSTER_MAX]; float m_thrusters[ShipType::THRUSTER_MAX];
float m_angThrusters[3]; float m_angThrusters[3];
dGeomID m_tempLaserGeom[ShipType::GUNMOUNT_MAX]; dGeomID m_tempLaserGeom[ShipType::GUNMOUNT_MAX];

View File

@ -11,6 +11,13 @@ static const float lightCol[] = { 1, 1, .9, 0 };
WorldView::WorldView(void): View() { WorldView::WorldView(void): View() {
SetTransparency(true); 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 = new Gui::ImageButton("icons/hyperspace_f8.png");
m_hyperspaceButton->SetShortcut(SDLK_F8, KMOD_NONE); m_hyperspaceButton->SetShortcut(SDLK_F8, KMOD_NONE);
m_hyperspaceButton->onClick.connect(sigc::mem_fun(this, &WorldView::OnClickHyperspace)); m_hyperspaceButton->onClick.connect(sigc::mem_fun(this, &WorldView::OnClickHyperspace));
@ -37,6 +44,10 @@ WorldView::WorldView(void): View() {
glEndList(); glEndList();
} }
void WorldView::OnChangeWheelsState(Gui::MultiStateImageButton* b) {
L3D::player->SetWheelState(b->GetState());
}
void WorldView::OnClickHyperspace(void) { void WorldView::OnClickHyperspace(void) {
StarSystem* s = L3D::GetSelectedSystem(); StarSystem* s = L3D::GetSelectedSystem();
if(s /* && isn's current system. */) { if(s /* && isn's current system. */) {

View File

@ -12,6 +12,7 @@ public:
private: private:
void OnClickHyperspace(void); void OnClickHyperspace(void);
void OnChangeWheelsState(Gui::MultiStateImageButton* b);
Gui::ImageButton* m_hyperspaceButton; Gui::ImageButton* m_hyperspaceButton;
GLuint m_bgstarsDlist; GLuint m_bgstarsDlist;
}; };