Added copy operators for game's static instance

Player
CommandParser can be swapped but not copied.
This commit is contained in:
2026-08-28 20:38:11 -05:00
parent ef54fa6609
commit 45c365e317
6 changed files with 99 additions and 12 deletions
+19
View File
@@ -2,6 +2,7 @@
#include <cstdio>
#include <filesystem>
#include <fstream>
#include "player.h"
std::vector<std::vector<Room>> rooms;
@@ -48,6 +49,18 @@ bool Game::Init() {
return true;
}
Game::Game(Game &rhs)
{
player = rhs.player;
progress = rhs.progress;
}
Game& Game::operator=(Game &rhs)
{
swap(*this, rhs);
return *this;
}
void Game::Run() {
while (isActive) {
parser.Parse();
@@ -149,3 +162,9 @@ int Look(const std::string &c) {
cur.PrintAvalibleExits();
return 0;
}
Game::~Game()
{
isActive = false;
progress = 0;
}
+35 -1
View File
@@ -1,9 +1,32 @@
#include "player.h"
#include <algorithm>
#include <string>
Player::Player()
{
Init();
}
Player::Player(Player &rhs)
{
id = rhs.id;
level = rhs.level;
stats = rhs.stats;
name = rhs.name;
description = rhs.description;
curRoomID = rhs.curRoomID;
prevRoomID = rhs.prevRoomID;
}
Player& Player::operator=(Player& rhs)
{
swap(*this, rhs);
return *this;
}
void Player::Init() {
// initialize stats, room location, inventory and item data
stats = Stats{100.0f, 50.00f, 150.00f, 50.00f};
name = "Player";
}
@@ -29,3 +52,14 @@ void Player::ChangeRoom(int roomID) {
curRoomID = roomID;
}
}
Player::~Player()
{
id = -1;
level = -1;
stats = {};
name.erase();
description.erase();
curRoomID = -1;
prevRoomID = -1;
}