diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-28 16:38:35 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-28 16:38:35 +0000 |
| commit | 2d776fcd61be168e1ff0ff2e4a5e71835e7cea19 (patch) | |
| tree | 7cf274897bf540d5332d446f583ffd066e4e2e1d /src/base/net_multiplayer.c | |
| parent | b877ae23ac5d380ab3aa48d7724045cf4883b186 (diff) | |
- prekopanie adresarovej struktury, prva cast
git-svn-id: http://opensvn.csie.org/tuxanci_ng@77 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/base/net_multiplayer.c')
| -rw-r--r-- | src/base/net_multiplayer.c | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/src/base/net_multiplayer.c b/src/base/net_multiplayer.c new file mode 100644 index 0000000..bc8ecab --- /dev/null +++ b/src/base/net_multiplayer.c @@ -0,0 +1,172 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#include <unistd.h> + +#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; +} |