Added copy operators for game's static instance
Player CommandParser can be swapped but not copied.
This commit is contained in:
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user