Pioneer
Loading...
Searching...
No Matches
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
12class Body;
13class Ship;
14class Space;
15
16enum FlightControlState { // <enum scope='FlightControlState' name=ShipControllerFlightControlState public>
27
28 CONTROL_STATE_COUNT // <enum skip>
29};
30
31// only AI
33public:
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 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
virtual Body * GetFollowTarget() const
Definition ShipController.h:50
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