From 62d372c471bb4d6b6e899297f3aea55b78d5fd54 Mon Sep 17 00:00:00 2001 From: Freddie Witherden Date: Sat, 29 Dec 2007 12:18:40 +0000 Subject: [PATCH] Commit part 3 of patch #901, score submission is now ported over to the new API. git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@3220 4a71c877-e1ca-e34f-864e-861f7616d084 --- src/multiplay.c | 2 +- src/multirecv.h | 2 +- src/multisync.c | 126 +++++++++++++++++++++++++----------------------- 3 files changed, 69 insertions(+), 61 deletions(-) diff --git a/src/multiplay.c b/src/multiplay.c index 2f09ea4c3..b43564bbb 100644 --- a/src/multiplay.c +++ b/src/multiplay.c @@ -700,7 +700,7 @@ BOOL recvMessage(void) recvGift(&msg); break; case NET_SCORESUBMIT: // a score update from another player - recvScoreSubmission(&msg); + recvScoreSubmission(); break; case NET_VTOL: recvHappyVtol(&msg); diff --git a/src/multirecv.h b/src/multirecv.h index 134acc450..0ed272c48 100644 --- a/src/multirecv.h +++ b/src/multirecv.h @@ -58,7 +58,7 @@ extern BOOL sendWholeDroid (DROID *pD, UDWORD dest); //extern BOOL sendWholeStructure (STRUCTURE *pS, DPID dest); extern void recvOptions (NETMSG *pMsg); extern void sendOptions (UDWORD dest, UDWORD play); -extern BOOL recvScoreSubmission (NETMSG *pMsg); +extern BOOL recvScoreSubmission (); extern BOOL recvDestroyExtra (NETMSG *pMsg); extern BOOL recvAudioMsg (NETMSG *pMsg); extern BOOL recvHappyVtol (NETMSG *pMsg); diff --git a/src/multisync.c b/src/multisync.c index 8fb150f77..67cd827da 100644 --- a/src/multisync.c +++ b/src/multisync.c @@ -950,104 +950,112 @@ BOOL recvPowerCheck() BOOL sendScoreCheck(void) { static UDWORD lastsent = 0; - UDWORD i; + uint8_t i; + BOOL isData = FALSE; PLAYERSTATS stats; - NETMSG m; - if(lastsent > gameTime)lastsent= 0; - if((gameTime-lastsent) < SCORE_FREQUENCY ) // only send if not done recently. + if (lastsent > gameTime) + { + lastsent= 0; + } + + if (gameTime - lastsent < SCORE_FREQUENCY) { return TRUE; } + lastsent = gameTime; - // syncronise scores. + // Update local score + stats = getMultiStats(selectedPlayer, TRUE); - // update local score - stats = getMultiStats(selectedPlayer,TRUE); - - stats.recentKills += stats.killsToAdd; // add recently scored points. + // Add recently scored points + stats.recentKills += stats.killsToAdd; stats.totalKills += stats.killsToAdd; stats.recentScore += stats.scoreToAdd; stats.totalScore += stats.scoreToAdd; - stats.killsToAdd =0; - stats.scoreToAdd =0; + + // Zero them now added + stats.killsToAdd = stats.scoreToAdd = 0; - setMultiStats(player2dpid[selectedPlayer],stats,TRUE); // store local version. - setMultiStats(player2dpid[selectedPlayer],stats,FALSE); // send score to the ether + // Store local version + setMultiStats(player2dpid[selectedPlayer], stats, TRUE); + + // Send score to the ether + setMultiStats(player2dpid[selectedPlayer], stats, FALSE); - // broadcast any changes in other players, but not in FRONTEND!!! - if(titleMode != MULTIOPTION && titleMode != MULTILIMIT) + // Broadcast any changes in other players, but not in FRONTEND!!! + if (titleMode != MULTIOPTION && titleMode != MULTILIMIT) { - m.size =0; - for(i = 0; ibody[index]; - index+=1; - if(player != ANYPLAYER) + if (player == selectedPlayer) { - NetGet(pMsg,index,kil); - index+=sizeof(kil); - NetGet(pMsg,index,sco); - index+=sizeof(sco); - - // do the update. - if(player == selectedPlayer) - { - stats = getMultiStats(player,TRUE); - stats.killsToAdd += kil; - stats.scoreToAdd += sco; - setMultiStats(player2dpid[player],stats,TRUE); // store local version. - } - + NETuint32_t(&kills); + NETuint32_t(&score); + + stats = getMultiStats(player, TRUE); + stats.killsToAdd += kills; + stats.scoreToAdd += score; + + break; } } + return TRUE; }