blob: cb59bf05d96c50adbd519c9ee9830df806e5c42b (
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
/* 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
========
Conventional Shield (system) class
*/
#ifndef Shield_h
#define Shield_h
#include "Types.h"
#include "System.h"
#include "Geometry.h"
// +--------------------------------------------------------------------+
class Shot;
class Sound;
// +--------------------------------------------------------------------+
class Shield : public System
{
public:
enum SUBTYPE { DEFLECTOR = 1, GRAV_SHIELD, HYPER_SHIELD };
Shield(SUBTYPE s);
Shield(const Shield& rhs);
virtual ~Shield();
virtual void ExecFrame(double seconds);
double DeflectDamage(Shot* shot, double shot_damage);
double ShieldLevel() const { return shield_level * 100; }
double ShieldFactor() const { return shield_factor; }
double ShieldCurve() const { return shield_curve; }
void SetShieldFactor(double f) { shield_factor = (float) f; }
void SetShieldCurve(double c) { shield_curve = (float) c; }
double ShieldCutoff() const { return shield_cutoff; }
void SetShieldCutoff(double f) { shield_cutoff = (float) f; }
double Capacity() const { return capacity; }
double Consumption() const { return sink_rate; }
void SetConsumption(double r) { sink_rate = (float)r; }
bool ShieldCapacitor() const { return shield_capacitor; }
void SetShieldCapacitor(bool c);
bool ShieldBubble() const { return shield_bubble; }
void SetShieldBubble(bool b) { shield_bubble = b; }
double DeflectionCost() const { return deflection_cost; }
void SetDeflectionCost(double c) { deflection_cost = (float) c; }
// override from System:
virtual void SetPowerLevel(double level);
virtual void SetNetShieldLevel(int level);
virtual void Distribute(double delivered_energy, double seconds);
virtual void DoEMCON(int emcon);
protected:
bool shield_capacitor;
bool shield_bubble;
float shield_factor;
float shield_level;
float shield_curve;
float shield_cutoff;
float requested_power_level;
float deflection_cost;
};
#endif // Shield_h
|