g->post_delay_random = 0;
g->init_event = ANIM_EVENT_DEFAULT;
g->anim_event = ANIM_EVENT_DEFAULT;
+ g->init_event_action = -1;
+ g->anim_event_action = -1;
g->draw_masked = FALSE;
g->draw_order = 0;
g->fade_mode = FADE_MODE_DEFAULT;
g->init_event = parameter[GFX_ARG_INIT_EVENT];
if (parameter[GFX_ARG_ANIM_EVENT] != ARG_UNDEFINED_VALUE)
g->anim_event = parameter[GFX_ARG_ANIM_EVENT];
+ if (parameter[GFX_ARG_INIT_EVENT_ACTION] != ARG_UNDEFINED_VALUE)
+ g->init_event_action = parameter[GFX_ARG_INIT_EVENT_ACTION];
+ if (parameter[GFX_ARG_ANIM_EVENT_ACTION] != ARG_UNDEFINED_VALUE)
+ g->anim_event_action = parameter[GFX_ARG_ANIM_EVENT_ACTION];
/* used for toon animations and global animations */
g->step_offset = parameter[GFX_ARG_STEP_OFFSET];
{
Error(ERR_EXIT_HELP, "unrecognized command '%s'", command);
}
+
+ /* disable networking if any valid command was recognized */
+ options.network = setup.network_mode = FALSE;
}
static void InitSetup()
static void InitGameInfo()
{
game.restart_level = FALSE;
+ game.restart_game_message = NULL;
}
static void InitPlayerInfo()
local_player = &stored_player[0];
for (i = 0; i < MAX_PLAYERS; i++)
- stored_player[i].connected = FALSE;
+ {
+ stored_player[i].connected_locally = FALSE;
+ stored_player[i].connected_network = FALSE;
+ }
- local_player->connected = TRUE;
+ local_player->connected_locally = TRUE;
}
static void InitArtworkInfo()
StartMixer();
}
+static void InitVideoOverlay()
+{
+ // if virtual buttons are not loaded from setup file, repeat initializing
+ // virtual buttons grid with default values now that video is initialized
+ if (!setup.touch.grid_initialized)
+ InitSetup();
+
+ InitTileCursorInfo();
+ InitOverlayInfo();
+}
+
void InitGfxBuffers()
{
static int win_xsize_last = -1;
InitGfxDrawBusyAnimFunction(DrawInitAnim);
InitGfxDrawGlobalAnimFunction(DrawGlobalAnimations);
InitGfxDrawGlobalBorderFunction(DrawMaskedBorderToTarget);
+ InitGfxDrawTileCursorFunction(DrawTileCursor);
gfx.fade_border_source_status = global.border_status;
gfx.fade_border_target_status = global.border_status;
InitGlobalAnimations();
}
-void InitNetworkServer()
+void InitNetworkSettings()
{
-#if defined(NETWORK_AVALIABLE)
- int nr_wanted;
-#endif
+ InitNetworkInfo(options.network || setup.network_mode,
+ FALSE,
+ options.serveronly,
+ options.server_host,
+ options.server_port);
+}
- if (!options.network)
+void InitNetworkServer()
+{
+ if (!network.enabled || network.connected)
return;
-#if defined(NETWORK_AVALIABLE)
- nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
+ LimitScreenUpdates(FALSE);
+
+ if (!ConnectToServer(network.server_host, network.server_port))
+ {
+ network.enabled = FALSE;
- if (!ConnectToServer(options.server_host, options.server_port))
- Error(ERR_EXIT, "cannot connect to network game server");
+ setup.network_mode = FALSE;
+ }
+ else
+ {
+ SendToServer_ProtocolVersion();
+ SendToServer_PlayerName(setup.player_name);
+ SendToServer_NrWanted(setup.network_player_nr + 1);
- SendToServer_PlayerName(setup.player_name);
- SendToServer_ProtocolVersion();
+ network.connected = TRUE;
+ }
- if (nr_wanted)
- SendToServer_NrWanted(nr_wanted);
-#endif
+ /* short time to recognize result of network initialization */
+ Delay_WithScreenUpdates(1000);
}
static boolean CheckArtworkConfigForCustomElements(char *filename)
if (options.execute_command)
Execute_Command(options.execute_command);
- if (options.serveronly)
+ InitNetworkSettings();
+
+ if (network.serveronly)
{
#if defined(PLATFORM_UNIX)
- NetworkServer(options.server_port, options.serveronly);
+ NetworkServer(network.server_port, TRUE);
#else
Error(ERR_WARN, "networking only supported in Unix version");
#endif
InitVideoDefaults();
InitVideoDisplay();
InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen);
-
- InitOverlayInfo();
+ InitVideoOverlay();
print_timestamp_time("[init video stuff]");
return;
}
+ InitNetworkServer();
+
SetGameStatus(GAME_MODE_MAIN);
FadeSetEnterScreen();
DrawMainMenu();
- InitNetworkServer();
-
#if 0
Error(ERR_DEBUG, "::: SDL_GetBasePath() == '%s'",
SDL_GetBasePath());