aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab
diff options
context:
space:
mode:
Diffstat (limited to 'src/base_tab')
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/base_tab/gamebase/PGNGameBase.cpp b/src/base_tab/gamebase/PGNGameBase.cpp
index 9ee5038..90f035a 100644
--- a/src/base_tab/gamebase/PGNGameBase.cpp
+++ b/src/base_tab/gamebase/PGNGameBase.cpp
@@ -40,13 +40,23 @@ std::shared_ptr<Game> PGNGameBase::GetCurrentGame() {
if (pgn->HasTag("FEN")) {
fen = pgn->GetTagValue("FEN");
}
- HalfMove *m = new HalfMove(pgnp_moves);
- m->SetFen(fen);
- Game *g = new Game(m, fen);
+
+ // Init game object
+ Game *g;
+ if(pgnp_moves->count == -1){ // Check if PGN contains at least a move
+ g=new Game(fen);
+ }
+ else {
+ HalfMove *m = new HalfMove(pgnp_moves);
+ m->SetFen(fen);
+ g=new Game(m, fen);
+ }
+ // Setup game object
for (std::string &s : pgn->GetTagList()) {
g->SetTag(s, pgn->GetTagValue(s));
}
g->SetResult(pgn->GetResult());
+ // Finish
return (std::shared_ptr<Game>(g));
}
@@ -144,9 +154,13 @@ std::string PGNGameBase::GetPGN(std::shared_ptr<Game> g) {
for (auto const &element : g->ListTags()) {
pgn += '[' + element + " \"" + g->GetTag(element) + "\"]\n";
}
- pgn += GetMovesPGN(m,m->IsABlackMove());
- pgn += " " + g->GetResult();
+ if(m !=NULL){
+ pgn += GetMovesPGN(m,m->IsABlackMove());
+ pgn += " ";
+ }
+
+ pgn += g->GetResult();
return (pgn);
}