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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
/*
SABRE Fighter Plane Simulator
Copyright (c) 1997 Dan Hammer
Portions Donated By Antti Barck
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*************************************************
* SABRE Fighter Plane Simulator *
* Version: 0.1 *
* File : instrmnt.h *
* Date : March, 1997 *
* Author : Dan Hammer *
*************************************************/
#ifndef __instrument_h
#define __instrument_h
extern int cockpit_y, cockpit_x;
class TextrMap;
class Indicator
{
public:
TextrMap *tmap;
int x,y;
virtual void underpaint(Flight &) = 0;
virtual void display(Flight &) = 0;
virtual void read_from(istream &) = 0;
virtual void init() = 0;
};
class Scaled_Indicator : public Indicator
{
public:
int width,color;
float scale;
float range;
void read_from(istream &is)
{
is >> x >> y >> width >> range;
is >> scale >> color;
x += cockpit_x;
y += cockpit_y;
}
virtual void init()
{}
};
class ArtHor : public Scaled_Indicator
{
public:
int height;
Point s[5];
Point g[5];
void underpaint(Flight &);
void display(Flight &);
void init();
};
class Aileron_I : public Scaled_Indicator
{
public:
int cx;
void display(Flight &);
void underpaint(Flight &)
{}
void init();
};
class Elevator_I : public Scaled_Indicator
{
public:
int cy;
void display(Flight &);
void underpaint(Flight &)
{}
void init();
};
class Rudder_I : public Scaled_Indicator
{
public:
int cx;
void display(Flight &);
void underpaint(Flight &)
{}
void init();
};
class LED : public Scaled_Indicator
{
public:
void on();
void display(Flight &)
{}
void underpaint(Flight &)
{}
};
class Landing_Gear_LED : public LED
{
public:
void display(Flight &);
};
class Wheel_Brakes_LED : public LED
{
public:
void display(Flight &);
};
class Air_Brakes_LED : public LED
{
void display(Flight &);
};
class Dial_Indicator : public Scaled_Indicator
{
public:
int cx,cy;
void display(Flight &)
{}
void underpaint(Flight &)
{}
void show_dial(float value);
void init();
};
class Air_Speed_I : public Dial_Indicator
{
void display(Flight &);
};
class Altitude_I : public Dial_Indicator
{
void display(Flight &);
};
class Compass : public Dial_Indicator
{
void display(Flight &);
};
class Throttle_I : public Dial_Indicator
{
void display(Flight &);
void init();
};
class Instrument_Panel
{
public:
Indicator **indicators;
int max_indicators;
int indicators_idx;
Instrument_Panel(int max_i);
~Instrument_Panel()
{ if (indicators) delete indicators; }
void add_indicator(Indicator *);
friend istream &operator >>(istream &is, Instrument_Panel &);
void underpaint(Flight &);
void display(Flight &);
void init();
};
void setup_instruments(char *, Instrument_Panel &);
extern Instrument_Panel instrument_panel;
#endif
|