TYPE_INTEGER, CONF_VALUE_8_BIT(4),
&li.game_of_life[3], 3
},
+ {
+ EL_GAME_OF_LIFE, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(5),
+ &li.use_life_bugs, FALSE
+ },
{
EL_BIOMAZE, -1,
/* functions for loading R'n'D level */
/* ------------------------------------------------------------------------- */
-int getMappedElement(int element)
+static int getMappedElement(int element)
{
/* remap some (historic, now obsolete) elements */
return element;
}
-int getMappedElementByVersion(int element, int game_version)
+static int getMappedElementByVersion(int element, int game_version)
{
/* remap some elements due to certain game version */
/* functions for loading EM level */
/* ------------------------------------------------------------------------- */
-void CopyNativeLevel_RND_to_EM(struct LevelInfo *level)
+static void CopyNativeLevel_RND_to_EM(struct LevelInfo *level)
{
static int ball_xy[8][2] =
{
}
}
-void CopyNativeLevel_EM_to_RND(struct LevelInfo *level)
+static void CopyNativeLevel_EM_to_RND(struct LevelInfo *level)
{
static int ball_xy[8][2] =
{
/* functions for loading SP level */
/* ------------------------------------------------------------------------- */
-void CopyNativeLevel_RND_to_SP(struct LevelInfo *level)
+static void CopyNativeLevel_RND_to_SP(struct LevelInfo *level)
{
struct LevelInfo_SP *level_sp = level->native_sp_level;
LevelInfoType *header = &level_sp->header;
}
}
-void CopyNativeLevel_SP_to_RND(struct LevelInfo *level)
+static void CopyNativeLevel_SP_to_RND(struct LevelInfo *level)
{
struct LevelInfo_SP *level_sp = level->native_sp_level;
LevelInfoType *header = &level_sp->header;
/* functions for loading MM level */
/* ------------------------------------------------------------------------- */
-void CopyNativeLevel_RND_to_MM(struct LevelInfo *level)
+static void CopyNativeLevel_RND_to_MM(struct LevelInfo *level)
{
struct LevelInfo_MM *level_mm = level->native_mm_level;
int x, y;
level_mm->field[x][y] = map_element_RND_to_MM(level->field[x][y]);
}
-void CopyNativeLevel_MM_to_RND(struct LevelInfo *level)
+static void CopyNativeLevel_MM_to_RND(struct LevelInfo *level)
{
struct LevelInfo_MM *level_mm = level->native_mm_level;
int x, y;
#define DC_LEVEL_HEADER_SIZE 344
-unsigned short getDecodedWord_DC(unsigned short data_encoded, boolean init)
+static unsigned short getDecodedWord_DC(unsigned short data_encoded,
+ boolean init)
{
static int last_data_encoded;
static int offset1;
return data_decoded;
}
-int getMappedElement_DC(int element)
+static int getMappedElement_DC(int element)
{
switch (element)
{
level->extra_time_score = level->score[SC_TIME_BONUS];
}
+ /* game logic of "game of life" and "biomaze" was buggy before 4.1.1.1 */
+ if (level->game_version < VERSION_IDENT(4,1,1,1))
+ level->use_life_bugs = TRUE;
+
if (level->game_version < VERSION_IDENT(3,2,0,7))
{
/* default behaviour for snapping was "not continuous" before 3.2.0-7 */
return chunk_size;
}
-void LoadTape_SokobanSolution(char *filename)
+static void LoadTape_SokobanSolution(char *filename)
{
File *file;
int move_delay = TILESIZE / level.initial_player_stepsize[0];
SETUP_TOKEN_WINDOW_SCALING_PERCENT,
SETUP_TOKEN_WINDOW_SCALING_QUALITY,
SETUP_TOKEN_SCREEN_RENDERING_MODE,
+ SETUP_TOKEN_VSYNC_MODE,
SETUP_TOKEN_ASK_ON_ESCAPE,
SETUP_TOKEN_ASK_ON_ESCAPE_EDITOR,
SETUP_TOKEN_QUICK_SWITCH,
SETUP_TOKEN_INPUT_ON_FOCUS,
SETUP_TOKEN_PREFER_AGA_GRAPHICS,
+ SETUP_TOKEN_GAME_SPEED_EXTENDED,
SETUP_TOKEN_GAME_FRAME_DELAY,
SETUP_TOKEN_SP_SHOW_BORDER_ELEMENTS,
SETUP_TOKEN_SMALL_GAME_GRAPHICS,
SETUP_TOKEN_VOLUME_MUSIC,
SETUP_TOKEN_NETWORK_MODE,
SETUP_TOKEN_NETWORK_PLAYER_NR,
+ SETUP_TOKEN_NETWORK_SERVER_HOSTNAME,
SETUP_TOKEN_TOUCH_CONTROL_TYPE,
SETUP_TOKEN_TOUCH_MOVE_DISTANCE,
SETUP_TOKEN_TOUCH_DROP_DISTANCE,
{ TYPE_INTEGER,&si.window_scaling_percent, "window_scaling_percent" },
{ TYPE_STRING, &si.window_scaling_quality, "window_scaling_quality" },
{ TYPE_STRING, &si.screen_rendering_mode, "screen_rendering_mode" },
+ { TYPE_STRING, &si.vsync_mode, "vsync_mode" },
{ TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
{ TYPE_SWITCH, &si.ask_on_escape_editor, "ask_on_escape_editor" },
{ TYPE_SWITCH, &si.quick_switch, "quick_player_switch" },
{ TYPE_SWITCH, &si.input_on_focus, "input_on_focus" },
{ TYPE_SWITCH, &si.prefer_aga_graphics, "prefer_aga_graphics" },
+ { TYPE_SWITCH, &si.game_speed_extended, "game_speed_extended" },
{ TYPE_INTEGER,&si.game_frame_delay, "game_frame_delay" },
{ TYPE_SWITCH, &si.sp_show_border_elements, "sp_show_border_elements" },
{ TYPE_SWITCH, &si.small_game_graphics, "small_game_graphics" },
{ TYPE_INTEGER,&si.volume_music, "volume_music" },
{ TYPE_SWITCH, &si.network_mode, "network_mode" },
{ TYPE_PLAYER, &si.network_player_nr, "network_player" },
+ { TYPE_STRING, &si.network_server_hostname, "network_server_hostname" },
{ TYPE_STRING, &si.touch.control_type, "touch.control_type" },
{ TYPE_INTEGER,&si.touch.move_distance, "touch.move_distance" },
{ TYPE_INTEGER,&si.touch.drop_distance, "touch.drop_distance" },
si->window_scaling_percent = STD_WINDOW_SCALING_PERCENT;
si->window_scaling_quality = getStringCopy(SCALING_QUALITY_DEFAULT);
si->screen_rendering_mode = getStringCopy(STR_SPECIAL_RENDERING_DEFAULT);
+ si->vsync_mode = getStringCopy(STR_VSYNC_MODE_DEFAULT);
si->ask_on_escape = TRUE;
si->ask_on_escape_editor = TRUE;
si->quick_switch = FALSE;
si->input_on_focus = FALSE;
si->prefer_aga_graphics = TRUE;
+ si->game_speed_extended = FALSE;
si->game_frame_delay = GAME_FRAME_DELAY;
si->sp_show_border_elements = FALSE;
si->small_game_graphics = FALSE;
si->network_mode = FALSE;
si->network_player_nr = 0; /* first player */
+ si->network_server_hostname = getStringCopy(STR_NETWORK_AUTO_DETECT);
si->touch.control_type = getStringCopy(TOUCH_CONTROL_DEFAULT);
si->touch.move_distance = TOUCH_MOVE_DISTANCE_DEFAULT; /* percent */
}
}
-void add_helpanim_entry(int element, int action, int direction, int delay,
- int *num_list_entries)
+static void add_helpanim_entry(int element, int action, int direction,
+ int delay, int *num_list_entries)
{
struct HelpAnimInfo *new_list_entry;
(*num_list_entries)++;
new_list_entry->delay = delay;
}
-void print_unknown_token(char *filename, char *token, int token_nr)
+static void print_unknown_token(char *filename, char *token, int token_nr)
{
if (token_nr == 0)
{
Error(ERR_INFO, "- token: '%s'", token);
}
-void print_unknown_token_end(int token_nr)
+static void print_unknown_token_end(int token_nr)
{
if (token_nr > 0)
Error(ERR_INFO_LINE, "-");