summaryrefslogtreecommitdiff
path: root/src/client/GameSave.h
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-06 00:46:13 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-06 00:46:13 (GMT)
commit8fae7dbade0a83c86f92723149fb484acd99b951 (patch)
treeb3a88ecf031114194228aaed9a39ac2b4b046c84 /src/client/GameSave.h
parent7063587706f1f2d440c501ed67323cf6bfb5c3a3 (diff)
downloadpowder-8fae7dbade0a83c86f92723149fb484acd99b951.zip
powder-8fae7dbade0a83c86f92723149fb484acd99b951.tar.gz
Saving and loading at position, yuse exceptions for parsing saves
Diffstat (limited to 'src/client/GameSave.h')
-rw-r--r--src/client/GameSave.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/client/GameSave.h b/src/client/GameSave.h
index 0c50405..2978f52 100644
--- a/src/client/GameSave.h
+++ b/src/client/GameSave.h
@@ -12,10 +12,22 @@
#include "Misc.h"
#include "simulation/StorageClasses.h"
+struct ParseException: public exception {
+ enum ParseResult { OK = 0, Corrupt, WrongVersion, InvalidDimensions, InternalError, MissingElement };
+ string message;
+ ParseResult result;
+public:
+ ParseException(ParseResult result, string message_): message(message_), result(result) {}
+ const char * what() const throw()
+ {
+ return message.c_str();
+ }
+ ~ParseException() throw() {};
+};
+
class GameSave
{
public:
- enum ParseResult { OK = 0, Corrupt, WrongVersion, InvalidDimensions, InternalError, MissingElement };
int width, height;
@@ -38,6 +50,7 @@ public:
//Signs
std::vector<sign> signs;
+ GameSave();
GameSave(GameSave & save);
GameSave(int width, int height);
GameSave(char * data, int dataSize);
@@ -65,8 +78,8 @@ private:
float * fanVelYPtr;
unsigned char * blockMapPtr;
- ParseResult readOPS(char * data, int dataLength);
- ParseResult readPSv(char * data, int dataLength);
+ void readOPS(char * data, int dataLength);
+ void readPSv(char * data, int dataLength);
char * serialiseOPS(int & dataSize);
//serialisePSv();
};