27 static int Snazzy_mouse_left_was_down;
31 Snazzy_mouse_left_was_down = 0;
62 int choice = -1, mouse_on_choice = -1;
63 ubyte pixel_value = 0;
73 if((y < 0) || (y > mask_h - 1) || (x < 0) || (x > mask_w - 1)){
77 offset = y * mask_w +
x;
78 pixel_value = *(data + (
offset));
93 for (i=0; i < num_regions; i++) {
94 if (pixel_value == regions[i].
mask) {
95 choice = regions[
i].
mask;
96 if ( regions[i].click_sound != -1 ) {
110 for (i=0; i<num_regions; i++) {
111 if ( !regions[i].key )
114 choice = regions[
i].
mask;
115 if ( regions[i].click_sound != -1 ) {
125 for (i=0; i<num_regions; i++) {
126 if (pixel_value == regions[i].
mask) {
127 mouse_on_choice = regions[
i].
mask;
135 if ((mouse_on_choice >= 0) && (mouse_on_choice <= (num_regions)) && (i >=0)) {
140 Snazzy_mouse_left_was_down = 1;
142 Snazzy_mouse_left_was_down = 0;
150 if ( mouse_on_choice > -1 ) {
152 return mouse_on_choice;
185 char seps[] =
NOX(
" ,\t");
199 while (
cfgets(tmp_line, 132, fp)) {
200 p1 = strchr(tmp_line,
'\n');
if (p1) *p1 =
'\0';
201 p1 = strchr(tmp_line,
';');
if (p1) *p1 =
'\0';
202 p1 = p3 = strchr( tmp_line,
'[' );
204 if (p3 && state == 1) {
211 p2 = strchr( tmp_line,
']' );
213 if (!
stricmp( ++p1, menu_name )) state = 1;
222 p1 = strchr( tmp_line,
'\"' );
224 p2 = strchr( tmp_line+1,
'\"' );
226 nprintf((
"Warning",
"Error parsing menu file\n"));
231 strcpy_s(regions[*num_regions].text,++p1);
235 token = strtok( p2, seps );
236 regions[*num_regions].
mask = atoi(token);
239 token = strtok( NULL, seps );
240 regions[*num_regions].
key = token[0];
249 *num_regions = *num_regions + 1;
256 token = strtok( tmp_line, seps );
260 strcpy(bkg_filename, token);
263 token = strtok( NULL, seps );
264 strcpy(mask_filename, token);
#define MOUSE_LEFT_BUTTON
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)
void gr_set_color_fast(color *dst)
void snazzy_menu_add_region(MENU_REGION *region, const char *text, int mask, int key, int click_sound)
int mouse_get_pos_unscaled(int *xpos, int *ypos)
char * cfgets(char *buf, int n, CFILE *cfile)
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
GLint GLint GLint GLint GLint x
SCP_vector< game_snd > Snds_iface
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
GLenum GLsizei GLenum GLenum const GLvoid * data
int cfclose(CFILE *cfile)
void gr_set_font(int fontnum)
void _cdecl gr_printf_menu(int x, int y, const char *format,...)
void read_menu_tbl(char *menu_name, char *bkg_filename, char *mask_filename, MENU_REGION *regions, int *num_regions, int play_sound)
int shifted_ascii_table[]