From 04fe52806080e61a0037f859ab3b582e25b7dc00 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 26 Dec 2022 20:14:15 +0100 Subject: [PATCH] Debug PGN parsing --- src/MainWindow.cpp | 6 +++--- src/base_tab/gamebase/PGNGameBase.cpp | 24 +++++++++++++++++++----- 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(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 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(g)); } @@ -144,9 +154,13 @@ std::string PGNGameBase::GetPGN(std::shared_ptr 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); }