#define MENU_INFO_FONT_TEXT FONT_TEXT_3
#define MENU_INFO_FONT_FOOT FONT_TEXT_4
#define MENU_INFO_SPACE_HEAD (menu.headline2_spacing_info[info_mode])
-#define MENU_SCREEN_INFO_XSTART 16
-#define MENU_SCREEN_INFO_YSTART1 100
+#define MENU_SCREEN_INFO_SPACE_LEFT (menu.left_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_RIGHT (menu.right_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_TOP (menu.top_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_BOTTOM (menu.bottom_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_YSTART1 MENU_SCREEN_INFO_SPACE_TOP
#define MENU_SCREEN_INFO_YSTART2 (MENU_SCREEN_INFO_YSTART1 + \
getMenuTextStep(MENU_INFO_SPACE_HEAD, \
MENU_INFO_FONT_TITLE))
#define MENU_SCREEN_INFO_YSTEP (TILEY + 4)
-#define MENU_SCREEN_INFO_YBOTTOM (SYSIZE - 20)
+#define MENU_SCREEN_INFO_YBOTTOM (SYSIZE - MENU_SCREEN_INFO_SPACE_BOTTOM)
#define MENU_SCREEN_INFO_YSIZE (MENU_SCREEN_INFO_YBOTTOM - \
MENU_SCREEN_INFO_YSTART2 - \
TILEY / 2)
char *text;
} scaling_types_list[] =
{
- { SCALING_QUALITY_NEAREST, "None" },
+ { SCALING_QUALITY_NEAREST, "Off" },
{ SCALING_QUALITY_LINEAR, "Linear" },
{ SCALING_QUALITY_BEST, "Anisotropic" },
char *text;
} touch_controls_list[] =
{
+ { TOUCH_CONTROL_OFF, "Off" },
{ TOUCH_CONTROL_VIRTUAL_BUTTONS, "Virtual Buttons" },
{ TOUCH_CONTROL_WIPE_GESTURES, "Wipe Gestures" },
{ TOUCH_CONTROL_FOLLOW_FINGER, "Follow Finger" },
static void InitializeMainControls()
{
- TreeInfo *graphics_current =
- getArtworkTreeInfoForUserLevelSet(ARTWORK_TYPE_GRAPHICS);
boolean local_team_mode = (!options.network && setup.team_mode);
int i;
main_text_level_imported_by = leveldir_current->imported_by;
main_text_level_tested_by = leveldir_current->tested_by;
- main_text_title_1 = (leveldir_current->program_title ?
- leveldir_current->program_title :
- graphics_current->program_title ?
- graphics_current->program_title :
- setup.internal.program_title);
- main_text_title_2 = (leveldir_current->program_copyright ?
- leveldir_current->program_copyright :
- graphics_current->program_copyright ?
- graphics_current->program_copyright :
- setup.internal.program_copyright);
- main_text_title_3 = (leveldir_current->program_company ?
- leveldir_current->program_company :
- graphics_current->program_company ?
- graphics_current->program_company :
- setup.internal.program_company);
+ main_text_title_1 = getConfigProgramTitleString();
+ main_text_title_2 = getConfigProgramCopyrightString();
+ main_text_title_3 = getConfigProgramCompanyString();
/* set main control screen positions to dynamically determined values */
for (i = 0; main_controls[i].nr != -1; i++)
void DrawHeadline()
{
- DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, getProgramTitleString());
- DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2,
- setup.internal.program_copyright);
+ DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, main_text_title_1);
+ DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2, main_text_title_2);
}
void DrawTitleScreenImage(int nr, boolean initial)
int font_foot = MENU_INFO_FONT_FOOT;
int spacing_title = menu.headline1_spacing_info[info_mode];
int ystep_title = getMenuTextStep(spacing_title, font_title);
- int ystart1 = mSY - SY + 100;
+ int ystart1 = mSY - SY + MENU_SCREEN_INFO_YSTART1;
int ystart2 = ystart1 + ystep_title;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO);
static int infoscreen_frame[MAX_INFO_ELEMENTS_ON_SCREEN];
int font_title = MENU_INFO_FONT_TITLE;
int font_foot = MENU_INFO_FONT_FOOT;
- int xstart = mSX + MENU_SCREEN_INFO_XSTART;
+ int xstart = mSX + MENU_SCREEN_INFO_SPACE_LEFT;
int ystart1 = mSY - SY + MENU_SCREEN_INFO_YSTART1;
int ystart2 = mSY + MENU_SCREEN_INFO_YSTART2;
int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
int font_width = getFontWidth(font_nr);
int font_height = getFontHeight(font_nr);
int yoffset = (TILEX - 2 * font_height) / 2;
- int xstart = mSX + MINI_TILEX + TILEX + MINI_TILEX;
+ int xstart = mSX + MENU_SCREEN_INFO_SPACE_LEFT + TILEX + MINI_TILEX;
int ystart = mSY + MENU_SCREEN_INFO_YSTART2 + yoffset;
int ystep = TILEY + 4;
- int pad_x = xstart - SX;
- int max_chars_per_line = (SXSIZE - pad_x - MINI_TILEX) / font_width;
+ int pad_left = xstart - SX;
+ int pad_right = MENU_SCREEN_INFO_SPACE_RIGHT;
+ int max_chars_per_line = (SXSIZE - pad_left - pad_right) / font_width;
int max_lines_per_text = 2;
char *text = NULL;
int spacing_head = menu.headline2_spacing_info[info_mode];
int ystep_title = getMenuTextStep(spacing_title, font_title);
int ystep_head = getMenuTextStep(spacing_head, font_head);
- int ystart = mSY - SY + 100;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ystart = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
if (button == MB_MENU_INITIALIZE)
{
int ystep_head = getMenuTextStep(spacing_head, font_head);
int ystep_para = getMenuTextStep(spacing_para, font_text);
int ystep_line = getMenuTextStep(spacing_line, font_text);
- int ystart = mSY - SY + 100;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ystart = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
ClearField();
DrawHeadline();
int ystep_head = getMenuTextStep(spacing_head, font_head);
int ystep_para = getMenuTextStep(spacing_para, font_text);
int ystep_line = getMenuTextStep(spacing_line, font_text);
- int ystart = mSY - SY + 100;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ystart = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_PROGRAM);
int ystep_head = getMenuTextStep(spacing_head, font_head);
int ystep_para = getMenuTextStep(spacing_para, font_text);
int ystep_line = getMenuTextStep(spacing_line, font_text);
- int ystart = mSY - SY + 100;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ystart = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
int xstart1 = mSX - SX + 2 * xstep;
int xstart2 = mSX - SX + 18 * xstep;
int xstart3 = mSX - SX + 28 * xstep;
struct TitleMessageInfo *tmi = &readme;
char *filename = getLevelSetInfoFilename();
char *title = "Level Set Information:";
- int ystart = mSY - SY + 100;
- int ybottom = mSY - SY + SYSIZE - 20;
+ int ystart = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+ int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
if (filename == NULL)
{
/* if height set to "-1", automatically determine by playfield height */
if (tmi->height == -1)
- tmi->height = SYSIZE - 20 - tmi->y - 10;
+ tmi->height = MENU_SCREEN_INFO_YBOTTOM - tmi->y - 10;
/* if chars set to "-1", automatically determine by text and font width */
if (tmi->chars == -1)
"Joystick3",
"Joystick4"
};
- int text_font_nr = (active ? FONT_MENU_1_ACTIVE : FONT_MENU_1);
+ int font_nr_menu = (active ? FONT_MENU_1_ACTIVE : FONT_MENU_1);
+ int font_nr_info = FONT_MENU_1;
+ int font_nr_name = FONT_VALUE_OLD;
+ int font_nr_on = FONT_VALUE_1;
+ int font_nr_off = FONT_VALUE_OLD;
+ int pos = 4;
+
+ if (SCR_FIELDX < SCR_FIELDX_DEFAULT)
+ {
+ font_nr_info = FONT_MENU_2;
+ font_nr_on = FONT_VALUE_NARROW;
+ font_nr_off = FONT_VALUE_OLD_NARROW;
+ }
custom_key = setup.input[player_nr].key;
int joystick_nr = getJoystickNrFromDeviceName(device_name);
boolean joystick_active = CheckJoystickOpened(joystick_nr);
char *text = joystick_name[joystick_nr];
- int font_nr = (joystick_active ? FONT_VALUE_1 : FONT_VALUE_OLD);
+ int font_nr = (joystick_active ? font_nr_on : font_nr_off);
DrawText(mSX + 8 * 32, mSY + 3 * 32, text, font_nr);
- DrawText(mSX + 32, mSY + 4 * 32, "Configure", text_font_nr);
+ DrawText(mSX + 32, mSY + 4 * 32, "Configure", font_nr_menu);
}
else
{
- DrawText(mSX + 8 * 32, mSY + 3 * 32, "Keyboard ", FONT_VALUE_1);
- DrawText(mSX + 1 * 32, mSY + 4 * 32, "Customize", text_font_nr);
+ DrawText(mSX + 8 * 32, mSY + 3 * 32, "Keyboard ", font_nr_on);
+ DrawText(mSX + 1 * 32, mSY + 4 * 32, "Customize", font_nr_menu);
}
- DrawText(mSX + 32, mSY + 5 * 32, "Actual Settings:", FONT_MENU_1);
+ DrawText(mSX + 32, mSY + 5 * 32, "Actual Settings:", font_nr_info);
- drawCursorXY(1, 4, IMG_MENU_BUTTON_LEFT);
- drawCursorXY(1, 5, IMG_MENU_BUTTON_RIGHT);
- drawCursorXY(1, 6, IMG_MENU_BUTTON_UP);
- drawCursorXY(1, 7, IMG_MENU_BUTTON_DOWN);
+ drawCursorXY(1, pos + 0, IMG_MENU_BUTTON_LEFT);
+ drawCursorXY(1, pos + 1, IMG_MENU_BUTTON_RIGHT);
+ drawCursorXY(1, pos + 2, IMG_MENU_BUTTON_UP);
+ drawCursorXY(1, pos + 3, IMG_MENU_BUTTON_DOWN);
- DrawText(mSX + 2 * 32, mSY + 6 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 7 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 8 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 2 * 32, mSY + 9 * 32, ":", FONT_VALUE_OLD);
- DrawText(mSX + 1 * 32, mSY + 10 * 32, "Snap Field:", FONT_VALUE_OLD);
- DrawText(mSX + 1 * 32, mSY + 12 * 32, "Drop Element:", FONT_VALUE_OLD);
+ DrawText(mSX + 2 * 32, mSY + (pos + 2) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 3) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 4) * 32, ":", font_nr_name);
+ DrawText(mSX + 2 * 32, mSY + (pos + 5) * 32, ":", font_nr_name);
+ DrawText(mSX + 1 * 32, mSY + (pos + 6) * 32, "Snap Field:", font_nr_name);
+ DrawText(mSX + 1 * 32, mSY + (pos + 8) * 32, "Drop Element:", font_nr_name);
for (i = 0; i < 6; i++)
{
- int ypos = 6 + i + (i > 3 ? i-3 : 0);
+ int ypos = (pos + 2) + i + (i > 3 ? i - 3 : 0);
DrawText(mSX + 3 * 32, mSY + ypos * 32,
- " ", FONT_VALUE_1);
+ " ", font_nr_on);
DrawText(mSX + 3 * 32, mSY + ypos * 32,
(setup.input[player_nr].use_joystick ?
custom[i].text :
- getKeyNameFromKey(*custom[i].key)), FONT_VALUE_1);
+ getKeyNameFromKey(*custom[i].key)), font_nr_on);
}
}
}
}
-void CustomizeKeyboard(int player_nr)
+static boolean CustomizeKeyboardMain(int player_nr)
{
int i;
int step_nr;
{ &custom_key.snap, "Snap Field" },
{ &custom_key.drop, "Drop Element" }
};
+ int font_nr_old = FONT_VALUE_OLD;
+ int font_nr_new = FONT_VALUE_1;
+ int success = FALSE;
+
+ if (SCR_FIELDX < SCR_FIELDX_DEFAULT)
+ {
+ font_nr_old = FONT_VALUE_OLD_NARROW;
+ font_nr_new = FONT_VALUE_NARROW;
+ }
/* read existing key bindings from player setup */
custom_key = setup.input[player_nr].key;
DrawText(mSX, mSY + (2 + 2 * step_nr + 1) * 32,
"Key:", FONT_INPUT_1_ACTIVE);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- getKeyNameFromKey(*customize_step[step_nr].key), FONT_VALUE_OLD);
+ getKeyNameFromKey(*customize_step[step_nr].key), font_nr_old);
FadeIn(REDRAW_FIELD);
{
Key key = GetEventKey((KeyEvent *)&event, FALSE);
- if (key == KSYM_Escape || (key == KSYM_Return && step_nr == 6))
+ /* press 'Escape' to abort and keep the old key bindings */
+ if (key == KSYM_Escape)
{
- if (key == KSYM_Escape)
- FadeSkipNextFadeIn();
+ FadeSkipNextFadeIn();
finished = TRUE;
- break;
- }
- /* all keys configured -- wait for "Escape" or "Return" key */
- if (step_nr == 6)
break;
+ }
/* press 'Enter' to keep the existing key binding */
if (key == KSYM_Return)
/* got new key binding */
*customize_step[step_nr].key = key;
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- " ", FONT_VALUE_1);
+ " ", font_nr_new);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
- getKeyNameFromKey(key), FONT_VALUE_1);
+ getKeyNameFromKey(key), font_nr_new);
step_nr++;
/* un-highlight last query */
DrawText(mSX, mSY + (2 + 2 * (step_nr - 1) + 1) * 32,
"Key:", FONT_MENU_1);
- /* press 'Enter' to leave */
+ /* all keys configured */
if (step_nr == 6)
{
- DrawText(mSX + 16, mSY + 15 * 32 + 16,
- "Press Enter", FONT_TITLE_1);
+ finished = TRUE;
+ success = TRUE;
+
break;
}
"Key:", FONT_INPUT_1_ACTIVE);
DrawText(mSX + 4 * 32, mSY + (2 + 2 * step_nr + 1) * 32,
getKeyNameFromKey(*customize_step[step_nr].key),
- FONT_VALUE_OLD);
+ font_nr_old);
}
break;
BackToFront();
}
- /* write new key bindings back to player setup */
- setup.input[player_nr].key = custom_key;
+ /* write new key bindings back to player setup, if successfully finished */
+ if (success)
+ setup.input[player_nr].key = custom_key;
+
+ return success;
+}
+
+void CustomizeKeyboard(int player_nr)
+{
+ boolean success = CustomizeKeyboardMain(player_nr);
+
+ if (success)
+ {
+ int font_nr = FONT_TITLE_1;
+ int font_height = getFontHeight(font_nr);
+ int ypos1 = SYSIZE / 2 - font_height * 2;
+ int ypos2 = SYSIZE / 2 - font_height * 1;
+ unsigned int wait_frame_delay = 0;
+ unsigned int wait_frame_delay_value = 2000;
+
+ ResetDelayCounter(&wait_frame_delay);
+
+ ClearField();
+
+ DrawTextSCentered(ypos1, font_nr, "Keyboard");
+ DrawTextSCentered(ypos2, font_nr, "configured!");
+
+ while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+ BackToFront();
+
+ ClearEventQueue();
+ }
DrawSetupScreen_Input();
}
if (state != JOYSTICK_NOT_CONFIGURED)
{
boolean success = (state == JOYSTICK_CONFIGURED);
- char *message = (success ? " IS CONFIGURED! " : " NOT AVAILABLE! ");
+ char message1[MAX_OUTPUT_LINESIZE + 1];
+ char *message2 = (success ? "configured!" : "not available!");
char *device_name = setup.input[player_nr].joy.device_name;
int nr = getJoystickNrFromDeviceName(device_name) + 1;
- int xpos = mSX - SX;
- int ypos = mSY - SY;
+ int font_nr = FONT_TITLE_1;
+ int font_height = getFontHeight(font_nr);
+ int ypos1 = SYSIZE / 2 - font_height * 2;
+ int ypos2 = SYSIZE / 2 - font_height * 1;
unsigned int wait_frame_delay = 0;
unsigned int wait_frame_delay_value = 2000;
ClearField();
- DrawTextF(xpos + 16, ypos + 6 * 32, FONT_TITLE_1, " JOYSTICK %d ", nr);
- DrawTextF(xpos + 16, ypos + 7 * 32, FONT_TITLE_1, message);
+ sprintf(message1, "Joystick %d", nr);
+
+ DrawTextSCentered(ypos1, font_nr, message1);
+ DrawTextSCentered(ypos2, font_nr, message2);
while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
BackToFront();
void HandleGameActions()
{
+ if (game.restart_game_message != NULL)
+ RequestRestartGame(game.restart_game_message);
+
if (game_status != GAME_MODE_PLAYING)
return;