mirror of
https://gitlab.com/manzerbredes/ochess.git
synced 2025-07-15 08:07:40 +00:00
Migrate to std::shared_ptr<Game>
This commit is contained in:
parent
4c959fe12e
commit
44ea0a50a3
16 changed files with 44 additions and 49 deletions
|
@ -27,7 +27,7 @@ void AppendGameDialog::OnCancel(wxCommandEvent &event) { this->Close(); }
|
|||
void AppendGameDialog::OnImport(wxCommandEvent &event) {
|
||||
std::vector<std::uint32_t> to_ignore;
|
||||
std::vector<GameBase *> new_games_bases;
|
||||
std::vector<Game *> new_games;
|
||||
std::vector<std::shared_ptr<Game>> new_games;
|
||||
|
||||
wxArrayInt selections;
|
||||
game_list->GetSelections(selections);
|
||||
|
@ -37,7 +37,7 @@ void AppendGameDialog::OnImport(wxCommandEvent &event) {
|
|||
if (tinfo->type == TabInfos::BASE) {
|
||||
new_games_bases.push_back(static_cast<GameBase *>(tinfo->GetBase()));
|
||||
} else if (tinfo->type == TabInfos::GAME) {
|
||||
new_games.push_back(static_cast<Game *>(tinfo->GetGame()));
|
||||
new_games.push_back(tinfo->GetGame());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ void BaseTab::OnDelete(wxCommandEvent &event) {
|
|||
|
||||
void BaseTab::OnSave(wxCommandEvent &event) {
|
||||
std::vector<GameBase *> new_games_bases;
|
||||
std::vector<Game *> new_games;
|
||||
std::vector<std::shared_ptr<Game>> new_games;
|
||||
new_games.insert(
|
||||
new_games.end(), edited.begin(),
|
||||
edited.end()); // Add edited game (since they are also deleted)
|
||||
|
@ -67,9 +67,9 @@ void BaseTab::OnSave(wxCommandEvent &event) {
|
|||
void BaseTab::OnOpenGame(wxListEvent &event) {
|
||||
wxLogDebug("Open!");
|
||||
long id = std::stoi(event.GetItem().GetText().ToStdString());
|
||||
Game *g = base->GetGame(id);
|
||||
std::shared_ptr<Game> *g =new std::shared_ptr<Game>(base->GetGame(id));
|
||||
if (g != NULL) {
|
||||
edited.push_back(g);
|
||||
edited.push_back(*g);
|
||||
deleted.push_back(id);
|
||||
game_list->SetItemBackgroundColour(event.GetIndex(), *wxGREEN);
|
||||
wxCommandEvent newGameEvent(NEW_GAME_EVENT, GetId());
|
||||
|
|
|
@ -10,7 +10,7 @@ wxDECLARE_EVENT(REFRESH_TAB_TITLE, wxCommandEvent);
|
|||
class BaseTab : public TabBase, public TabInfos {
|
||||
GameBase *base;
|
||||
std::vector<std::uint32_t> deleted;
|
||||
std::vector<Game *> edited;
|
||||
std::vector<std::shared_ptr<Game>> edited;
|
||||
std::string base_file;
|
||||
|
||||
public:
|
||||
|
@ -23,6 +23,6 @@ public:
|
|||
void OnExport(wxCommandEvent &event);
|
||||
void OnOpenGame(wxListEvent &event);
|
||||
void OnImport(wxCommandEvent &event);
|
||||
void *GetGame() { return (NULL); }
|
||||
std::shared_ptr<Game> GetGame() { return (std::shared_ptr<Game>(NULL)); }
|
||||
void *GetBase() { return (base); };
|
||||
};
|
|
@ -6,11 +6,11 @@
|
|||
class GameBase {
|
||||
|
||||
public:
|
||||
virtual Game *GetGame(std::uint32_t id) = 0;
|
||||
virtual std::shared_ptr<Game> GetGame(std::uint32_t id) = 0;
|
||||
virtual void Save(std::vector<std::uint32_t> to_ignore,
|
||||
std::vector<GameBase *> new_games_bases,
|
||||
std::vector<Game *> new_games) = 0;
|
||||
virtual Game *GetCurrentGame() = 0;
|
||||
std::vector<std::shared_ptr<Game>> new_games) = 0;
|
||||
virtual std::shared_ptr<Game> GetCurrentGame() = 0;
|
||||
virtual bool NextGame() = 0;
|
||||
virtual std::string GetTag(std::string tag) = 0;
|
||||
virtual void Reset() = 0;
|
||||
|
|
|
@ -28,7 +28,7 @@ std::string PGNGameBase::GetTag(std::string tag) {
|
|||
return ("");
|
||||
}
|
||||
|
||||
Game *PGNGameBase::GetCurrentGame() {
|
||||
std::shared_ptr<Game> PGNGameBase::GetCurrentGame() {
|
||||
pgnp::HalfMove *pgnp_moves = new pgnp::HalfMove();
|
||||
pgn->GetMoves(pgnp_moves);
|
||||
std::string fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
||||
|
@ -42,7 +42,7 @@ Game *PGNGameBase::GetCurrentGame() {
|
|||
g->SetTag(s, pgn->GetTagValue(s));
|
||||
}
|
||||
g->SetResult(pgn->GetResult());
|
||||
return (g);
|
||||
return (std::shared_ptr<Game>(g));
|
||||
}
|
||||
|
||||
void PGNGameBase::Reset() {
|
||||
|
@ -51,7 +51,7 @@ void PGNGameBase::Reset() {
|
|||
pgn->FromFile(file);
|
||||
}
|
||||
|
||||
Game *PGNGameBase::GetGame(std::uint32_t id) {
|
||||
std::shared_ptr<Game> PGNGameBase::GetGame(std::uint32_t id) {
|
||||
Reset();
|
||||
std::uint32_t curid = 0;
|
||||
while (NextGame()) {
|
||||
|
@ -60,12 +60,12 @@ Game *PGNGameBase::GetGame(std::uint32_t id) {
|
|||
}
|
||||
curid++;
|
||||
}
|
||||
return (NULL);
|
||||
return (std::shared_ptr<Game>(NULL));
|
||||
}
|
||||
|
||||
void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
|
||||
std::vector<GameBase *> new_games_bases,
|
||||
std::vector<Game *> new_games) {
|
||||
std::vector<std::shared_ptr<Game>> new_games) {
|
||||
wxStandardPaths stdPaths = wxStandardPaths::Get();
|
||||
wxString tmp = stdPaths.GetTempDir() + "/save_pgn_tmp.pgn";
|
||||
wxFile new_pgn(tmp, wxFile::write);
|
||||
|
@ -80,9 +80,8 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
|
|||
} else {
|
||||
several = true;
|
||||
}
|
||||
Game *g = GetCurrentGame();
|
||||
std::shared_ptr<Game> g = GetCurrentGame();
|
||||
new_pgn.Write(g->GetPGN());
|
||||
delete g;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
|
@ -96,13 +95,12 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore,
|
|||
} else {
|
||||
several = true;
|
||||
}
|
||||
Game *g = current->GetCurrentGame();
|
||||
std::shared_ptr<Game> g = current->GetCurrentGame();
|
||||
new_pgn.Write(g->GetPGN());
|
||||
delete g;
|
||||
}
|
||||
}
|
||||
|
||||
for (Game *g : new_games) {
|
||||
for (std::shared_ptr<Game> g : new_games) {
|
||||
if (several) {
|
||||
new_pgn.Write("\n\n");
|
||||
} else {
|
||||
|
@ -127,9 +125,8 @@ void PGNGameBase::Export(GameBase *base) {
|
|||
} else {
|
||||
several = true;
|
||||
}
|
||||
Game *g = base->GetCurrentGame();
|
||||
std::shared_ptr<Game> g = base->GetCurrentGame();
|
||||
new_pgn.Write(g->GetPGN());
|
||||
delete g;
|
||||
}
|
||||
|
||||
new_pgn.Close();
|
||||
|
|
|
@ -9,13 +9,13 @@ class PGNGameBase : public GameBase {
|
|||
public:
|
||||
PGNGameBase(std::string pgn_file);
|
||||
~PGNGameBase();
|
||||
Game *GetGame(std::uint32_t id);
|
||||
std::shared_ptr<Game> GetGame(std::uint32_t id);
|
||||
bool NextGame();
|
||||
Game *GetCurrentGame();
|
||||
std::shared_ptr<Game> GetCurrentGame();
|
||||
std::string GetTag(std::string tag);
|
||||
void Save(std::vector<std::uint32_t> to_ignore,
|
||||
std::vector<GameBase *> new_games_bases,
|
||||
std::vector<Game *> new_games);
|
||||
std::vector<std::shared_ptr<Game>> new_games);
|
||||
void Reset();
|
||||
void Export(GameBase *base);
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue