From 8586d5ecfe4560d973ad7e26f8ec697f3b265b12 Mon Sep 17 00:00:00 2001 From: driAn Date: Wed, 6 Jun 2007 18:57:58 +0000 Subject: [PATCH] no message git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1153 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clientgame.cpp | 2 +- source/src/entity.h | 13 ++++++++++++- source/src/model.h | 3 ++- source/src/savegamedemo.cpp | 16 +++++++++++----- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 636f2948..c815388e 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -495,7 +495,7 @@ playerent *getclient(int cn) // ensure valid entity void initclient() { clientmap[0] = 0; - newname("unnarmed"); + newname("unarmed"); changeteam(rnd(2)); } diff --git a/source/src/entity.h b/source/src/entity.h index 6bb77a04..0a71220e 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -88,13 +88,24 @@ struct dynent : physent // animated ent move = strafe = 0; } + void resetanim() + { + loopi(2) + { + prev[i].reset(); + current[i].reset(); + lastanimswitchtime[i] = -1; + lastmodel[i] = NULL; + } + } + void reset() { physent::reset(); stopmoving(); } - dynent() { reset(); loopi(2) { lastanimswitchtime[i] = -1; lastmodel[i] = NULL; } } + dynent() { reset(); resetanim(); } }; #define MAXNAMELEN 15 diff --git a/source/src/model.h b/source/src/model.h index bef7182e..42d70bf5 100644 --- a/source/src/model.h +++ b/source/src/model.h @@ -13,7 +13,8 @@ struct animstate // used for animation blending o { int anim, frame, range, basetime; float speed; - animstate() : anim(0), frame(0), range(0), basetime(0), speed(100.0f) { } + animstate() { reset(); } + void reset() { anim = frame = range = basetime = 0; speed = 100.0f; }; bool operator==(const animstate &o) const { return frame==o.frame && range==o.range && basetime==o.basetime && speed==o.speed; } bool operator!=(const animstate &o) const { return frame!=o.frame || range!=o.range || basetime!=o.basetime || speed!=o.speed; } diff --git a/source/src/savegamedemo.cpp b/source/src/savegamedemo.cpp index 55c246ee..9c18cb83 100644 --- a/source/src/savegamedemo.cpp +++ b/source/src/savegamedemo.cpp @@ -87,7 +87,7 @@ void loadstate(char *fn) changemap(mapname); // continue below once map has been loaded and client & server have updated return; out: - conoutf("aborting: savegame/demo from a different version of cube or cpu architecture"); + conoutf("aborting: savegame/demo from a different version of AssaultCube or cpu architecture"); stop(); } @@ -103,6 +103,13 @@ void loadgameout() conoutf("loadgame incomplete: savegame from a different version of this map"); } +void fixplayerstate(playerent *d) +{ + if(!d) return; + d->lastaction = d->lastpain = d->lastteamkill = 0; + d->resetanim(); +} + void loadgamerest() { if(demoplayback || !f) return; @@ -115,7 +122,7 @@ void loadgamerest() restoreserverstate(ents); gzread(f, player1, sizeof(playerent)); - player1->lastaction = lastmillis; + fixplayerstate(player1); int nplayers = gzgeti(); loopi(nplayers) if(!gzget()) @@ -123,7 +130,7 @@ void loadgamerest() playerent *d = newclient(i); ASSERT(d); gzread(f, d, sizeof(playerent)); - d->lastaction = d->lastpain = lastmillis; + fixplayerstate(d); } conoutf("savegame restored"); @@ -280,8 +287,7 @@ void startdemo() starttime = lastmillis; conoutf("now playing demo"); while(democlientnum>=players.length()) players.add(NULL); - players[democlientnum] = player1; - demoplayer = player1; + players[democlientnum] = demoplayer = player1; readdemotime(); }