From b84b59153c587248ca8a6a94a6d93977e851233f Mon Sep 17 00:00:00 2001 From: oroborus Date: Sat, 15 Mar 2008 18:35:48 +0000 Subject: - moznost skompilovat public server bez GUI ( pomocou Makefile-publicServer ) port sa nastavuje ako ./publicserver --port - jeto iba prvotna verzia treba to este odladit a zostabilnit git-svn-id: http://opensvn.csie.org/tuxanci_ng@18 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/publicServer.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/publicServer.c (limited to 'src/publicServer.c') diff --git a/src/publicServer.c b/src/publicServer.c new file mode 100644 index 0000000..f76da76 --- /dev/null +++ b/src/publicServer.c @@ -0,0 +1,109 @@ + +#include +#include + +#include "main.h" +#include "list.h" +#include "tux.h" +#include "wall.h" +#include "teleport.h" +#include "pipe.h" +#include "item.h" +#include "shot.h" +#include "myTimer.h" +#include "arena.h" +#include "arenaFile.h" +#include "proto.h" +#include "publicServer.h" +#include "net_multiplayer.h" + +static int arenaId = 0; +static arena_t *arena; + +arena_t* getWorldArena() +{ + return arena; +} + +void countRoundInc() +{ +} + +void initPublicServer() +{ + initArenaFile(); + initTux(); + initItem(); + initShot(); + initTimer(); + + arena = getArena(arenaId); + addNewItem(arena->listItem, NULL); + + initNetMuliplayer(NET_GAME_TYPE_SERVER, NULL, atoi( getParamElse("--port", "2200") ) ); +} + +int getChoiceArenaId() +{ + return arenaId; +} + +int conflictSpace(int x1,int y1,int w1,int h1,int x2,int y2,int w2,int h2) +{ + return (x1listTux, x, y, w, h) )return 0; + if ( isConflictWithListWall(arena->listWall, x, y, w, h) )return 0; + if ( isConflictWithListShot(arena->listShot, x, y, w, h) )return 0; + if ( isConflictWithListItem(arena->listItem, x, y, w, h) )return 0; + if ( isConflictWithListTeleport(arena->listTeleport, x, y, w, h) )return 0; + if ( isConflictWithListPipe(arena->listPipe, x, y, w, h) )return 0; + + return 1; +} + +void findFreeSpace(int *x, int *y, int w, int h) +{ + int z_x; + int z_y; + + assert( x != NULL ); + assert( y != NULL ); + + do{ + z_x = random() % WINDOW_SIZE_X; + z_y = random() % (WINDOW_SIZE_Y-200); + }while( isFreeSpace(z_x, z_y ,w ,h) == 0 ); + + *x = z_x; + *y = z_y; +} + +void eventPublicServer() +{ + eventConflictTuxWithTeleport(arena->listTux, arena->listTeleport); + eventConflictTuxWithShot(arena->listTux, arena->listShot); + + eventConflictShotWithWall(arena->listWall, arena->listShot); + eventConflictShotWithTeleport(arena->listTeleport, arena->listShot); + eventConflictShotWithPipe(arena->listPipe, arena->listShot); + eventConflictShotWithItem(arena->listItem, arena->listShot); + + eventMoveListShot(arena->listShot); + eventListItem(arena->listItem); + eventListTux(arena->listTux); + eventNetMultiplayer(); + + eventTimer(); +} + +void quitPublicServer() +{ + printf("quit public server\n"); + quitNetMultiplayer(); + destroyArena(arena); + quitTimer(); +} -- cgit v1.2.3