SRCS = main.c \
init.c \
+ config.c \
events.c \
tools.c \
screens.c \
OBJS = main.o \
init.o \
+ config.o \
events.o \
tools.o \
screens.o \
network.o \
netserv.o
+TIMESTAMP_FILE = timestamp.h
+
LIBDIR = libgame
LIBGAME = $(LIBDIR)/libgame.a
$(LIBGAME):
@$(MAKE) -C $(LIBDIR)
+$(TIMESTAMP_FILE): $(SRCS)
+ @date '+"[%Y-%m-%d %H:%M]"' \
+ | sed -e 's/^/#define COMPILE_DATE_STRING /' \
+ > $(TIMESTAMP_FILE)
+
$(ICON):
$(BMP2ICO) -transparent $(ICONBASE).ico $(ICON32X32)
echo "$(ICONBASE) ICON $(ICONBASE).ico" | $(WINDRES) -o $(ICON)
--- /dev/null
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* config.c *
+***********************************************************/
+
+#include "libgame/libgame.h"
+
+#include "config.h"
+#include "timestamp.h"
+
+/* use timestamp created at compile-time */
+#define PROGRAM_BUILD_STRING PROGRAM_IDENT_STRING " " COMPILE_DATE_STRING
+#ifdef DEBUG
+#undef WINDOW_TITLE_STRING
+#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_BUILD_STRING
+#endif
+
+
+char *getWindowTitleString()
+{
+ return WINDOW_TITLE_STRING;
+}
--- /dev/null
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back! *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment *
+* Holger Schemel *
+* Detmolder Strasse 189 *
+* 33604 Bielefeld *
+* Germany *
+* e-mail: info@artsoft.org *
+*----------------------------------------------------------*
+* config.h *
+***********************************************************/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "main.h"
+
+char *getWindowTitleString(void);
+
+#endif /* CONFIG_H */
/* special shortcuts for quick game tape saving and loading */
if (game_status == MAINMENU || game_status == PLAYING)
{
- if (key == KSYM_F1) /* save game */
+ if (key == setup.shortcut.save_game)
TapeQuickSave();
- else if (key == KSYM_F2) /* load game */
+ else if (key == setup.shortcut.load_game)
TapeQuickLoad();
}
#define NUM_GLOBAL_SETUP_TOKENS 15
+/* shortcut setup */
+#define SETUP_TOKEN_SAVE_GAME 0
+#define SETUP_TOKEN_LOAD_GAME 1
+
+#define NUM_SHORTCUT_SETUP_TOKENS 2
+
/* player setup */
#define SETUP_TOKEN_USE_JOYSTICK 0
#define SETUP_TOKEN_JOY_DEVICE_NAME 1
#define NUM_PLAYER_SETUP_TOKENS 16
static struct SetupInfo si;
+static struct SetupShortcutInfo ssi;
static struct SetupInputInfo sii;
static struct TokenInfo global_setup_tokens[] =
{
/* global setup */
- { TYPE_STRING, &si.player_name, "player_name" },
- { TYPE_SWITCH, &si.sound, "sound" },
- { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
- { TYPE_SWITCH, &si.sound_music, "background_music" },
- { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
- { TYPE_SWITCH, &si.toons, "toons" },
- { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
- { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
- { TYPE_SWITCH, &si.fading, "screen_fading" },
- { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
- { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
- { TYPE_SWITCH, &si.team_mode, "team_mode" },
- { TYPE_SWITCH, &si.handicap, "handicap" },
- { TYPE_SWITCH, &si.time_limit, "time_limit" },
- { TYPE_SWITCH, &si.fullscreen, "fullscreen" }
+ { TYPE_STRING, &si.player_name, "player_name" },
+ { TYPE_SWITCH, &si.sound, "sound" },
+ { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
+ { TYPE_SWITCH, &si.sound_music, "background_music" },
+ { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
+ { TYPE_SWITCH, &si.toons, "toons" },
+ { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
+ { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
+ { TYPE_SWITCH, &si.fading, "screen_fading" },
+ { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
+ { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
+ { TYPE_SWITCH, &si.team_mode, "team_mode" },
+ { TYPE_SWITCH, &si.handicap, "handicap" },
+ { TYPE_SWITCH, &si.time_limit, "time_limit" },
+ { TYPE_SWITCH, &si.fullscreen, "fullscreen" }
+};
+
+static struct TokenInfo shortcut_setup_tokens[] =
+{
+ /* shortcut setup */
+ { TYPE_KEY_X11, &ssi.save_game, "shortcut.save_game" },
+ { TYPE_KEY_X11, &ssi.load_game, "shortcut.load_game" }
};
static struct TokenInfo player_setup_tokens[] =
{ TYPE_INTEGER, &sii.joy.ylower, ".joy.ylower" },
{ TYPE_INTEGER, &sii.joy.snap, ".joy.snap_field" },
{ TYPE_INTEGER, &sii.joy.bomb, ".joy.place_bomb" },
- { TYPE_KEY, &sii.key.left, ".key.move_left" },
- { TYPE_KEY, &sii.key.right, ".key.move_right" },
- { TYPE_KEY, &sii.key.up, ".key.move_up" },
- { TYPE_KEY, &sii.key.down, ".key.move_down" },
- { TYPE_KEY, &sii.key.snap, ".key.snap_field" },
- { TYPE_KEY, &sii.key.bomb, ".key.place_bomb" }
+ { TYPE_KEY_X11, &sii.key.left, ".key.move_left" },
+ { TYPE_KEY_X11, &sii.key.right, ".key.move_right" },
+ { TYPE_KEY_X11, &sii.key.up, ".key.move_up" },
+ { TYPE_KEY_X11, &sii.key.down, ".key.move_down" },
+ { TYPE_KEY_X11, &sii.key.snap, ".key.snap_field" },
+ { TYPE_KEY_X11, &sii.key.bomb, ".key.place_bomb" }
};
static void setSetupInfoToDefaults(struct SetupInfo *si)
si->time_limit = TRUE;
si->fullscreen = FALSE;
+ si->shortcut.save_game = DEFAULT_KEY_SAVE_GAME;
+ si->shortcut.load_game = DEFAULT_KEY_LOAD_GAME;
+
for (i=0; i<MAX_PLAYERS; i++)
{
si->input[i].use_joystick = FALSE;
if (!setup_file_list)
return;
- /* handle global setup values */
+ /* global setup */
si = setup;
for (i=0; i<NUM_GLOBAL_SETUP_TOKENS; i++)
setSetupInfo(global_setup_tokens, i,
getTokenValue(setup_file_list, global_setup_tokens[i].text));
setup = si;
- /* handle player specific setup values */
+ /* shortcut setup */
+ ssi = setup.shortcut;
+ for (i=0; i<NUM_SHORTCUT_SETUP_TOKENS; i++)
+ setSetupInfo(shortcut_setup_tokens, i,
+ getTokenValue(setup_file_list,shortcut_setup_tokens[i].text));
+ setup.shortcut = ssi;
+
+ /* player setup */
for (pnr=0; pnr<MAX_PLAYERS; pnr++)
{
char prefix[30];
getCookie("SETUP")));
fprintf(file, "\n");
- /* handle global setup values */
+ /* global setup */
si = setup;
for (i=0; i<NUM_GLOBAL_SETUP_TOKENS; i++)
{
fprintf(file, "\n");
}
- /* handle player specific setup values */
+ /* shortcut setup */
+ ssi = setup.shortcut;
+ fprintf(file, "\n");
+ for (i=0; i<NUM_SHORTCUT_SETUP_TOKENS; i++)
+ fprintf(file, "%s\n", getSetupLine(shortcut_setup_tokens, "", i));
+
+ /* player setup */
for (pnr=0; pnr<MAX_PLAYERS; pnr++)
{
char prefix[30];
#include "network.h"
#include "netserv.h"
#include "cartoons.h"
+#include "config.h"
static char *image_filename[NUM_PICTURES] =
{
}
InitProgramInfo(UNIX_USERDATA_DIRECTORY,
- PROGRAM_TITLE_STRING, WINDOW_TITLE_STRING,
+ PROGRAM_TITLE_STRING, getWindowTitleString(),
ICON_TITLE_STRING, X11_ICON_FILENAME, X11_ICONMASK_FILENAME,
MSDOS_POINTER_FILENAME,
COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL);
#define TRANSLATE_KEYSYM_TO_KEYNAME 0
#define TRANSLATE_KEYSYM_TO_X11KEYNAME 1
-#define TRANSLATE_X11KEYNAME_TO_KEYSYM 2
+#define TRANSLATE_KEYNAME_TO_KEYSYM 2
+#define TRANSLATE_X11KEYNAME_TO_KEYSYM 3
void translate_keyname(Key *keysym, char **x11name, char **name, int mode)
{
*x11name = name_buffer;
}
+ else if (mode == TRANSLATE_KEYNAME_TO_KEYSYM)
+ {
+ Key key = KSYM_UNDEFINED;
+
+ i = 0;
+ do
+ {
+ if (strcmp(translate_key[i].name, *name) == 0)
+ {
+ key = translate_key[i].key;
+ break;
+ }
+ }
+ while (translate_key[++i].x11name);
+
+ if (key == KSYM_UNDEFINED)
+ Error(ERR_WARN, "getKeyFromKeyName(): not completely implemented");
+
+ *keysym = key;
+ }
else if (mode == TRANSLATE_X11KEYNAME_TO_KEYSYM)
{
Key key = KSYM_UNDEFINED;
return x11name;
}
+Key getKeyFromKeyName(char *name)
+{
+ Key key;
+
+ translate_keyname(&key, NULL, &name, TRANSLATE_KEYNAME_TO_KEYSYM);
+ return key;
+}
+
Key getKeyFromX11KeyName(char *x11name)
{
Key key;
char *getKeyNameFromKey(Key);
char *getX11KeyNameFromKey(Key);
+Key getKeyFromKeyName(char *);
Key getKeyFromX11KeyName(char *);
char getCharFromKey(Key);
break;
case TYPE_KEY:
+ *(Key *)setup_value = getKeyFromKeyName(token_value);
+ break;
+
+ case TYPE_KEY_X11:
*(Key *)setup_value = getKeyFromX11KeyName(token_value);
break;
break;
case TYPE_KEY:
+ strcpy(value_string, getKeyNameFromKey(*(Key *)value));
+ break;
+
+ case TYPE_KEY_X11:
strcpy(value_string, getX11KeyNameFromKey(*(Key *)value));
break;
/* continue with the token's value (which can have different types) */
strcat(entry, value_string);
- if (token_type == TYPE_KEY)
+ if (token_type == TYPE_KEY_X11)
{
Key key = *(Key *)setup_value;
char *keyname = getKeyNameFromKey(key);
#define TYPE_SWITCH (1 << 1)
#define TYPE_YES_NO (1 << 2)
#define TYPE_KEY (1 << 3)
-#define TYPE_INTEGER (1 << 4)
-#define TYPE_STRING (1 << 5)
+#define TYPE_KEY_X11 (1 << 4)
+#define TYPE_INTEGER (1 << 5)
+#define TYPE_STRING (1 << 6)
#define TYPE_BOOLEAN_STYLE (TYPE_BOOLEAN | \
TYPE_SWITCH | \
TYPE_YES_NO)
/* additional values for setup screen */
-#define TYPE_ENTER_MENU (1 << 6)
-#define TYPE_LEAVE_MENU (1 << 7)
-#define TYPE_EMPTY (1 << 8)
-#define TYPE_GHOSTED (1 << 9)
+#define TYPE_ENTER_MENU (1 << 7)
+#define TYPE_LEAVE_MENU (1 << 8)
+#define TYPE_EMPTY (1 << 9)
+#define TYPE_KEYTEXT (1 << 10)
-#define TYPE_ENTER_OR_LEAVE_MENU (TYPE_ENTER_MENU | TYPE_LEAVE_MENU)
+#define TYPE_GHOSTED (1 << 11)
+#define TYPE_QUERY (1 << 12)
+
+#define TYPE_VALUE (TYPE_BOOLEAN_STYLE | \
+ TYPE_KEY | \
+ TYPE_KEY_X11 | \
+ TYPE_INTEGER | \
+ TYPE_STRING)
+
+#define TYPE_SKIP_ENTRY (TYPE_EMPTY | \
+ TYPE_KEY)
+
+#define TYPE_ENTER_OR_LEAVE_MENU (TYPE_ENTER_MENU | \
+ TYPE_LEAVE_MENU)
/* cookie token for file identifier and version number */
#define TOKEN_STR_FILE_IDENTIFIER "file_identifier"
#define DEFAULT_KEY_OKAY KSYM_Return
#define DEFAULT_KEY_CANCEL KSYM_Escape
+/* default shortcut keys */
+#define DEFAULT_KEY_SAVE_GAME KSYM_F1
+#define DEFAULT_KEY_LOAD_GAME KSYM_F2
+
/* values for move directions */
#define MV_NO_MOVING 0
#define MV_LEFT (1 << 0)
struct SetupKeyboardInfo key;
};
+struct SetupShortcutInfo
+{
+ Key save_game;
+ Key load_game;
+};
+
struct SetupInfo
{
char *player_name;
boolean time_limit;
boolean fullscreen;
+ struct SetupShortcutInfo shortcut;
struct SetupInputInfo input[MAX_PLAYERS];
};
#define PROGRAM_VERSION_PATCH 2
#define PROGRAM_VERSION_STRING "2.0.2"
-#define PROGRAM_DATE_STRING "[2002-04-01 01:11]"
-
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
#define PROGRAM_RIGHTS_STRING "Copyright ^1995-2002 by"
#define PROGRAM_DOS_PORT_STRING "DOS port done by Guido Schulz"
#define PROGRAM_IDENT_STRING PROGRAM_VERSION_STRING " " TARGET_STRING
-#define PROGRAM_BUILD_STRING PROGRAM_IDENT_STRING " " PROGRAM_DATE_STRING
-#ifdef DEBUG
-#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_BUILD_STRING
-#else
#define WINDOW_TITLE_STRING PROGRAM_TITLE_STRING " " PROGRAM_IDENT_STRING
-#endif
#define WINDOW_SUBTITLE_STRING PROGRAM_RIGHTS_STRING " " PROGRAM_AUTHOR_STRING
#define ICON_TITLE_STRING PROGRAM_TITLE_STRING
#define UNIX_USERDATA_DIRECTORY ".rocksndiamonds"
/* screens in the setup menu */
#define SETUP_MODE_MAIN 0
#define SETUP_MODE_INPUT 1
-#define SETUP_MODE_GRAPHICS 2
-#define SETUP_MODE_SOUND 3
+#define SETUP_MODE_SHORTCUT 2
+#define SETUP_MODE_GRAPHICS 3
+#define SETUP_MODE_SOUND 4
-#define MAX_SETUP_MODES 4
+#define MAX_SETUP_MODES 5
-/* for HandleSetupInputScreen() */
+/* for input setup functions */
#define SETUPINPUT_SCREEN_POS_START 0
#define SETUPINPUT_SCREEN_POS_END (SCR_FIELDY - 4)
#define SETUPINPUT_SCREEN_POS_EMPTY1 (SETUPINPUT_SCREEN_POS_START + 3)
#define SETUPINPUT_SCREEN_POS_EMPTY2 (SETUPINPUT_SCREEN_POS_END - 1)
-/* for HandleChooseLevel() */
+/* for various menu stuff */
#define MAX_MENU_ENTRIES_ON_SCREEN (SCR_FIELDY - 2)
#define MENU_SCREEN_START_YPOS 2
#define MENU_SCREEN_VALUE_XPOS 14
#define NUM_SCREEN_SCROLLBARS 1
#define NUM_SCREEN_GADGETS 3
-/* forward declaration for internal use */
+/* forward declarations of internal functions */
static void HandleScreenGadgets(struct GadgetInfo *);
+static void HandleSetupScreen_Generic(int, int, int, int, int);
+static void HandleSetupScreen_Input(int, int, int, int, int);
+static void CustomizeKeyboard(int);
+static void CalibrateJoystick(int);
static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
DrawSetupScreen();
}
+static void execSetupShortcut()
+{
+ setup_mode = SETUP_MODE_SHORTCUT;
+ DrawSetupScreen();
+}
+
static void execExitSetup()
{
game_status = MAINMENU;
{
{ TYPE_ENTER_MENU, execSetupSound, "Sound Setup" },
{ TYPE_ENTER_MENU, execSetupInput, "Input Devices" },
- { TYPE_EMPTY, NULL, "" },
+ { TYPE_ENTER_MENU, execSetupShortcut, "Key Shortcuts" },
#if 0
+ { TYPE_EMPTY, NULL, "" },
{ TYPE_SWITCH, &setup.sound, "Sound:", },
{ TYPE_SWITCH, &setup.sound_loops, " Sound Loops:" },
{ TYPE_SWITCH, &setup.sound_music, " Game Music:" },
{ 0, NULL, NULL }
};
+static struct TokenInfo setup_info_shortcut[] =
+{
+ { TYPE_KEYTEXT, NULL, "Quick Save Game:", },
+ { TYPE_KEY, &setup.shortcut.save_game, "" },
+ { TYPE_KEYTEXT, NULL, "Quick Load Game:", },
+ { TYPE_KEY, &setup.shortcut.load_game, "" },
+ { TYPE_EMPTY, NULL, "" },
+ { TYPE_LEAVE_MENU, execSetupMain, "Exit" },
+ { 0, NULL, NULL }
+};
+
+static Key getSetupKey()
+{
+ Key key = KSYM_UNDEFINED;
+ boolean got_key_event = FALSE;
+
+ while (!got_key_event)
+ {
+ if (PendingEvent()) /* got event */
+ {
+ Event event;
+
+ NextEvent(&event);
+
+ switch(event.type)
+ {
+ case EVENT_KEYPRESS:
+ {
+ key = GetEventKey((KeyEvent *)&event, TRUE);
+
+ /* press 'Escape' or 'Enter' to keep the existing key binding */
+ if (key == KSYM_Escape || key == KSYM_Return)
+ key = KSYM_UNDEFINED; /* keep old value */
+
+ got_key_event = TRUE;
+ }
+ break;
+
+ case EVENT_KEYRELEASE:
+ key_joystick_mapping = 0;
+ break;
+
+ default:
+ HandleOtherEvents(&event);
+ break;
+ }
+ }
+
+ BackToFront();
+ DoAnimation();
+
+ /* don't eat all CPU time */
+ Delay(10);
+ }
+
+ return key;
+}
+
static void drawSetupValue(int pos)
{
int xpos = MENU_SCREEN_VALUE_XPOS;
char *value_string = getSetupValue(setup_info[pos].type & ~TYPE_GHOSTED,
setup_info[pos].value);
- if (setup_info[pos].type & TYPE_SWITCH ||
- setup_info[pos].type & TYPE_YES_NO)
+ if (setup_info[pos].type & TYPE_KEY)
{
- boolean value = *(boolean *)(setup_info[pos].value);
- int value_length = 3;
-
- if (!value)
- value_color = FC_BLUE;
+ xpos = 3;
- if (strlen(value_string) < value_length)
- strcat(value_string, " ");
+ if (setup_info[pos].type & TYPE_QUERY)
+ {
+ value_string = "<press key>";
+ value_color = FC_RED;
+ }
}
+ if (setup_info[pos].type & TYPE_BOOLEAN_STYLE &&
+ !*(boolean *)(setup_info[pos].value))
+ value_color = FC_BLUE;
+
+ DrawText(SX + xpos * 32, SY + ypos * 32,
+ (xpos == 3 ? " " : " "), FS_BIG, FC_YELLOW);
DrawText(SX + xpos * 32, SY + ypos * 32, value_string, FS_BIG, value_color);
}
-static void DrawGenericSetupScreen()
+static void changeSetupValue(int pos)
+{
+ if (setup_info[pos].type & TYPE_BOOLEAN_STYLE)
+ {
+ *(boolean *)setup_info[pos].value ^= TRUE;
+ }
+ else if (setup_info[pos].type & TYPE_KEY)
+ {
+ Key key;
+
+ setup_info[pos].type |= TYPE_QUERY;
+ drawSetupValue(pos);
+ setup_info[pos].type &= ~TYPE_QUERY;
+
+ key = getSetupKey();
+ if (key != KSYM_UNDEFINED)
+ *(Key *)setup_info[pos].value = key;
+ }
+
+ drawSetupValue(pos);
+}
+
+static void DrawSetupScreen_Generic()
{
char *title_string = NULL;
int i;
else if (setup_mode == SETUP_MODE_SOUND)
{
setup_info = setup_info_sound;
- title_string = "Sound Setup";
+ title_string = "Setup Sound";
+ }
+ else if (setup_mode == SETUP_MODE_SHORTCUT)
+ {
+ setup_info = setup_info_shortcut;
+ title_string = "Setup Shortcuts";
}
DrawText(SX + 16, SY + 16, title_string, FS_BIG, FC_YELLOW);
initCursor(i, GFX_ARROW_BLUE_RIGHT);
else if (setup_info[i].type & TYPE_LEAVE_MENU)
initCursor(i, GFX_ARROW_BLUE_LEFT);
- else if (setup_info[i].type != TYPE_EMPTY)
+ else if (setup_info[i].type & ~TYPE_SKIP_ENTRY)
initCursor(i, GFX_KUGEL_BLAU);
- if (setup_info[i].type & TYPE_BOOLEAN_STYLE)
+ if (setup_info[i].type & TYPE_VALUE)
drawSetupValue(i);
num_setup_info++;
FadeToFront();
InitAnimation();
- HandleSetupScreen(0,0,0,0,MB_MENU_INITIALIZE);
+ HandleSetupScreen_Generic(0,0,0,0,MB_MENU_INITIALIZE);
}
-void HandleGenericSetupScreen(int mx, int my, int dx, int dy, int button)
+void HandleSetupScreen_Generic(int mx, int my, int dx, int dy, int button)
{
static int choice_store[MAX_SETUP_MODES];
int choice = choice_store[setup_mode];
void (*menu_callback_function)(void) = setup_info[y].value;
menu_callback_function();
- break; /* absolutely needed because 'setup_info' has changed! */
+ break; /* absolutely needed because function changes 'setup_info'! */
}
}
{
if (dx)
{
- int type = (dx < 0 ? TYPE_LEAVE_MENU : TYPE_ENTER_MENU);
+ int menu_navigation_type = (dx < 0 ? TYPE_LEAVE_MENU : TYPE_ENTER_MENU);
- if (!(setup_info[choice].type & TYPE_ENTER_OR_LEAVE_MENU) ||
- setup_info[choice].type == type)
+ if ((setup_info[choice].type & menu_navigation_type) ||
+ (setup_info[choice].type & TYPE_BOOLEAN_STYLE))
button = MB_MENU_CHOICE;
}
else if (dy)
/* jump to next non-empty menu entry (up or down) */
while (y > 0 && y < num_setup_info - 1 &&
- setup_info[y].type == TYPE_EMPTY)
+ (setup_info[y].type & TYPE_SKIP_ENTRY))
y += dy;
}
if (x == 0 && y >= 0 && y < num_setup_info &&
- setup_info[y].type != TYPE_EMPTY)
+ (setup_info[y].type & ~TYPE_SKIP_ENTRY))
{
if (button)
{
}
else if (!(setup_info[y].type & TYPE_GHOSTED))
{
+#if 0
if (setup_info[y].type & TYPE_BOOLEAN_STYLE)
{
boolean new_value = !*(boolean *)(setup_info[y].value);
*(boolean *)setup_info[y].value = new_value;
drawSetupValue(y);
}
+ else if (setup_info[y].type == TYPE_KEYTEXT &&
+ setup_info[y + 1].type == TYPE_KEY)
+ {
+ changeSetupValue(y + 1);
+ }
else if (setup_info[y].type & TYPE_ENTER_OR_LEAVE_MENU)
{
void (*menu_callback_function)(void) = setup_info[choice].value;
menu_callback_function();
}
+#else
+ if (setup_info[y].type & TYPE_ENTER_OR_LEAVE_MENU)
+ {
+ void (*menu_callback_function)(void) = setup_info[choice].value;
+
+ menu_callback_function();
+ }
+ else
+ {
+ if ((setup_info[y].type & TYPE_KEYTEXT) &&
+ (setup_info[y + 1].type & TYPE_KEY))
+ y++;
+
+ if (setup_info[y].type & TYPE_VALUE)
+ changeSetupValue(y);
+ }
+#endif
}
}
DoAnimation();
}
-void DrawSetupInputScreen()
+void DrawSetupScreen_Input()
{
ClearWindow();
- DrawText(SX+16, SY+16, "SETUP INPUT", FS_BIG, FC_YELLOW);
+ DrawText(SX+16, SY+16, "Setup Input", FS_BIG, FC_YELLOW);
initCursor(0, GFX_KUGEL_BLAU);
initCursor(1, GFX_KUGEL_BLAU);
DrawTextFCentered(SYSIZE - 20, FC_BLUE,
"Joysticks deactivated on this screen");
- HandleSetupInputScreen(0,0, 0,0, MB_MENU_INITIALIZE);
+ HandleSetupScreen_Input(0,0, 0,0, MB_MENU_INITIALIZE);
FadeToFront();
InitAnimation();
}
}
}
-void HandleSetupInputScreen(int mx, int my, int dx, int dy, int button)
+void HandleSetupScreen_Input(int mx, int my, int dx, int dy, int button)
{
static int choice = 0;
static int player_nr = 0;
DoAnimation();
}
-void DrawSetupScreen()
-{
- if (setup_mode == SETUP_MODE_INPUT)
- DrawSetupInputScreen();
- else
- DrawGenericSetupScreen();
-}
-
-void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
-{
- if (setup_mode == SETUP_MODE_INPUT)
- HandleSetupInputScreen(mx, my, dx, dy, button);
- else
- HandleGenericSetupScreen(mx, my, dx, dy, button);
-}
-
void CustomizeKeyboard(int player_nr)
{
int i;
setup.input[player_nr].key = custom_key;
StopAnimation();
- DrawSetupInputScreen();
+ DrawSetupScreen_Input();
}
static boolean CalibrateJoystickMain(int player_nr)
StopAnimation();
- DrawSetupInputScreen();
+ DrawSetupScreen_Input();
/* wait until the last pressed button was released */
while (Joystick(player_nr) & JOY_BUTTON)
}
}
+void DrawSetupScreen()
+{
+ if (setup_mode == SETUP_MODE_INPUT)
+ DrawSetupScreen_Input();
+ else
+ DrawSetupScreen_Generic();
+}
+
+void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
+{
+ if (setup_mode == SETUP_MODE_INPUT)
+ HandleSetupScreen_Input(mx, my, dx, dy, button);
+ else
+ HandleSetupScreen_Generic(mx, my, dx, dy, button);
+}
+
void HandleGameActions()
{
if (game_status != PLAYING)
#include "main.h"
void DrawHeadline(void);
+
void DrawMainMenu(void);
void HandleMainMenu(int, int, int, int, int);
+
void DrawHelpScreenElAction(int);
void DrawHelpScreenElText(int);
void DrawHelpScreenMusicText(int);
void DrawHelpScreenCreditsText(void);
void DrawHelpScreen(void);
void HandleHelpScreen(int);
+
void HandleTypeName(int, Key);
+
void DrawChooseLevel(void);
void HandleChooseLevel(int, int, int, int, int);
+
void DrawHallOfFame(int);
void HandleHallOfFame(int, int, int, int, int);
+
void DrawSetupScreen(void);
void HandleSetupScreen(int, int, int, int, int);
-void DrawSetupInputScreen(void);
-void HandleSetupInputScreen(int, int, int, int, int);
-void CustomizeKeyboard(int);
-void CalibrateJoystick(int);
+
void HandleGameActions(void);
void CreateScreenGadgets();
--- /dev/null
+#define COMPILE_DATE_STRING "[2002-04-01 20:50]"