28 #define NUM_FVW_SETTINGS 2
81 #define NUM_FVW_BUTTONS 3
82 #define FVW_BUTTON_ACCEPT 0
83 #define FVW_BUTTON_SCROLL_UP 1
84 #define FVW_BUTTON_SCROLL_DOWN 2
159 static int Top_fiction_viewer_text_line = 0;
160 static int Fiction_viewer_text_max_lines = 0;
164 static int Fiction_viewer_bitmap = -1;
165 static int Fiction_viewer_inited = 0;
167 static int Fiction_viewer_old_fontnum = -1;
168 static int Fiction_viewer_fontnum = -1;
170 static char *Fiction_viewer_text =
nullptr;
171 static int Fiction_viewer_voice = -1;
173 static int Fiction_viewer_ui = -1;
175 static void use_fv_font()
178 if (Fiction_viewer_fontnum >= 0)
185 Fiction_viewer_old_fontnum = -1;
189 static void use_std_font()
192 if (Fiction_viewer_old_fontnum >= 0)
212 Top_fiction_viewer_text_line--;
213 if (Top_fiction_viewer_text_line < 0)
215 Top_fiction_viewer_text_line = 0;
226 Top_fiction_viewer_text_line++;
229 Top_fiction_viewer_text_line--;
255 Fiction_viewer_slider.
forceUp();
272 if (Fiction_viewer_inited)
286 Fiction_viewer_bitmap = -1;
291 if (Fiction_viewer_bitmap < 0)
293 else if (Fiction_viewer_ui < 0)
294 Fiction_viewer_ui = 0;
298 if (Fiction_viewer_bitmap < 0)
300 if (Fiction_viewer_ui < 0)
303 for (Fiction_viewer_ui =
NUM_FVW_SETTINGS - 1; Fiction_viewer_ui >= 0; Fiction_viewer_ui--)
306 if (Fiction_viewer_bitmap >= 0)
318 if (Fiction_viewer_ui < 0)
320 Warning(
LOCATION,
"No fiction viewer graphics -- cannot display fiction viewer!");
357 Fiction_viewer_slider.
create(&Fiction_viewer_window,
369 if (Fiction_viewer_voice >= 0)
374 Fiction_viewer_inited = 1;
380 if (!Fiction_viewer_inited)
387 Fiction_viewer_window.
destroy();
393 if (Fiction_viewer_bitmap >= 0)
395 Fiction_viewer_bitmap = -1;
403 Fiction_viewer_inited = 0;
412 if (!Fiction_viewer_inited)
438 if (Fiction_viewer_bitmap >= 0)
445 Fiction_viewer_window.
draw();
473 if (Fiction_viewer_voice >= 0)
481 if (Fiction_viewer_voice >= 0)
490 return !Fiction_viewer_stages.empty();
492 return (Fiction_viewer_text !=
nullptr);
511 if (Fiction_viewer_text !=
nullptr)
513 Fiction_viewer_text =
nullptr;
515 Fiction_viewer_stages.clear();
518 Fiction_viewer_ui = -1;
520 Top_fiction_viewer_text_line = 0;
522 if (Fiction_viewer_voice >= 0)
525 Fiction_viewer_voice = -1;
531 Assertion(stage >= 0 && static_cast<size_t>(stage) < Fiction_viewer_stages.size(),
"stage parameter must be in range of Fiction_viewer_stages!");
534 if (Fiction_viewer_text !=
nullptr)
536 Assertion(Fiction_viewer_text ==
nullptr,
"Fiction viewer text should be a null pointer, but instead is '%s'. Trace out and fix!\n", Fiction_viewer_text);
549 Fiction_viewer_ui = ui_index;
569 Fiction_viewer_text = (
char *)
vm_malloc(file_length + 1);
570 Fiction_viewer_text[file_length] =
'\0';
573 cfread(Fiction_viewer_text, file_length, 1, fp);
void gr_rect(int x, int y, int w, int h, int resize_mode)
void set_highlight_action(void(*_user_function)(void))
int gr_get_fontnum(const char *filename)
void fiction_viewer_scroll_down()
int gr_get_current_fontnum()
void fiction_viewer_init()
int Num_brief_text_lines[MAX_TEXT_STREAMS]
GLfloat GLfloat GLfloat GLfloat h
int Mission_music[NUM_SCORES]
color Color_more_indicator
int cfread(void *buf, int elsize, int nelem, CFILE *fp)
char ui_name[NAME_LENGTH]
int brief_color_text_init(const char *src, int w, const char default_color, int instance, int max_lines, const bool append)
void fiction_viewer_unpause()
void fiction_viewer_pause()
void fiction_viewer_load(int stage)
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
#define GR_NUM_RESOLUTIONS
SCP_vector< fiction_viewer_stage > Fiction_viewer_stages
__inline void gr_string(int x, int y, const char *string, int resize_mode=GR_RESIZE_FULL)
int Fiction_viewer_active_stage
general failure sound for any event
char story_filename[MAX_FILENAME_LEN]
void fiction_viewer_reset()
#define Assertion(expr, msg,...)
int Fiction_viewer_text_coordinates[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][4]
char * Fiction_viewer_screen_filename[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
#define GR_MAYBE_CLEAR_RES(bmap)
void common_music_close()
char voice_filename[MAX_FILENAME_LEN]
#define SCORE_FICTION_VIEWER
void gr_set_color_fast(color *dst)
int red_alert_mission(void)
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
int bm_release(int handle, int clear_render_targets)
Frees both a bitmap's data and it's associated slot.
void set_mask_bmap(char *fname)
int set_bmaps(char *ani_filename, int nframes=3, int start_frame=1)
int Default_fiction_viewer_ui
void fiction_viewer_scroll_capture()
int mission_has_cmd_brief()
#define FVW_BUTTON_ACCEPT
void create(UI_WINDOW *wnd, int _x, int _y, int _w, int _h, int _numberItems, char *_bitmapSliderControl, void(*_upCallback)(), void(*_downCallback)(), void(*_captureCallback)())
char * Fiction_viewer_slider_filename[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
char default_fiction_viewer_color
ui_button_info Fiction_viewer_buttons[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][NUM_FVW_BUTTONS]
void fiction_viewer_button_pressed(int button)
void audiostream_unpause(int i, bool via_sexp_or_script)
char * Fiction_viewer_screen_mask[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS]
const char * XSTR(const char *str, int index)
bool mission_has_fiction()
char font_filename[MAX_FILENAME_LEN]
#define FVW_BUTTON_SCROLL_UP
void set_hotkey(int keycode)
#define FVW_BUTTON_SCROLL_DOWN
void fiction_viewer_exit()
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later.
GLboolean GLboolean GLboolean b
void audiostream_close_file(int i, int fade)
scroll pressed (and scroll)
char * Fiction_viewer_ui_names[NUM_FVW_SETTINGS]
void link_hotspot(int num)
void create(UI_WINDOW *wnd, char *_text, int _x, int _y, int _w, int _h, int do_repeat=0, int ignore_focus=0)
void fiction_viewer_do_frame(float frametime)
void fiction_viewer_close()
void create(int _x, int _y, int _w, int _h, int _flags, int _f_id=-1)
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
void common_play_highlight_sound()
void audiostream_play(int i, float volume, int looping)
int brief_render_text(int line_offset, int x, int y, int h, float frametime, int instance, int line_spacing)
void gr_bitmap(int _x, int _y, int resize_mode)
int audiostream_open(const char *filename, int type)
void audiostream_pause(int i, bool via_sexp_or_script)
int fiction_viewer_ui_name_to_index(const char *ui_name)
int Fiction_viewer_slider_coordinates[NUM_FVW_SETTINGS][GR_NUM_RESOLUTIONS][4]
void gamesnd_play_iface(int n)
int cfclose(CFILE *cfile)
struct ui_button_info ui_button_info
void gr_set_font(int fontnum)
int process(int key_in=-1, int process_mouse=1)
void gameseq_post_event(int event)
int cfilelength(CFILE *cfile)
void fiction_viewer_scroll_up()
float Master_voice_volume
void common_music_init(int score_index)