aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab/gamebase
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-02-25 14:57:09 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-02-25 14:57:09 +0100
commit98488e899a750703562d868d734251cfe032e294 (patch)
tree9bd60859300f4d14f00e4c28d8f87e6a5396abb4 /src/base_tab/gamebase
parentcbcc455e339a6fec87f16369e450620ef7692a34 (diff)
Enable database export
Diffstat (limited to 'src/base_tab/gamebase')
-rw-r--r--src/base_tab/gamebase/GameBase.hpp1
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp39
-rw-r--r--src/base_tab/gamebase/PGNGameBase.hpp1
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