Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void save(string fname){
- std::ofstream gameFile; //calling the file GameFile
- gameFile.open(fname);
- //Time
- std::time_t result = std::time(nullptr);
- gameFile << std::asctime(std::localtime(&result));
- //Current Room player is in
- gameFile << currentState->getCurrentRoom()->getName()->data();
- gameFile << "\n";
- //Current Inventory
- for (GameObject *i:State::inventory) {
- gameFile << i->getKeyword()->data();
- gameFile << ",";
- }
- gameFile << "\n";
- //Rooms Inventory
- for (Room* i:Room::rooms){
- gameFile << i->getName()->data();
- int size = i->objects.size();
- int count = 0;
- gameFile << "\n";
- if (size != 0) {
- for(GameObject* a: i->objects){
- gameFile << a->getKeyword()->data();
- if (count != size -1) {
- gameFile << ",";
- }
- count ++;
- }
- } else {
- gameFile << "null";
- }
- gameFile << "\n";
- }
- gameFile.close();
- std::cout << "The file has been saved as " + fname + "\n";
- }
- void loadGameState(string fName) {
- std::ifstream MyFile("Saves/" + fName);
- string line;
- //TIMESTAMP
- getline(MyFile, line);
- std::cout << "Timestamp of save: " + line << std::endl;
- //CURRENT ROOM
- getline(MyFile, line);
- for(Room* iter: Room::rooms){
- string key = iter->getName()->data();
- if (key.compare(0, ' ', line) == 0) {
- currentState->goTo(iter);
- }
- }
- //INVENTORY
- getline(MyFile, line);
- string intermediate;
- std::stringstream temp(line);
- State::inventory.clear();
- while (std::getline(temp, intermediate, ',')) {
- for (GameObject* iter: objList) {
- if (intermediate.compare(0, ' ', *iter->getKeyword()) == 0) {
- State::inventory.push_back(iter);
- }
- }
- }
- //ROOM OBJECTS
- string strName;
- string strList;
- for (Room* z: Room::rooms) {
- z->clearRoom();
- }
- while (!MyFile.eof()) {
- getline(MyFile, strName);
- getline(MyFile, strList);
- std::vector<string> tokens;
- std::stringstream store(strList);
- while (std::getline(store, intermediate, ',')) {
- for (Room *x: Room::rooms) {
- if (strName.compare(0, ' ', *x->getName()) == 0) {
- for (GameObject *y: objList) {
- if (intermediate.compare(0, ' ', y->getKeyword()->data()) == 0) {
- x->addObject(y);
- }
- }
- }
- }
- }
- }
- MyFile.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement