diff options
| author | Tomas Chvatal (scarabeus) <tomas.chvatal@gmail.com> | 2008-10-22 22:50:54 +0200 |
|---|---|---|
| committer | Tomas Chvatal (scarabeus) <tomas.chvatal@gmail.com> | 2008-10-22 22:50:54 +0200 |
| commit | e12753d2ec9db83ec08bb9db63902a82fb245cdd (patch) | |
| tree | 6e4a63b790d6335f969f88b797a927e0fb25f37a /src/base/net_multiplayer.c~ | |
| parent | 0b4d9821c7333b8c4bdf7e0eeb750aef502a1137 (diff) | |
X
Diffstat (limited to 'src/base/net_multiplayer.c~')
| -rw-r--r-- | src/base/net_multiplayer.c~ | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/base/net_multiplayer.c~ b/src/base/net_multiplayer.c~ new file mode 100644 index 0000000..f7d54eb --- /dev/null +++ b/src/base/net_multiplayer.c~ @@ -0,0 +1,139 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#include <unistd.h> + +#include "main.h" +#include "list.h" +#include "tux.h" +#include "item.h" +#include "arenaFile.h" +#include "net_multiplayer.h" +#include "server.h" + +#include "udp.h" + +#ifndef PUBLIC_SERVER +#include "screen_setting.h" +#include "screen_choiceArena.h" + +#include "screen.h" +#include "client.h" +#endif + +static int netGameType; + +int getNetTypeGame() +{ + return netGameType; +} + +int initNetMuliplayerForGameServer(char *ip4, int port4, char *ip6, int port6) +{ + int ret; + + ret = initServer(ip4, port4, ip6, port6); + + if( ret > 0 ) + { + netGameType = NET_GAME_TYPE_SERVER; + } + + return ret; +} + +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 : + switch( proto ) + { + case PROTO_UDPv4 : + if( initServer(ip, port, NULL, 0) != 1 ) + { + fprintf(stderr, _("Unable to inicialize network game as server!\n")); + netGameType = NET_GAME_TYPE_NONE; + return -1; + } + break; + case PROTO_UDPv6 : + if( initServer(NULL, 0, ip, port) != 1 ) + { + fprintf(stderr, _("Unable to inicialize network game as server!\n")); + netGameType = NET_GAME_TYPE_NONE; + return -1; + } + break; + } + break; + +#ifndef PUBLIC_SERVER + case NET_GAME_TYPE_CLIENT : + if( initClient(ip, port, proto) != 0 ) + { + fprintf(stderr, _("Unable to inicialize network game as client!\n")); + netGameType = NET_GAME_TYPE_NONE; + return -1; + } + break; +#endif + default : + assert( ! _("Variable netGameType has a really wierd value!") ); + break; + } + + return 0; +} + +void eventNetMultiplayer() +{ + switch( netGameType ) + { + case NET_GAME_TYPE_NONE : + break; + + case NET_GAME_TYPE_SERVER : + eventServer(); + break; + +#ifndef PUBLIC_SERVER + case NET_GAME_TYPE_CLIENT : + eventClient(); + break; +#endif + default : + assert( ! _("Variable netGameType has a really wierd value!") ); + break; + } +} + +void quitNetMultiplayer() +{ + switch( netGameType ) + { + case NET_GAME_TYPE_NONE : + break; + + case NET_GAME_TYPE_SERVER : + quitServer(); + break; + +#ifndef PUBLIC_SERVER + case NET_GAME_TYPE_CLIENT : + quitClient(); + break; +#endif + default : + assert( ! _("Variable netGameType has a really wierd value!") ); + break; + } + + netGameType = NET_GAME_TYPE_NONE; +} |