#endif
{
MAIN_CONTROL_FIRST_LEVEL,
- NULL, -1,
+ &menu.main.button.first_level, IMG_MENU_BUTTON_FIRST_LEVEL,
&menu.main.text.first_level, &main_text_first_level,
NULL, NULL,
},
{
MAIN_CONTROL_LAST_LEVEL,
- NULL, -1,
+ &menu.main.button.last_level, IMG_MENU_BUTTON_LAST_LEVEL,
&menu.main.text.last_level, &main_text_last_level,
NULL, NULL,
},
{
MAIN_CONTROL_LEVEL_NUMBER,
- NULL, -1,
+ &menu.main.button.level_number, IMG_MENU_BUTTON_LEVEL_NUMBER,
&menu.main.text.level_number, &main_text_level_number,
NULL, NULL,
},
if (pos_text != NULL) /* (x/y may be -1/-1 here) */
{
- /* calculate size for non-clickable text -- needed for text alignment */
- boolean calculate_text_size = (pos_button == NULL && text != NULL);
+ /* calculate text size -- needed for text alignment */
+ boolean calculate_text_size = (text != NULL);
if (pos_text->width == -1 || calculate_text_size)
pos_text->width = text_width;
FreeScreenGadgets();
CreateScreenGadgets();
+ /* may be required if audio buttons shown on tape and changed in setup menu */
+ FreeGameButtons();
+ CreateGameButtons();
+
/* map gadgets for main menu screen */
MapTapeButtons();
MapScreenMenuGadgets(SCREEN_MASK_MAIN);
/* press 'Enter' to keep the existing key binding */
if (key == KSYM_Return ||
+#if defined(TARGET_SDL2)
key == KSYM_Menu ||
+#endif
key == KSYM_space)
{
step_nr++;
}
- else if (key == KSYM_BackSpace ||
- key == KSYM_Back)
+ else if (key == KSYM_BackSpace
+#if defined(TARGET_SDL2)
+ ||
+ key == KSYM_Back
+#endif
+ )
{
if (step_nr == 0)
{
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
+ GDI_IMAGE_ID, gfx_unpressed,
GDI_INFO_TEXT, menubutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
+ GDI_IMAGE_ID, gfx_unpressed,
GDI_INFO_TEXT, scrollbutton_info[i].infotext,
GDI_X, x,
GDI_Y, y,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
+ GDI_IMAGE_ID, gfx_unpressed,
GDI_INFO_TEXT, scrollbar_info[i].infotext,
GDI_X, x,
GDI_Y, y,
{
int id = gi->custom_id;
int button = gi->event.button;
- int step = (button == 1 ? 1 : button == 2 ? 5 : 10);
+ int step = (button == MB_LEFTBUTTON ? 1 :
+ button == MB_MIDDLEBUTTON ? 5 :
+ button == MB_RIGHTBUTTON ? 10 : 1);
switch (id)
{
break;
}
}
+
+void DumpScreenIdentifiers()
+{
+ int i;
+
+ Print("Active screen elements on current screen:\n");
+
+ for (i = 0; main_controls[i].nr != -1; i++)
+ {
+ struct MainControlInfo *mci = &main_controls[i];
+
+ if (mci->button_graphic != -1)
+ {
+ char *token = getTokenFromImageID(mci->button_graphic);
+
+ Print("- '%s'\n", token);
+ }
+ }
+
+ Print("Done.\n");
+}
+
+boolean DoScreenAction(int image_id)
+{
+ int i;
+
+ if (game_status != GAME_MODE_MAIN)
+ return FALSE;
+
+ for (i = 0; main_controls[i].nr != -1; i++)
+ {
+ struct MainControlInfo *mci = &main_controls[i];
+ struct MenuPosInfo *pos = mci->pos_button;
+
+ if (mci->button_graphic == image_id)
+ {
+ int x = mSX + pos->x;
+ int y = mSY + pos->y;
+
+ HandleMainMenu(x, y, 0, 0, MB_MENU_CHOICE);
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}