FS2_Open
Open source remastering of the Freespace 2 engine
hudmessage.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 _HUDMESSAGE_H
13 #define _HUDMESSAGE_H
14 
15 #include "anim/packunpack.h"
16 #include "graphics/generic.h"
17 #include "hud/hud.h"
18 
19 #define MAX_HUD_LINE_LEN 256 // maximum number of characters for a HUD message
20 
21 #define HUD_SOURCE_COMPUTER 0
22 #define HUD_SOURCE_TRAINING 1
23 #define HUD_SOURCE_HIDDEN 2
24 #define HUD_SOURCE_IMPORTANT 3
25 #define HUD_SOURCE_FAILED 4
26 #define HUD_SOURCE_SATISFIED 5
27 #define HUD_SOURCE_TERRAN_CMD 6
28 #define HUD_SOURCE_NETPLAYER 7
29 
30 #define HUD_SOURCE_TEAM_OFFSET 8 // must be higher than any previous hud source
31 
32 typedef struct HUD_message_data {
34  int source; // where this message came from so we can color code it
35  int x;
37 
38 typedef struct line_node {
41  fix time; // timestamp when message was added
42  int source; // who/what the source of the message was (for color coding)
43  int x;
44  int y;
46  char *text;
47 } line_node;
48 
50 
51 typedef struct Hud_display_info {
53  int y; // y Coordinate to draw message at
54  int target_y;
55  int total_life; // timestamp id to control how long a HUD message stays alive
57 
58 
59 void hud_scrollback_init();
61 void hud_scrollback_do_frame(float frametime);
62 void hud_scrollback_exit();
63 
64 void hud_init_msg_window();
66 int HUD_team_get_source(int team);
67 int HUD_source_get_team(int team);
68 void HUD_printf(const char *format, ...);
69 void hud_sourced_print(int source, const char *msg);
70 void HUD_sourced_printf(int source, const char *format, ...); // send hud message from specified source
71 void HUD_ship_sent_printf(int sh, const char *format, ...); // send hud message from a specific ship
72 void HUD_fixed_printf(float duration, color col, const char *format, ...); // Display a single message for duration seconds.
73 void HUD_init_fixed_text(); // Clear all pending fixed text.
74 
75 void HUD_add_to_scrollback(const char *text, int source);
76 void hud_add_line_to_scrollback(const char *text, int source, int t, int x, int y, int w);
77 void hud_add_msg_to_scrollback(const char *text, int source, int t);
79 
80 class HudGaugeMessages: public HudGauge // HUD_MESSAGE_LINES
81 {
82 protected:
83  // User-defined properties
84  int Max_lines;
85  int Max_width; // 620 for GR_640 and 1004 for GR_1024
87  int Step_size;
89  int Line_h;
91 
94 
97 
101 public:
103 
104  void initLineHeight(int h);
105  void initMaxLines(int lines);
106  void initMaxWidth(int width);
107  void initScrollTime(int ms);
108  void initStepSize(int h);
109  void initTotalLife(int ms);
110  void initHiddenByCommsMenu(bool hide);
111 
112  void clearMessages();
113  void processMessageBuffer();
114  void addPending(const char *text, int source, int x = 0);
115  void scrollMessages();
116  void preprocess();
117  void render(float frametime);
118  void initialize();
119  void pageIn();
120 };
121 
122 class HudGaugeTalkingHead: public HudGauge // HUD_TALKING_HEAD
123 {
124  hud_frames Head_frame;
125 
126  int Header_offsets[2];
127  int Anim_offsets[2];
128  int Anim_size[2];
129 
130  generic_anim *head_anim;
131 
132  int msg_id;
133 public:
135  void initBitmaps(const char *fname);
136  void initHeaderOffsets(int x, int y);
137  void initAnimOffsets(int x, int y);
138  void initAnimSizes(int w, int h);
139  void pageIn();
140  void render(float frametime);
141  void initialize();
142  bool canRender();
143  anim_instance* createAnim(int anim_start_frame, anim* anim_data);
144 };
145 
147 {
148 public:
150  void render(float frametime);
151  void pageIn();
152 };
153 
154 #endif
int source
Definition: hudmessage.h:42
GLenum GLsizei GLenum format
Definition: Gl.h:1509
void HUD_sourced_printf(int source, const char *format,...)
Definition: hudmessage.cpp:571
void render(float frametime)
Definition: hudmessage.cpp:445
HUD_message_data msg
Definition: hudmessage.h:52
void hud_add_line_to_scrollback(const char *text, int source, int t, int x, int y, int w)
SCP_queue< HUD_message_data > pending_messages
Definition: hudmessage.h:96
void hud_add_msg_to_scrollback(const char *text, int source, int t)
Definition: hudmessage.cpp:683
GLfloat GLfloat GLfloat GLfloat h
Definition: Glext.h:7280
void initMaxLines(int lines)
Definition: hudmessage.cpp:253
Definition: 2d.h:95
CButton * team
line_node Msg_scrollback_used_list
Definition: hudmessage.cpp:143
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
Definition: vmallocator.h:21
char * text
Definition: hudmessage.h:46
GLint GLsizei width
Definition: Gl.h:1505
Definition: hud.h:201
void initAnimOffsets(int x, int y)
void HUD_ship_sent_printf(int sh, const char *format,...)
Definition: hudmessage.cpp:546
void processMessageBuffer()
Definition: hudmessage.cpp:307
bool Scroll_in_progress
Definition: hudmessage.h:99
void HUD_add_to_scrollback(const char *text, int source)
Definition: hudmessage.cpp:642
void initHiddenByCommsMenu(bool hide)
Definition: hudmessage.cpp:283
void hud_free_scrollback_list()
Definition: hudmessage.cpp:724
void hud_scrollback_exit()
void addPending(const char *text, int source, int x=0)
Definition: hudmessage.cpp:345
struct Hud_display_info Hud_display_info
Definition: hud.h:32
void HUD_init_fixed_text()
Definition: hudmessage.cpp:207
int HUD_team_get_source(int team)
Definition: hudmessage.cpp:515
struct HUD_message_data HUD_message_data
GLdouble GLdouble t
Definition: Glext.h:5329
void initBitmaps(const char *fname)
GLint GLint GLint GLint GLint x
Definition: Glext.h:5182
long fix
Definition: pstypes.h:54
void render(float frametime)
SCP_string text
Definition: hudmessage.h:33
void initAnimSizes(int w, int h)
void HUD_fixed_printf(float duration, color col, const char *format,...)
Definition: hudmessage.cpp:470
void hud_init_msg_window()
Definition: hudmessage.cpp:220
GLubyte GLubyte GLubyte GLubyte w
Definition: Glext.h:5679
void hud_scrollback_close()
Definition: hudmessage.cpp:979
void hud_sourced_print(int source, const char *msg)
Definition: hudmessage.cpp:590
void initMaxWidth(int width)
Definition: hudmessage.cpp:258
int underline_width
Definition: hudmessage.h:45
struct line_node line_node
void HUD_printf(const char *format,...)
Definition: hudmessage.cpp:527
GLsizei GLsizei GLchar * source
Definition: Glext.h:5625
bool Hidden_by_comms_menu
Definition: hudmessage.h:90
void initTotalLife(int ms)
Definition: hudmessage.cpp:273
void initStepSize(int h)
Definition: hudmessage.cpp:268
void initHeaderOffsets(int x, int y)
int HUD_source_get_team(int team)
Definition: hudmessage.cpp:521
line_node * prev
Definition: hudmessage.h:40
void hud_clear_msg_buffer()
Definition: hudmessage.cpp:243
void initLineHeight(int h)
Definition: hudmessage.cpp:278
void render(float frametime)
void initScrollTime(int ms)
Definition: hudmessage.cpp:263
void hud_scrollback_do_frame(float frametime)
Definition: hudmessage.cpp:998
anim_instance * createAnim(int anim_start_frame, anim *anim_data)
fix time
Definition: hudmessage.h:41
SCP_vector< Hud_display_info > active_messages
Definition: hudmessage.h:95
line_node * next
Definition: hudmessage.h:39
void hud_scrollback_init()
Definition: hudmessage.cpp:931
GLint y
Definition: Gl.h:1505