Pioneer
ShipController.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 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>
27 
28  CONTROL_STATE_COUNT // <enum skip>
29 };
30 
31 // only AI
33 public:
34  //needed for serialization
35  enum Type {
36  AI = 0,
37  PLAYER = 1
38  };
40  virtual ~ShipController() {}
41  virtual Type GetType() { return AI; }
42  virtual void SaveToJson(Json &jsonObj, Space *s) {}
43  virtual void LoadFromJson(const Json &jsonObj) {}
44  virtual void PostLoadFixup(Space *) {}
45  virtual void StaticUpdate(float timeStep);
48  virtual double GetCruiseSpeed() const { return 0.0; }
49  virtual void ChangeCruiseSpeed(double delta) {}
50  virtual Body *GetFollowTarget() const { return nullptr; }
52 };
nlohmann::json Json
Definition: Json.h:8
FlightControlState
Definition: ShipController.h:16
@ CONTROL_FIXHEADING_RADIALLY_INWARD
Definition: ShipController.h:23
@ CONTROL_FIXHEADING_ANTINORMAL
Definition: ShipController.h:22
@ CONTROL_AUTOPILOT
Definition: ShipController.h:26
@ CONTROL_FIXHEADING_KILLROT
Definition: ShipController.h:25
@ CONTROL_FIXHEADING_NORMAL
Definition: ShipController.h:21
@ CONTROL_FIXSPEED
Definition: ShipController.h:18
@ CONTROL_STATE_COUNT
Definition: ShipController.h:28
@ CONTROL_MANUAL
Definition: ShipController.h:17
@ CONTROL_FIXHEADING_BACKWARD
Definition: ShipController.h:20
@ CONTROL_FIXHEADING_FORWARD
Definition: ShipController.h:19
@ CONTROL_FIXHEADING_RADIALLY_OUTWARD
Definition: ShipController.h:24
Definition: Body.h:57
Definition: ShipController.h:32
virtual void LoadFromJson(const Json &jsonObj)
Definition: ShipController.h:43
virtual Body * GetFollowTarget() const
Definition: ShipController.h:50
virtual void PostLoadFixup(Space *)
Definition: ShipController.h:44
virtual ~ShipController()
Definition: ShipController.h:40
Ship * m_ship
Definition: ShipController.h:51
virtual void SetFlightControlState(FlightControlState s)
Definition: ShipController.h:46
Type
Definition: ShipController.h:35
@ PLAYER
Definition: ShipController.h:37
@ AI
Definition: ShipController.h:36
virtual Type GetType()
Definition: ShipController.h:41
virtual void StaticUpdate(float timeStep)
Definition: ShipController.cpp:8
virtual double GetCruiseSpeed() const
Definition: ShipController.h:48
ShipController()
Definition: ShipController.h:39
virtual FlightControlState GetFlightControlState() const
Definition: ShipController.h:47
virtual void ChangeCruiseSpeed(double delta)
Definition: ShipController.h:49
virtual void SaveToJson(Json &jsonObj, Space *s)
Definition: ShipController.h:42
Definition: Ship.h:64
Definition: Space.h:19