#include "memento.h" #include "gamestate.h" #include #include Memento::Memento() { _state = new GameState; } Memento::~Memento() { delete _state; } void Memento::setState(GameState *s) { int i; for (i=0; iobjectLocation[i] = s->objectLocation[i]; _state->objectX[i] = s->objectX[i]; _state->objectY[i] = s->objectY[i]; _state->objectPointsAwarded[i] = s->objectPointsAwarded[i]; } for (i=0; iroomVisited[i] = s->roomVisited[i]; } _state->avatarX = s->avatarX; _state->avatarY = s->avatarY; _state->currentRoom = s->currentRoom; //_state->currentObject = s->currentObject; _state->carrotsEaten = s->carrotsEaten; _state->score = s->score; _state->isSound = s->isSound; _state->isMusic = s->isMusic; } GameState* Memento::getState() { return _state; } void Memento::writeStateToFile(QTextStream *ts) { int i; //cout << "hi" << endl; for (i=0; iobjectLocation[i]) << '\n'; *ts << QString::number(_state->objectX[i]) << '\n'; *ts << QString::number(_state->objectY[i]) << '\n'; *ts << QString::number(_state->objectPointsAwarded[i]) << '\n'; } //cout << "hi" << endl; for (i=0; iroomVisited[i]) << '\n'; } //cout << "hi" << endl; *ts << QString::number(_state->avatarX) << '\n'; *ts << QString::number(_state->avatarY) << '\n'; *ts << QString::number(_state->currentRoom) << '\n'; //*ts << QString::number(_state->currentObject) << '\n'; *ts << QString::number((int)_state->carrotsEaten) << '\n'; *ts << QString::number(_state->score) << '\n'; *ts << QString::number((int)_state->isSound) << '\n'; *ts << QString::number((int)_state->isMusic) << '\n'; //cout << "hi" << endl; } void Memento::readStateFromFile(QTextStream *ts) { QString s; int i; for (i=0; ireadLine(); _state->objectLocation[i] = s.toInt(); s = ts->readLine(); _state->objectX[i] = s.toInt(); s = ts->readLine(); _state->objectY[i] = s.toInt(); s = ts->readLine(); _state->objectPointsAwarded[i] = s.toInt(); } for (i=0; ireadLine(); _state->roomVisited[i] = s.toInt(); } s = ts->readLine(); _state->avatarX = s.toInt(); s = ts->readLine(); _state->avatarY = s.toInt(); s = ts->readLine(); _state->currentRoom = s.toInt(); //s = ts->readLine(); //_state->currentObject = s.toInt(); s = ts->readLine(); _state->carrotsEaten = s.toInt(); s = ts->readLine(); _state->score = s.toInt(); s = ts->readLine(); _state->isSound = s.toInt(); s = ts->readLine(); _state->isMusic = s.toInt(); }