1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details 2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt 3 4 #pragma once 5 6 /* 7 * Ship movement controller class 8 * Controls thrusters, autopilot according to player input or AI 9 */ 10 #include "JsonFwd.h" 11 12 class Body; 13 class Ship; 14 class Space; 15 16 enum FlightControlState { // <enum scope='FlightControlState' name=ShipControllerFlightControlState public> 17 CONTROL_MANUAL, 18 CONTROL_FIXSPEED, 19 CONTROL_FIXHEADING_FORWARD, 20 CONTROL_FIXHEADING_BACKWARD, 21 CONTROL_FIXHEADING_NORMAL, 22 CONTROL_FIXHEADING_ANTINORMAL, 23 CONTROL_FIXHEADING_RADIALLY_INWARD, 24 CONTROL_FIXHEADING_RADIALLY_OUTWARD, 25 CONTROL_FIXHEADING_KILLROT, 26 CONTROL_AUTOPILOT, 27 28 CONTROL_STATE_COUNT // <enum skip> 29 }; 30 31 // only AI 32 class ShipController { 33 public: 34 //needed for serialization 35 enum Type { 36 AI = 0, 37 PLAYER = 1 38 }; ShipController()39 ShipController() {} ~ShipController()40 virtual ~ShipController() {} GetType()41 virtual Type GetType() { return AI; } SaveToJson(Json & jsonObj,Space * s)42 virtual void SaveToJson(Json &jsonObj, Space *s) {} LoadFromJson(const Json & jsonObj)43 virtual void LoadFromJson(const Json &jsonObj) {} PostLoadFixup(Space *)44 virtual void PostLoadFixup(Space *) {} 45 virtual void StaticUpdate(float timeStep); SetFlightControlState(FlightControlState s)46 virtual void SetFlightControlState(FlightControlState s) {} GetFlightControlState()47 virtual FlightControlState GetFlightControlState() const { return CONTROL_MANUAL; } GetSetSpeed()48 virtual double GetSetSpeed() const { return 0.0; } ChangeSetSpeed(double delta)49 virtual void ChangeSetSpeed(double delta) {} GetSetSpeedTarget()50 virtual Body *GetSetSpeedTarget() const { return nullptr; } 51 Ship *m_ship; 52 }; 53