FS2_Open
Open source remastering of the Freespace 2 engine
trainingmenu.cpp
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 
13 #include "graphics/2d.h"
14 #include "menuui/snazzyui.h"
15 #include "menuui/trainingmenu.h"
16 
17 
18 
19 // global to this file
20 static int trainingMenuBitmap;
21 static int trainingMenuMask;
22 static bitmap* trainingMenuMaskPtr;
23 static ubyte* mask_data;
24 static int Training_mask_w, Training_mask_h;
26 static int num_training;
27 
28 static int training_menu_inited=0;
29 
31 {
32  char background_img_filename[MAX_FILENAME_LEN];
33  char background_mask_filename[MAX_FILENAME_LEN];
34 
36 
37  read_menu_tbl(NOX("TRAINING MENU"), background_img_filename, background_mask_filename, region, &num_training);
38 
39  // load in the background bitmap (filenames are hard-coded temporarily)
40  trainingMenuBitmap = bm_load(background_img_filename);
41  if (trainingMenuBitmap < 0) {
42  Error(LOCATION,"Could not load in %s!",background_img_filename);
43  }
44 
45  trainingMenuMask = bm_load(background_mask_filename);
46  Training_mask_w = -1;
47  Training_mask_h = -1;
48 
49  if (trainingMenuMask < 0) {
50  Error(LOCATION,"Could not load in %s!",background_mask_filename);
51  }
52  else {
53  // get a pointer to bitmap by using bm_lock()
54  trainingMenuMaskPtr = bm_lock(trainingMenuMask, 8, BMP_AABITMAP);
55  mask_data = (ubyte*)trainingMenuMaskPtr->data;
56  bm_get_info(trainingMenuMask, &Training_mask_w, &Training_mask_h);
57  }
58 }
59 
61 {
62  if (training_menu_inited) {
63  // done with the bitmap, so unlock it
64  bm_unlock(trainingMenuMask);
65 
66  // unload the bitmaps
67  bm_release(trainingMenuBitmap);
68  bm_release(trainingMenuMask);
69 
70  training_menu_inited = 0;
72  }
73 }
74 
75 void training_menu_do_frame(float frametime)
76 {
77  int training_menu_choice;
78 
79  if (!training_menu_inited) {
81  training_menu_inited=1;
82  }
83 
84  gr_reset_clip();
85  gr_set_color(0,0,0);
86  GR_MAYBE_CLEAR_RES(trainingMenuBitmap);
87  // set the background
88  if(trainingMenuBitmap != -1){
89  gr_set_bitmap(trainingMenuBitmap);
91  }
92 
93  int snazzy_action = -1;
94  training_menu_choice = snazzy_menu_do(mask_data, Training_mask_w, Training_mask_h, num_training, region, &snazzy_action);
95  if ( snazzy_action != SNAZZY_CLICKED ){
96  training_menu_choice = -1;
97  }
98 
99  switch (training_menu_choice) {
100 
102  break;
104  // TODO: load the mission and start the briefing
105  break;
107  case ESC_PRESSED:
109  break;
110  case -1:
111  // nothing selected
112  break;
113  default:
114  Error(LOCATION, "Unknown option %d in training menu screen", training_menu_choice );
115  break;
116 
117  } // end switch
118 
119  gr_flip();
120 }
void bm_unlock(int handle)
Unlocks a bitmap.
Definition: bmpman.cpp:3005
#define MAX_FILENAME_LEN
Definition: pstypes.h:324
void gr_flip()
Definition: 2d.cpp:2113
#define GR_RESIZE_MENU
Definition: 2d.h:684
int snazzy_menu_do(ubyte *data, int mask_w, int mask_h, int num_regions, MENU_REGION *regions, int *action, int poll_key, int *key)
Definition: snazzyui.cpp:59
void training_menu_do_frame(float frametime)
int bm_get_info(int handle, int *w, int *h, ubyte *flags, int *nframes, int *fps)
Gets info on the bitmap indexed by handle.
Definition: bmpman.cpp:769
#define TRAINING_MENU_RETURN_MASK
Definition: trainingmenu.h:20
#define ESC_PRESSED
Definition: snazzyui.h:16
void training_menu_init()
#define GR_MAYBE_CLEAR_RES(bmap)
Definition: 2d.h:639
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
Definition: 2d.cpp:2105
int bm_release(int handle, int clear_render_targets)
Frees both a bitmap's data and it's associated slot.
Definition: bmpman.cpp:2603
#define BMP_AABITMAP
antialiased bitmap
Definition: bmpman.h:52
void gr_set_color(int r, int g, int b)
Definition: 2d.cpp:1188
#define gr_reset_clip
Definition: 2d.h:745
void snazzy_menu_close()
Definition: snazzyui.cpp:276
Definition: bmpman.h:101
bitmap * bm_lock(int handle, ubyte bpp, ubyte flags, bool nodebug)
Locks down the bitmap indexed by bitmapnum.
Definition: bmpman.cpp:1754
void snazzy_menu_init()
Definition: snazzyui.cpp:34
void training_menu_close()
unsigned char ubyte
Definition: pstypes.h:62
#define TRAINING_MENU_REPLAY_MISSIONS_MASK
Definition: trainingmenu.h:19
#define NOX(s)
Definition: pstypes.h:473
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later.
Definition: bmpman.cpp:1119
#define TRAINING_MENU_TRAINING_MISSIONS_MASK
Definition: trainingmenu.h:18
#define TRAINING_MENU_MAX_CHOICES
Definition: trainingmenu.h:15
#define LOCATION
Definition: pstypes.h:245
#define SNAZZY_CLICKED
Definition: snazzyui.h:29
ptr_u data
Pointer to data, or maybe offset into VRAM.
Definition: bmpman.h:109
void gr_bitmap(int _x, int _y, int resize_mode)
Definition: 2d.cpp:1303
void gameseq_post_event(int event)
void read_menu_tbl(char *menu_name, char *bkg_filename, char *mask_filename, MENU_REGION *regions, int *num_regions, int play_sound)
Definition: snazzyui.cpp:178