FS2_Open
Open source remastering of the Freespace 2 engine
hudets.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _HUD_ETS_H
13 #define _HUD_ETS_H
14 
15 #include "hud/hud.h"
16 
17 class object;
18 
19 #define ENERGY_DIVERT_DELTA 0.2f // percentage of energy transferred in a shield->weapon or weapon->shield energy transfer
20 #define INTIAL_SHIELD_RECHARGE_INDEX 4 // default shield charge rate (index in Energy_levels[])
21 #define INTIAL_WEAPON_RECHARGE_INDEX 4 // default weapon charge rate (index in Energy_levels[])
22 #define INTIAL_ENGINE_RECHARGE_INDEX 4 // default engine charge rate (index in Energy_levels[])
23 
24 #define NUM_ENERGY_LEVELS 13
25 #define MAX_ENERGY_INDEX (NUM_ENERGY_LEVELS - 1)
26 
27 #define AI_MODIFY_ETS_INTERVAL 500 // time between ets modifications for ai's (in milliseconds)
28 
29 #define ZERO_INDEX 0
30 #define ONE_THIRD_INDEX 4
31 #define ONE_HALF_INDEX 6
32 #define ALL_INDEX 12
33 
34 #define HAS_ENGINES (1<<0)
35 #define HAS_SHIELDS (1<<1)
36 #define HAS_WEAPONS (1<<2)
37 
38 #define ETS_RECHARGE_RATE 4.0f // Recharge this percent of total shields/second
39 
40 const int num_retail_ets_gauges = 3;
41 
42 extern float Energy_levels[];
43 extern int Weapon_energy_cheat;
44 
46 
47 void update_ets(object* obj, float fl_frametime);
48 void ets_init_ship(object* obj);
49 void ai_manage_ets(object* obj);
50 
51 void increase_recharge_rate(object* obj, SYSTEM_TYPE enum_value);
52 void decrease_recharge_rate(object* obj, SYSTEM_TYPE enum_value);
53 void set_default_recharge_rates(object* obj);
54 
55 void transfer_energy_to_shields(object* obj);
56 void transfer_energy_to_weapons(object* obj);
57 
58 float ets_get_max_speed(object* objp, float engine_energy);
59 void sanity_check_ets_inputs(int (&ets_indexes)[num_retail_ets_gauges]);
60 bool validate_ship_ets_indxes(const int &ship_idx, int (&ets_indexes)[num_retail_ets_gauges]);
61 void zero_one_ets (int *reduce, int *add1, int *add2);
62 
63 class HudGaugeEts: public HudGauge // HUD_ETS_GAUGE
64 {
65 protected:
68 
69  char Letter;
71  int Top_offsets[2];
73 
74  int ETS_bar_h;
75 public:
76  HudGaugeEts();
77  HudGaugeEts(int _gauge_object, int _system_type);
78  void initLetterOffsets(int _x, int _y);
79  void initTopOffsets(int _x, int _y);
80  void initBottomOffsets(int _x, int _y);
81  void initLetter(char _letter); // obligatory PC Load Letter joke. (Swifty)
82  void initBarHeight(int _ets_bar_h);
83  void initBitmaps(char *fname);
84  virtual void blitGauge(int index);
85  virtual void render(float frametime);
86  void pageIn();
87 };
88 
90 {
91 public:
93  void render(float frametime);
94 };
95 
97 {
98 public:
100  void render(float frametime);
101 };
102 
104 {
105 public:
107  void render(float frametime);
108 };
109 
111 {
112 protected:
115 public:
117  void render(float frametime);
118  void initLetters(char *_letters);
119  void initGaugePositions(int *_gauge_positions);
120 };
121 
122 #endif
void initBottomOffsets(int _x, int _y)
Definition: hudets.cpp:809
void increase_recharge_rate(object *obj, SYSTEM_TYPE enum_value)
Definition: hudets.cpp:349
void render(float frametime)
Definition: hudets.cpp:908
GLuint index
Definition: Glext.h:5608
int ETS_bar_h
Definition: hudets.h:74
bool validate_ship_ets_indxes(const int &ship_idx, int(&ets_indexes)[num_retail_ets_gauges])
Definition: hudets.cpp:722
hud_frames Ets_bar
Definition: hudets.h:66
void initLetterOffsets(int _x, int _y)
Definition: hudets.cpp:797
void set_default_recharge_rates(object *obj)
Definition: hudets.cpp:275
object * objp
Definition: lua.cpp:3105
void transfer_energy_to_weapons(object *obj)
Definition: hudets.cpp:632
Definition: hud.h:201
void decrease_recharge_rate(object *obj, SYSTEM_TYPE enum_value)
Definition: hudets.cpp:473
void initGaugePositions(int *_gauge_positions)
Definition: hudets.cpp:980
void render(float frametime)
Definition: hudets.cpp:1029
virtual void blitGauge(int index)
Definition: hudets.cpp:840
const int num_retail_ets_gauges
Definition: hudets.h:40
int Weapon_energy_cheat
Definition: hudets.cpp:27
int Letter_offsets[2]
Definition: hudets.h:70
float Energy_levels[]
Definition: hudets.cpp:26
void transfer_energy_to_shields(object *obj)
Definition: hudets.cpp:614
void ets_init_ship(object *obj)
Definition: hudets.cpp:34
void initTopOffsets(int _x, int _y)
Definition: hudets.cpp:803
Definition: hud.h:32
char Letter
Definition: hudets.h:69
int Gauge_positions[num_retail_ets_gauges]
Definition: hudets.h:114
int Top_offsets[2]
Definition: hudets.h:71
virtual void render(float frametime)
Definition: hudets.cpp:828
void render(float frametime)
Definition: hudets.cpp:992
void initBitmaps(char *fname)
Definition: hudets.cpp:820
int System_type
Definition: hudets.h:67
Definition: object.h:141
SYSTEM_TYPE
Definition: hudets.h:45
void render(float frametime)
Definition: hudets.cpp:1065
void initLetters(char *_letters)
Definition: hudets.cpp:970
Definition: hudets.h:45
void initLetter(char _letter)
Definition: hudets.cpp:815
void sanity_check_ets_inputs(int(&ets_indexes)[num_retail_ets_gauges])
Definition: hudets.cpp:681
float ets_get_max_speed(object *objp, float engine_energy)
Definition: hudets.cpp:147
void ai_manage_ets(object *obj)
Definition: hudets.cpp:200
char Letters[num_retail_ets_gauges]
Definition: hudets.h:113
GLsizei GLsizei GLuint * obj
Definition: Glext.h:5619
void pageIn()
Definition: hudets.cpp:832
void update_ets(object *obj, float fl_frametime)
Definition: hudets.cpp:63
void initBarHeight(int _ets_bar_h)
Definition: hudets.cpp:792
void zero_one_ets(int *reduce, int *add1, int *add2)
Definition: hudets.cpp:651
Definition: hudets.h:45
int Bottom_offsets[2]
Definition: hudets.h:72
Definition: hudets.h:45