From 9765e28cdb29775a7bc34a25ef33d2432e3f2246 Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 9 Dec 2006 21:12:06 +0000 Subject: [PATCH] no message git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@779 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clientgame.cpp | 19 ++++++++++++++----- source/src/entities.cpp | 2 +- source/src/entity.h | 3 +-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 819d9d16..25684d8e 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -611,8 +611,9 @@ void flagpickup() if(f.flag) { f.flag->spawned = false; - f.actor = player1; // do this although we don't know if we picked the flag to avoid getting it after a possible respawn f.state = CTFF_STOLEN; + f.actor = player1; // do this although we don't know if we picked the flag to avoid getting it after a possible respawn + f.ack = false; addmsg(SV_FLAGPICKUP, "ri", flag); }; }; @@ -623,9 +624,10 @@ void tryflagdrop() flaginfo &f = flaginfos[flag]; if(f.state==CTFF_STOLEN && f.actor==player1) { - addmsg(SV_FLAGDROP, "ri", flag); f.flag->spawned = false; f.state = CTFF_DROPPED; + f.ack = false; + addmsg(SV_FLAGDROP, "ri", flag); }; }; @@ -636,6 +638,7 @@ void flagreturn() if(f.flag) { f.flag->spawned = false; + f.ack = false; addmsg(SV_FLAGRETURN, "ri", flag); }; }; @@ -643,6 +646,8 @@ void flagreturn() void flagscore() { int flag = team_opposite(team_int(player1->team)); + flaginfo &f = flaginfos[flag]; + f.ack = false; addmsg(SV_FLAGSCORE, "ri", flag); }; @@ -652,9 +657,10 @@ void flagreset() flaginfo &f = flaginfos[flag]; if(f.state==CTFF_STOLEN && f.actor==player1) { - addmsg(SV_FLAGRESET, "ri", flag); f.flag->spawned = false; f.state = CTFF_INBASE; + f.ack = false; + addmsg(SV_FLAGRESET, "ri", flag); }; }; @@ -667,6 +673,7 @@ void flagstolen(int flag, int action, playerent *actor) flaginfo &f = flaginfos[flag]; f.actor = actor; f.flag->spawned = false; + f.ack = true; flagmsg(flag, action); }; }; @@ -689,6 +696,7 @@ void flagdropped(int flag, int action, short x, short y, short z) f.flag->y = y; f.flag->z = z; f.flag->spawned = true; + f.ack = true; flagmsg(flag, action); }; @@ -700,15 +708,16 @@ void flaginbase(int flag, int action, playerent *actor) f.flag->y = (ushort) f.originalpos.y; f.flag->z = (ushort) f.originalpos.z; f.flag->spawned = true; + f.ack = true; flagmsg(flag, action); }; -// msg and audio feedback +// console and audio feedback void flagmsg(int flag, int action) { flaginfo &f = flaginfos[flag]; - if(!f.actor) return; + if(!f.actor || !f.ack) return; bool ownflag = flag == team_int(player1->team); switch(action) { diff --git a/source/src/entities.cpp b/source/src/entities.cpp index a1ff9c47..f0fb9328 100644 --- a/source/src/entities.cpp +++ b/source/src/entities.cpp @@ -198,7 +198,7 @@ void pickup(int n, playerent *d) if(flag == team_int(d->team)) // its the own flag { if(f.state == CTFF_DROPPED) flagreturn(); - else if(f.state == CTFF_INBASE && of.state == CTFF_STOLEN && of.actor == d) flagscore(); + else if(f.state == CTFF_INBASE && of.state == CTFF_STOLEN && of.actor == d && of.ack) flagscore(); } else flagpickup(); }; diff --git a/source/src/entity.h b/source/src/entity.h index da507d19..0255bfda 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -220,7 +220,6 @@ struct server_entity // server side version of "entity" type }; // End move -// EDIT: AH enum { CTFF_INBASE = 0, CTFF_STOLEN, CTFF_DROPPED }; struct flaginfo @@ -229,7 +228,7 @@ struct flaginfo playerent *actor; vec originalpos; int state; // one of the types above - bool ack; + bool ack; // is the data ack'd ? flaginfo() : flag(0), actor(0), state(CTFF_INBASE), ack(false) {}; };