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 __HUDWINGMAN_STATUS_H__
13 #define __HUDWINGMAN_STATUS_H__
14 
15 #include "hud/hud.h"
16 
17 struct wing;
18 class ship;
19 class p_object;
20 
21 void	hud_init_wingman_status_gauge();
22 void	hud_wingman_status_update();
23 void	hud_wingman_status_init_flash();
24 void	hud_set_wingman_status_dead(int wing_index, int wing_pos);
25 void	hud_set_wingman_status_departed(int wing_index, int wing_pos);
26 void	hud_set_wingman_status_alive( int wing_index, int wing_pos);
27 void	hud_set_wingman_status_none( int wing_index, int wing_pos);
28 void	hud_wingman_status_start_flash(int wing_index, int wing_pos);
29 void	hud_wingman_status_set_index(wing *wingp, ship *shipp, p_object *pobjp);
30 
31 class HudGaugeWingmanStatus: public HudGauge
32 {
33 protected:
34 	hud_frames Wingman_status_left;
35 	hud_frames Wingman_status_middle;
36 	hud_frames Wingman_status_right;
37 	hud_frames Wingman_status_dots;
38 
39 	int header_offsets[2];
40 	bool fixed_header_position;
41 	int left_frame_end_x;
42 	int right_frame_start_offset;
43 
44 	int actual_origin[2];
45 	int single_wing_offsets[2];
46 	int multiple_wing_offsets[2];
47 	int wing_width;
48 	int wing_name_offsets[2];
49 
50 	enum {GROW_LEFT, GROW_RIGHT, GROW_DOWN};
51 	int grow_mode;
52 
53 	int wingmate_offsets[MAX_SHIPS_PER_WING][2];
54 
55 	int next_flash[MAX_SQUADRON_WINGS][MAX_SHIPS_PER_WING];
56 	int flash_status;
57 public:
58 	HudGaugeWingmanStatus();
59 	void initBitmaps(char *fname_left, char *fname_middle, char *fname_right, char *fname_dots);
60 	void initHeaderOffsets(int x, int y);
61 	void initFixedHeaderPosition(bool fixed);
62 	void initLeftFrameEndX(int x);
63 	void initSingleWingOffsets(int x, int y);
64 	void initMultipleWingOffsets(int x, int y);
65 	void initWingWidth(int w);
66 	void initRightBgOffset(int offset);
67 	void initWingNameOffsets(int x, int y);
68 	void initWingmate1Offsets(int x, int y);
69 	void initWingmate2Offsets(int x, int y);
70 	void initWingmate3Offsets(int x, int y);
71 	void initWingmate4Offsets(int x, int y);
72 	void initWingmate5Offsets(int x, int y);
73 	void initWingmate6Offsets(int x, int y);
74 	void initGrowMode(int mode);
75 	void pageIn() override;
76 	void initialize() override;
77 	void render(float frametime) override;
78 	void renderBackground(int num_wings_to_draw);
79 	void renderDots(int wing_index, int screen_index, int num_wings_to_draw);
80 	void initFlash();
81 	bool maybeFlashStatus(int wing_index, int wing_pos);
82 };
83 
84 #endif
85