aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab/gamebase
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-27 15:58:16 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-27 15:58:16 +0100
commitc97e151e1be7123d9d15e9ffcff1c46cecbb543a (patch)
treea160099d4b1e7f66b22a19d35c0d1a997aca86bb /src/base_tab/gamebase
parentf40fd3e7a4c5fd36c977ad5343de4fe7859cbbbe (diff)
Improve game import
Diffstat (limited to 'src/base_tab/gamebase')
-rw-r--r--src/base_tab/gamebase/GameBase.cpp3
-rw-r--r--src/base_tab/gamebase/GameBase.hpp2
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp6
-rw-r--r--src/base_tab/gamebase/PGNGameBase.hpp2
4 files changed, 7 insertions, 6 deletions
diff --git a/src/base_tab/gamebase/GameBase.cpp b/src/base_tab/gamebase/GameBase.cpp
index e8f9a59..4c7c1a3 100644
--- a/src/base_tab/gamebase/GameBase.cpp
+++ b/src/base_tab/gamebase/GameBase.cpp
@@ -4,8 +4,9 @@
std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfNotExist){
wxFileName file(dbpath);
wxString ext = file.GetExt().Lower();
+ bool create=createIfNotExist && !file.Exists();
if (ext == "pgn") {
- if(createIfNotExist && !file.Exists())
+ if(create)
PGNGameBase::CreateDatabaseFile(dbpath);
return std::shared_ptr<GameBase>(new PGNGameBase(dbpath));
}
diff --git a/src/base_tab/gamebase/GameBase.hpp b/src/base_tab/gamebase/GameBase.hpp
index 008b36e..6798330 100644
--- a/src/base_tab/gamebase/GameBase.hpp
+++ b/src/base_tab/gamebase/GameBase.hpp
@@ -8,7 +8,7 @@ class GameBase {
public:
virtual std::shared_ptr<Game> GetGame(std::uint32_t id) = 0;
virtual void Save(std::vector<std::uint32_t> to_delete,
- std::vector<std::shared_ptr<GameBase>> databases_to_import,
+ std::vector<std::string> databases_to_import,
std::vector<std::shared_ptr<Game>> games_to_import) = 0;
virtual std::shared_ptr<Game> GetCurrentGame() = 0;
virtual bool NextGame() = 0;
diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp
index 90f035a..0f1ce14 100644
--- a/src/base_tab/gamebase/PGNGameBase.cpp
+++ b/src/base_tab/gamebase/PGNGameBase.cpp
@@ -79,7 +79,7 @@ std::shared_ptr<Game> PGNGameBase::GetGame(std::uint32_t id) {
}
void PGNGameBase::Save(std::vector<std::uint32_t> to_delete,
- std::vector<std::shared_ptr<GameBase>> databases_to_import,
+ std::vector<std::string> databases_to_import,
std::vector<std::shared_ptr<Game>> games_to_import) {
wxStandardPaths stdPaths = wxStandardPaths::Get();
wxString tmp = stdPaths.GetTempDir() + "/save_pgn_tmp.pgn";
@@ -102,8 +102,8 @@ void PGNGameBase::Save(std::vector<std::uint32_t> to_delete,
}
// Now add new games
- for (std::shared_ptr<GameBase> current : databases_to_import) {
- current->Reset();
+ for(auto dbpath: databases_to_import){
+ std::shared_ptr<GameBase> current=OpenDatabase(dbpath);
while (current->NextGame()) {
if (several) {
new_pgn.Write("\n\n");
diff --git a/src/base_tab/gamebase/PGNGameBase.hpp b/src/base_tab/gamebase/PGNGameBase.hpp
index 3f145ca..0661617 100644
--- a/src/base_tab/gamebase/PGNGameBase.hpp
+++ b/src/base_tab/gamebase/PGNGameBase.hpp
@@ -14,7 +14,7 @@ public:
std::shared_ptr<Game> GetCurrentGame();
std::string GetTag(std::string tag);
void Save(std::vector<std::uint32_t> to_delete,
- std::vector<std::shared_ptr<GameBase>> databases_to_import,
+ std::vector<std::string> databases_to_import,
std::vector<std::shared_ptr<Game>> games_to_import);
void Reset();
void Export(std::shared_ptr<GameBase> base);