diff options
| author | Simon 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) |
| commit | 8fae7dbade0a83c86f92723149fb484acd99b951 (patch) | |
| tree | b3a88ecf031114194228aaed9a39ac2b4b046c84 /src/client/GameSave.h | |
| parent | 7063587706f1f2d440c501ed67323cf6bfb5c3a3 (diff) | |
| download | powder-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.h | 19 |
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(); }; |
