git repos / blockattack-game

commit c96f480e

sago007 · 2009-03-28 18:59
c96f480e40e333c793848e558b412db943eaab73 patch · browse files
parent 6d48320c0fdde96cd1d518ecda1a0eb0b60ed613

Names are now stored in replay files. Final status of replays is now correct again.


git-svn-id: https://blockattack.svn.sourceforge.net/svnroot/blockattack/trunk@74 9d7177f8-192b-0410-8f35-a16a89829b06

Changed files

M source/code/BlockGame.hpp before
M source/code/main.cpp before
M source/code/replay.cpp before
M source/code/replay.h before
diff --git a/source/code/BlockGame.hpp b/source/code/BlockGame.hpp index 3ded117..e4aea52 100644 --- a/source/code/BlockGame.hpp +++ b/source/code/BlockGame.hpp
@@ -383,6 +383,8 @@ public:
AI_Enabled = AI;
if(!AI)
Stats::getInstance()->addOne("VSgamesStarted");
+ else
+ strcpy(name,"CPU\0");
putStartBlocks();
garbageTarget = target;
}
@@ -1209,6 +1211,10 @@ public:
{
bReplaying = false;
}
+ else
+ {
+ strncpy(theReplay.name,name,30);
+ }
theReplay.setFinalFrame(getPackage(), 0);
bGameOver = true;
showGame = false;
@@ -2157,6 +2163,7 @@ public:
Uint32 nowTime = SDL_GetTicks(); //We remember the time, so it doesn't change during this call
if (bReplaying) {
setBoard(theReplay.getFrameSec((Uint32)(nowTime-gameStartedAt)));
+ strncpy(name,theReplay.name,30);
if (theReplay.isFinnished((Uint32)(nowTime-gameStartedAt)))
switch (theReplay.getFinalStatus()) {
case 1: //Winner
diff --git a/source/code/main.cpp b/source/code/main.cpp index 22952c0..d464f42 100644 --- a/source/code/main.cpp +++ b/source/code/main.cpp
@@ -183,6 +183,8 @@ bool reloadIMG(SDL_Surface **surface2replace, string replaceWith)
void loadTheme(string themeName)
{
+ if(themeName.compare("default")==0)
+ themeName = "../gfx";
reloadIMG(&backgroundImage,themeName+"/background.png");
reloadIMG(&backgroundImage,themeName+"/background.jpg");
CONVERT(backgroundImage); //We should always convert even if we don't have to or else: SEGFAULT!
@@ -3845,6 +3847,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = false;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}}
if ( event.key.keysym.sym == SDLK_F3 ) {
#if NETWORK
@@ -3860,6 +3864,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = false;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}}
if ( event.key.keysym.sym == SDLK_F5 )
{
@@ -3878,6 +3884,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = false;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
}
if ( event.key.keysym.sym == SDLK_F6 )
@@ -3892,6 +3900,8 @@ int main(int argc, char *argv[])
theGame2.NewVsGame(xsize-500,100,&theGame);
closeAllMenus();
vsMode = true;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
theGame.setGameSpeed(player1Speed);
theGame2.setGameSpeed(player2Speed);
theGame.setHandicap(player1handicap);
@@ -3931,6 +3941,8 @@ int main(int argc, char *argv[])
theGame2.AI_Enabled = player2AI;
theGame.setAIlevel(player1AIlevel);
theGame2.setAIlevel(player2AIlevel);
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
}
if ( event.key.keysym.sym == SDLK_F7 )
@@ -3950,6 +3962,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = true;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
}
if ( event.key.keysym.sym == SDLK_F8 )
@@ -4381,6 +4395,8 @@ int main(int argc, char *argv[])
twoPlayers =false;
theGame2.SetGameOver();
showGame = true;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b1playerOpen) &&(!networkActive) )
@@ -4394,6 +4410,8 @@ int main(int argc, char *argv[])
twoPlayers =false;
theGame2.SetGameOver();
showGame = true;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b1playerOpen)&&(!networkActive) )
@@ -4409,6 +4427,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = false;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (160<mousey) && (mousey<200) && (b1playerOpen))
@@ -4424,6 +4444,8 @@ int main(int argc, char *argv[])
theGame2.SetGameOver();
showGame = true;
vsMode = false;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (200<mousey) && (mousey<240) && (b1playerOpen))
@@ -4444,6 +4466,8 @@ int main(int argc, char *argv[])
int theTime = time(0);
theGame.putStartBlocks(theTime);
theGame2.putStartBlocks(theTime);
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (80<mousey) && (mousey<120) && (b2playersOpen))
@@ -4469,6 +4493,8 @@ int main(int argc, char *argv[])
theGame.setAIlevel(player1AIlevel);
theGame2.setAIlevel(player2AIlevel);
twoPlayers = true;
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
else
if ((buttonXsize<mousex) && (mousex<240) && (120<mousey) && (mousey<160) && (b2playersOpen))
@@ -4491,6 +4517,8 @@ int main(int argc, char *argv[])
int theTime = time(0);
theGame.putStartBlocks(theTime);
theGame2.putStartBlocks(theTime);
+ strcpy(theGame.name, player1name);
+ strcpy(theGame2.name, player2name);
}
#if NETWORK
else
@@ -4694,6 +4722,7 @@ int main(int argc, char *argv[])
//change name
bScreenLocked = true;
showDialog = true;
+ strcpy(theGame.name, player1name);
if (OpenDialogbox(200,100,player1name))
strcpy(theGame.name, player1name);
else
@@ -4708,6 +4737,7 @@ int main(int argc, char *argv[])
//change name
bScreenLocked = true;
showDialog = true;
+ strcpy(theGame2.name, player2name);
if (OpenDialogbox(200,100,player2name))
strcpy(theGame2.name, player2name);
else
diff --git a/source/code/replay.cpp b/source/code/replay.cpp index b427e7b..c3e199b 100644 --- a/source/code/replay.cpp +++ b/source/code/replay.cpp
@@ -27,6 +27,8 @@ Copyright (C) 2005 Poul Sander
Handles replay
*/
+#include <string.h>
+
#include "replay.h"
Replay::Replay()
@@ -42,6 +44,7 @@ Replay::Replay(const Replay& r)
nrOfFrames = r.nrOfFrames;
isLoaded = r.isLoaded;
theResult = r.theResult;
+ strncpy(name,r.name,sizeof(name));
}
Uint32 Replay::getNumberOfFrames()
@@ -133,6 +136,8 @@ bool Replay::saveReplay(string filename)
}
saveFile.write(reinterpret_cast<char*>(&finalPack),sizeof(finalPack));
+ saveFile.write(reinterpret_cast<char*>(&theResult),sizeof(theResult));
+ saveFile.write(reinterpret_cast<char*>(&name),sizeof(name));
saveFile.close();
return true;
}
@@ -162,6 +167,8 @@ bool Replay::saveReplay(string filename,Replay p2)
saveFile.write(reinterpret_cast<char*>(&bp),sizeof(bp));
}
saveFile.write(reinterpret_cast<char*>(&finalPack),sizeof(finalPack));
+ saveFile.write(reinterpret_cast<char*>(&theResult),sizeof(theResult));
+ saveFile.write(reinterpret_cast<char*>(&name),sizeof(name));
///Player 2 starts here!!!!!!!!!!!!!!!!!!!!!!
saveFile.write(reinterpret_cast<char*>(&p2.nrOfFrames),sizeof(Uint32)); //Nr of frames in file
for (int i=0; (i<p2.nrOfFrames)&& i<p2.bps.size();i++)
@@ -170,6 +177,8 @@ bool Replay::saveReplay(string filename,Replay p2)
saveFile.write(reinterpret_cast<char*>(&bp),sizeof(bp));
}
saveFile.write(reinterpret_cast<char*>(&p2.finalPack),sizeof(finalPack));
+ saveFile.write(reinterpret_cast<char*>(&p2.theResult),sizeof(theResult));
+ saveFile.write(reinterpret_cast<char*>(&p2.name),sizeof(name));
saveFile.close();
return true;
}
@@ -203,6 +212,8 @@ bool Replay::loadReplay(string filename)
bps.push_back(bp);
}
loadFile.read(reinterpret_cast<char*>(&finalPack),sizeof(finalPack));
+ loadFile.read(reinterpret_cast<char*>(&theResult),sizeof(theResult));
+ loadFile.read(reinterpret_cast<char*>(&name),sizeof(name));
break;
default:
cout << "Unknown version" << endl;
@@ -248,6 +259,8 @@ bool Replay::loadReplay2(string filename)
//bps.push_back(bp); We have already read player 1 with another function
}
loadFile.read(reinterpret_cast<char*>(&finalPack),sizeof(finalPack));
+ loadFile.read(reinterpret_cast<char*>(&theResult),sizeof(theResult));
+ loadFile.read(reinterpret_cast<char*>(&name),sizeof(name));
loadFile.read(reinterpret_cast<char*>(&nrOfFrames),sizeof(Uint32));
bps.reserve(nrOfFrames);
for (int i=0; (i<nrOfFrames);i++)
@@ -256,6 +269,8 @@ bool Replay::loadReplay2(string filename)
bps.push_back(bp);
}
loadFile.read(reinterpret_cast<char*>(&finalPack),sizeof(finalPack));
+ loadFile.read(reinterpret_cast<char*>(&theResult),sizeof(theResult));
+ loadFile.read(reinterpret_cast<char*>(&name),sizeof(name));
break;
default:
cout << "Unknown version: " << version << endl;
diff --git a/source/code/replay.h b/source/code/replay.h index fbac67b..1b7fdcb 100644 --- a/source/code/replay.h +++ b/source/code/replay.h
@@ -68,7 +68,12 @@ private:
//If we are loaded from a file, then we are read only
bool isLoaded;
+
public:
+
+ //Store player name
+ char name[30];
+
Replay(); //Constructor
Replay(const Replay& r); //Copy constructor
Uint32 getNumberOfFrames(); //Returns number of frames
@@ -84,5 +89,6 @@ public:
bool saveReplay(string,Replay p2); //saves a replay, plus another replay given as a parameter
bool loadReplay(string); //laods a replay
bool loadReplay2(string); //loads the second part of the replay file, if it exists, returns false otherwise
-
+
+
};