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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2024, 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
========
Class for all Multi Function Displays
*/
#ifndef MFD_h
#define MFD_h
#include "Types.h"
#include "Geometry.h"
#include "Color.h"
#include "HUDView.h"
// +--------------------------------------------------------------------+
class Contact;
class Ship;
class Sprite;
class Window;
// +--------------------------------------------------------------------+
class MFD
{
public:
enum Modes { MFD_MODE_OFF, MFD_MODE_GAME, MFD_MODE_SHIP,
MFD_MODE_FOV, /*MFD_MODE_FWD, MFD_MODE_MAP,*/
MFD_MODE_HSD, MFD_MODE_3D
};
MFD(Window* c, int index);
virtual ~MFD();
int operator == (const MFD& that) const { return this == &that; }
static void Initialize();
static void Close();
static void SetColor(Color c);
// Operations:
virtual void Draw();
virtual void DrawGameMFD();
virtual void DrawStatusMFD();
virtual void DrawSensorMFD();
virtual void DrawHSD();
virtual void Draw3D();
virtual void DrawSensorLabels(const char* mfd_mode);
virtual void DrawMap();
virtual void DrawGauge(int x, int y, int percent);
virtual void SetStatusColor(int status);
virtual void SetWindow(Window* w) { window = w; }
virtual Window* GetWindow() { return window; }
virtual void SetRect(const Rect& r);
virtual const Rect& GetRect() const { return rect; }
virtual void SetMode(int m);
virtual int GetMode() const { return mode; }
virtual Sprite* GetSprite() { return sprite; }
virtual void SetShip(Ship* s) { ship = s; }
virtual Ship* GetShip() { return ship; }
virtual void Show();
virtual void Hide();
virtual void UseCameraView(CameraView* v);
void DrawMFDText(int index, const char* txt, Rect& r, int align, int status=-1);
void HideMFDText(int index);
void SetText3DColor(Color c);
void SetCockpitHUDTexture(Bitmap* bmp) { cockpit_hud_texture = bmp; }
bool IsMouseLatched() const;
protected:
enum { TXT_LAST=20 };
Window* window;
Rect rect;
int index;
int mode;
int lines;
Sprite* sprite;
bool hidden;
Ship* ship;
HUDText mfd_text[TXT_LAST];
CameraView* camview;
Bitmap* cockpit_hud_texture;
int mouse_latch;
bool mouse_in;
};
#endif // MFD_h
|