From f601566fcf3d701c43d696dba064b79fa073672b Mon Sep 17 00:00:00 2001 From: driAn Date: Sun, 16 Mar 2008 15:16:22 +0000 Subject: [PATCH] demo git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1703 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clientgame.cpp | 5 +++-- source/src/clients2c.cpp | 18 ++++++++++-------- source/src/main.cpp | 21 +++++++++------------ source/src/server.cpp | 8 +++++--- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 4fa8d03d..b11d2d25 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -375,7 +375,8 @@ void spawnplayer(playerent *d) void respawnself() { - if(m_mp(gamemode)) addmsg(SV_TRYSPAWN, "r"); + if(player1->isspectating()) findplayerstart(player1, true); + else if(m_mp(gamemode)) addmsg(SV_TRYSPAWN, "r"); else { showscores(false); @@ -748,7 +749,7 @@ void callvotesuc() if(!calledvote) return; displayvote(calledvote); calledvote = NULL; - vote(VOTE_YES); // not automatically done by the callvote to keep a clear sequence + vote(VOTE_YES); // not automatically done by callvote to keep a clear sequence } void callvoteerr(int e) diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index d706d4f6..9e27befc 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -147,8 +147,7 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) if(getint(p) > 0) conoutf("INFO: this server is password protected"); if(joining<0 && getclientmap()[0]) // we are the first client on this server, set map { - string mode; - itoa(mode, gamemode); + nextmode = gamemode; changemap(getclientmap()); } break; @@ -648,15 +647,18 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) case SV_DEMOPLAYBACK: { - int on = getint(p); - if(on) + demoplayback = getint(p)!=0; + if(demoplayback) { - player1->state = CS_SPECTATE; + player1->state = CS_SPECTATE; player1->spectating = SM_FLY; } - //else stopdemo(); - //else callvote(SA_STOPDEMO); // FIXME - demoplayback = on!=0; + else + { + // cleanups + loopv(players) zapplayer(players[i]); + clearvote(); + } break; } diff --git a/source/src/main.cpp b/source/src/main.cpp index e71a31b0..8ad483b2 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -65,6 +65,15 @@ VAR(vsync, -1, -1, 1); #if defined(WIN32) || defined(__APPLE__) VARF(fullscreen, 0, 0, 1, initwarning()); #else +void setfullscreen(bool enable) +{ + if(enable == !(screen->flags&SDL_FULLSCREEN)) + { + SDL_WM_ToggleFullScreen(screen); + SDL_WM_GrabInput((screen->flags&SDL_FULLSCREEN) ? SDL_GRAB_ON : SDL_GRAB_OFF); + } +} + VARF(fullscreen, 0, 1, 1, setfullscreen(fullscreen!=0)); #endif @@ -116,18 +125,6 @@ void screenshot(char *imagepath) COMMAND(screenshot, ARG_1STR); COMMAND(quit, ARG_NONE); -#if !defined(WIN32) && !defined(__APPLE__) -void setfullscreen(bool enable) -{ - if(enable == !(screen->flags&SDL_FULLSCREEN)) - { - SDL_WM_ToggleFullScreen(screen); - SDL_WM_GrabInput((screen->flags&SDL_FULLSCREEN) ? SDL_GRAB_ON : SDL_GRAB_OFF); - } -} -#endif - - void screenres(int w, int h) { #if !defined(WIN32) && !defined(__APPLE__) diff --git a/source/src/server.cpp b/source/src/server.cpp index 01e2f887..1a082126 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -13,6 +13,8 @@ #include "cube.h" #include "servercontroller.h" +extern void resetmap(const char *newname, int newmode, int newtime = -1, bool notify = true); + servercontroller *svcctrl = NULL; #define valid_flag(f) (f >= 0 && f < 2) @@ -699,7 +701,7 @@ void enddemoplayback() sendf(-1, 1, "rii", SV_DEMOPLAYBACK, 0); sendservmsg("demo playback finished"); - + loopv(clients) { ENetPacket *packet = enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE); @@ -1318,7 +1320,7 @@ void shuffleteams() bool mapavailable(const char *mapname); -void resetmap(const char *newname, int newmode, int newtime = -1, bool notify = true) +void resetmap(const char *newname, int newmode, int newtime, bool notify) { if(m_demo) enddemoplayback(); else enddemorecord(); @@ -1569,7 +1571,7 @@ void welcomepacket(ucharbuf &p, int n) putint(p, PROTOCOL_VERSION); if(!smapname[0] && configsets.length()) nextcfgset(false); int numcl = numclients(); - putint(p, smapname[0] ? numcl : -1); + putint(p, smapname[0] && !m_demo ? numcl : -1); putint(p, serverpassword[0] ? 1 : 0); if(smapname[0]) {