diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-02-25 14:57:09 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-02-25 14:57:09 +0100 |
| commit | 98488e899a750703562d868d734251cfe032e294 (patch) | |
| tree | 9bd60859300f4d14f00e4c28d8f87e6a5396abb4 /src/base_tab/gamebase | |
| parent | cbcc455e339a6fec87f16369e450620ef7692a34 (diff) | |
Enable database export
Diffstat (limited to 'src/base_tab/gamebase')
| -rw-r--r-- | src/base_tab/gamebase/GameBase.hpp | 1 | ||||
| -rw-r--r-- | src/base_tab/gamebase/PGNGameBase.cpp | 39 | ||||
| -rw-r--r-- | src/base_tab/gamebase/PGNGameBase.hpp | 1 |
3 files changed, 32 insertions, 9 deletions
diff --git a/src/base_tab/gamebase/GameBase.hpp b/src/base_tab/gamebase/GameBase.hpp index db58bcc..cf87a9c 100644 --- a/src/base_tab/gamebase/GameBase.hpp +++ b/src/base_tab/gamebase/GameBase.hpp @@ -14,4 +14,5 @@ public: virtual bool NextGame() = 0; virtual std::string GetTag(std::string tag) = 0; virtual void Reset() = 0; + virtual void Save(GameBase *base) = 0; };
\ No newline at end of file diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp index bd83abc..dc6341c 100644 --- a/src/base_tab/gamebase/PGNGameBase.cpp +++ b/src/base_tab/gamebase/PGNGameBase.cpp @@ -68,11 +68,16 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore, Reset(); std::uint32_t id = 0; + bool several = false; while (NextGame()) { if (std::find(to_ignore.begin(), to_ignore.end(), id) == to_ignore.end()) { + if (several) { + new_pgn.Write("\n\n"); + } else { + several = true; + } Game *g = GetCurrentGame(); new_pgn.Write(g->GetPGN()); - new_pgn.Write("\n\n"); delete g; } id++; @@ -80,18 +85,34 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_ignore, // Now add new games for (Game *g : new_games) { + if (several) { + new_pgn.Write("\n\n"); + } else { + several = true; + } new_pgn.Write(g->GetPGN()); - new_pgn.Write("\n\n"); } - // new_games->Reset(); - // while (new_games->NextGame()) { - // Game *g = new_games->GetCurrentGame(); - // new_pgn.Write(g->GetPGN()); - // delete g; - // } - new_pgn.Close(); wxCopyFile(tmp, file); wxRemoveFile(tmp); } + +void PGNGameBase::Save(GameBase *base) { + wxFile new_pgn(file, wxFile::write); + + base->Reset(); + bool several = false; + while (base->NextGame()) { + if (several) { + new_pgn.Write("\n\n"); + } else { + several = true; + } + Game *g = base->GetCurrentGame(); + new_pgn.Write(g->GetPGN()); + delete g; + } + + new_pgn.Close(); +} diff --git a/src/base_tab/gamebase/PGNGameBase.hpp b/src/base_tab/gamebase/PGNGameBase.hpp index 7a1a63d..e153701 100644 --- a/src/base_tab/gamebase/PGNGameBase.hpp +++ b/src/base_tab/gamebase/PGNGameBase.hpp @@ -16,4 +16,5 @@ public: std::vector<GameBase *> new_games_bases, std::vector<Game *> new_games); void Reset(); + void Save(GameBase *base); };
\ No newline at end of file |
