#include #include #include #include #include #include "base/main.h" #include "base/list.h" #include "base/tux.h" #include "base/item.h" #include "base/arenaFile.h" #include "base/net_multiplayer.h" #include "base/server.h" #ifdef SUPPORT_NET_UNIX_UDP #include "net_unix/udp.h" #endif #ifdef SUPPORT_NET_SDL_UDP #include "net_sdl/sdl_udp.h" #endif #ifndef PUBLIC_SERVER #include "screen/screen_setting.h" #include "screen/screen_choiceArena.h" #include "client/screen.h" #include "client/client.h" #endif static int netGameType; int getNetTypeGame() { return netGameType; } #ifdef PUBLIC_SERVER int initNetMulitplayerPublicServer(char *ip4, int port4, char *ip6, int port6) { netGameType = NET_GAME_TYPE_SERVER; return initUdpPublicServer(ip4, port4, ip6, port6); } #endif int initNetMuliplayer(int type, char *ip, int port, int proto) { netGameType = type; switch( netGameType ) { case NET_GAME_TYPE_NONE : break; case NET_GAME_TYPE_SERVER : #ifdef SUPPORT_NET_UNIX_UDP if( initUdpServer(ip, port, proto) != 0 ) { fprintf(stderr, "Neomzem inicalizovat sietovu hru pre server !\n"); netGameType = NET_GAME_TYPE_NONE; return -1; } #endif #ifdef SUPPORT_NET_SDL_UDP if( initSdlUdpServer(port) != 0 ) { fprintf(stderr, "Neomzem inicalizovat sietovu hru pre server !\n"); netGameType = NET_GAME_TYPE_NONE; return -1; } #endif break; #ifndef PUBLIC_SERVER case NET_GAME_TYPE_CLIENT : #ifdef SUPPORT_NET_UNIX_UDP if( initUdpClient(ip, port, proto) != 0 ) { fprintf(stderr, "Neomzem inicalizovat sietovu hru pre clienta !\n"); netGameType = NET_GAME_TYPE_NONE; return -1; } #endif #ifdef SUPPORT_NET_SDL_UDP if( initSdlUdpClient(ip, port) != 0 ) { fprintf(stderr, "Neomzem inicalizovat sietovu hru pre clienta !\n"); netGameType = NET_GAME_TYPE_NONE; return -1; } #endif break; #endif default : assert( ! "Premenna netGameType ma zlu hodnotu !" ); break; } return 0; } void eventNetMultiplayer() { switch( netGameType ) { case NET_GAME_TYPE_NONE : break; case NET_GAME_TYPE_SERVER : #ifdef SUPPORT_NET_UNIX_UDP eventServer(); #endif #ifdef SUPPORT_NET_SDL_UDP eventServer(); #endif break; #ifndef PUBLIC_SERVER case NET_GAME_TYPE_CLIENT : #ifdef SUPPORT_NET_UNIX_UDP eventPingServer(); selectClientUdpSocket(); eventServerBuffer(); #endif #ifdef SUPPORT_NET_SDL_UDP eventPingServer(); selectClientSdlUdpSocket(); eventServerBuffer(); #endif #endif break; default : assert( ! "Premenna netGameType ma zlu hodnotu !" ); break; } } void quitNetMultiplayer() { switch( netGameType ) { case NET_GAME_TYPE_NONE : break; case NET_GAME_TYPE_SERVER : #ifdef SUPPORT_NET_UNIX_UDP quitUdpServer(); #endif #ifdef SUPPORT_NET_SDL_UDP quitSdlUdpServer(); #endif break; #ifndef PUBLIC_SERVER case NET_GAME_TYPE_CLIENT : #ifdef SUPPORT_NET_UNIX_UDP quitUdpClient(); #endif #ifdef SUPPORT_NET_SDL_UDP quitSdlUdpClient(); #endif break; #endif default : assert( ! "Premenna netGameType ma zlu hodnotu !" ); break; } netGameType = NET_GAME_TYPE_NONE; }