diff options
Diffstat (limited to 'src/screen_world.c')
| -rw-r--r-- | src/screen_world.c | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/screen_world.c b/src/screen_world.c index 8d0b87d..1f91cc6 100644 --- a/src/screen_world.c +++ b/src/screen_world.c @@ -10,6 +10,7 @@ #include "screen_analyze.h" #include "screen_setting.h" #include "screen_gameType.h" +#include "screen_choiceArena.h" #include "list.h" #include "layer.h" @@ -38,7 +39,7 @@ bool_t isScreenWorldInicialized() return isScreenWorldInit; } -static void setGameType() +void setGameType() { if( getSettingGameType() == NET_GAME_TYPE_SERVER ) { @@ -56,6 +57,17 @@ arena_t* getWorldArena() return arena; } +void setWorldArena(int id) +{ + arena = getArena(id); + netSetArena(arena); +} + +void setMaxCountRound(int n) +{ + max_count = n; +} + static void timer_endArena() { if( getNetTypeGame() != NET_GAME_TYPE_CLIENT ) @@ -99,13 +111,18 @@ static tux_t* getControlTux(int control_type) return NULL; } -void createTux() +void prepareArena() { tux_t *tux; switch( getNetTypeGame() ) { case NET_GAME_TYPE_NONE : + setWorldArena( getChoiceArenaId() ); + addNewItem(arena->listItem); + playMusic(arena->music, MUSIC_GROUP_USER); + getSettingCountRound(&max_count); + tux = newTux(); tux->control = TUX_CONTROL_KEYBOARD_RIGHT; getSettingNameRight(tux->name); @@ -118,6 +135,11 @@ void createTux() break; case NET_GAME_TYPE_SERVER : + setWorldArena( getChoiceArenaId() ); + addNewItem(arena->listItem); + playMusic(arena->music, MUSIC_GROUP_USER); + getSettingCountRound(&max_count); + tux = newTux(); tux->control = TUX_CONTROL_KEYBOARD_RIGHT; getSettingNameRight(tux->name); @@ -133,6 +155,11 @@ void drawWorld() { tux_t *tux = NULL; + if( arena == NULL ) + { + return; + } + addLayer(arena->background, 0, 0, 0, 0, WINDOW_SIZE_X, WINDOW_SIZE_Y, -100); drawListTux(arena->listTux); @@ -306,6 +333,12 @@ void tuxControl(tux_t *p) void eventWorld() { + if( arena == NULL ) + { + eventNetMultiplayer(); + return; + } + eventListTux(arena->listTux); eventConflictShotWithTux(arena->listTux, arena->listShot); @@ -322,15 +355,12 @@ void eventWorld() void startWorld() { - arena = getArena(0); + arena = NULL; + count = 0; - getSettingCountRound(&max_count); - netSetArena(arena); setGameType(); - createTux(); - addNewItem(arena->listItem); - playMusic(arena->music, MUSIC_GROUP_USER); + prepareArena(); initTimer(); } |