aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-26 20:14:15 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-26 20:14:15 +0100
commit04fe52806080e61a0037f859ab3b582e25b7dc00 (patch)
tree4ec1c3e370c00cd5e3bf0787da17953cbe3687d1
parent5691b7b30f966f72ce1cac18e4573132b351cbbd (diff)
Debug PGN parsing
-rw-r--r--src/MainWindow.cpp6
-rw-r--r--src/base_tab/gamebase/PGNGameBase.cpp24
2 files changed, 22 insertions, 8 deletions
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 0602110..6e5850b 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -60,9 +60,9 @@ MainWindow::MainWindow()
NewGame(std::shared_ptr<Game>(new Game()));
// Temporary TO REMOVE JUST FOR TESTS:
- /*BaseTab *bt = new BaseTab((wxFrame *)notebook, "/home/loic/pgn/Milov.pgn");
- this->AddPage(bt,bt);
-
+ //BaseTab *bt = new BaseTab((wxFrame *)notebook, "/home/loic/jean.pgn");
+ //this->AddPage(bt,bt);
+/*
bt = new BaseTab((wxFrame *)notebook, "/home/loic/pgn/Milov.pgn");
this->AddPage(bt,bt);*/
}
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);
}