summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/FlightComp.h
blob: 07797a22ed7fc6366a1d42b24e12c0d690aa9881 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    Flight Computer systems class
*/

#ifndef FLIGHT_COMP_H
#define FLIGHT_COMP_H

#include "Types.h"
#include "Computer.h"
#include "Geometry.h"

// +--------------------------------------------------------------------+

class Ship;

// +--------------------------------------------------------------------+

class FlightComp : public Computer
{
public:
    enum CompType { AVIONICS=1, FLIGHT, TACTICAL };

    FlightComp(int comp_type, const char* comp_name);
    FlightComp(const Computer& rhs);
    virtual ~FlightComp();

    virtual void      ExecSubFrame();

    int               Mode()                  const { return mode; }
    double            Throttle()              const { return throttle; }

    void              SetMode(int m)                { mode   = m; }
    void              SetVelocityLimit(double v)    { vlimit = (float) v; }
    void              SetTransLimit(double x, double y, double z);

    void              FullStop()                    { halt   = true; }

protected:
    virtual void      ExecTrans();
    virtual void      ExecThrottle();

    int               mode;
    int               halt;
    float             throttle;

    float             vlimit;
    float             trans_x_limit;
    float             trans_y_limit;
    float             trans_z_limit;
};

#endif  // FLIGHT_COMP_H