aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-01-16 17:18:54 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2023-01-16 17:18:54 +0100
commit3846e5f9f6337774ac808963d4f53a043993c59b (patch)
treee42ec30c5ce2deab9cb26e76d8fb2db59f4dc054
parent3b11b9d4f3eee5faa656d7ee61077e80726bdc36 (diff)
Update metadata and debug opening guesser
-rw-r--r--src/game_tab/Game.cpp17
-rw-r--r--src/game_tab/HalfMove.cpp23
-rw-r--r--src/game_tab/HalfMove.hpp1
-rw-r--r--tools/assets/icons/screenshot.jpgbin321616 -> 192324 bytes
4 files changed, 26 insertions, 15 deletions
diff --git a/src/game_tab/Game.cpp b/src/game_tab/Game.cpp
index 9028223..c1aa605 100644
--- a/src/game_tab/Game.cpp
+++ b/src/game_tab/Game.cpp
@@ -145,21 +145,8 @@ void Game::GetOpening(std::string &name,std::string &eco){
}else {
// If not, get the current move line (or first move)
// and try to guess opening
- auto line=m->GetLine(); // Vector of HalfMove
- std::string pgn;
- int count=1;
- for(int i=0;i<line.size();i++){
- if(i%2==0){
- pgn+=std::to_string(count)+".";
- count+=1;
- }
- pgn+=line[i]->move +" ";
- }
- // If there is a line, try to guess the opening
- if(pgn.size()>0){
- wxGetApp().GetBook().GuessOpening(pgn,name,eco);
- m->SetOpening(name,eco);
- }
+ wxGetApp().GetBook().GuessOpening(m->GetLineAsSAN(),name,eco);
+ m->SetOpening(name,eco);
}
}
}
diff --git a/src/game_tab/HalfMove.cpp b/src/game_tab/HalfMove.cpp
index 0bac980..e152ce0 100644
--- a/src/game_tab/HalfMove.cpp
+++ b/src/game_tab/HalfMove.cpp
@@ -48,10 +48,27 @@ std::vector<HalfMove *> HalfMove::GetLine(){
else
m=m->parent;
}
+ // Reverse the order to get it in the played order:
std::reverse(line.begin(), line.end());
return line;
}
+std::string HalfMove::GetLineAsSAN(){
+ // If not, get the current move line (or first move)
+ // and try to guess opening
+ auto line=GetLine(); // Vector of HalfMove
+ std::string pgn;
+ int count=1;
+ for(int i=0;i<line.size();i++){
+ if(i%2==0){
+ pgn+=std::to_string(count)+".";
+ count+=1;
+ }
+ pgn+=line[i]->move +" ";
+ }
+ return pgn;
+}
+
HalfMove::HalfMove(HalfMove *m){
src=m->src;
dst=m->dst;
@@ -271,6 +288,12 @@ void HalfMove::BuildAndVerify(HalfMove *m, std::string fen) {
m->fen = arbiter.GetFEN();
if (m->mainline != nullptr) {
BuildAndVerify(m->mainline, arbiter.GetFEN());
+ } else {
+ // Otherwise we are on a leaf! So, guess the opening:
+ std::string name,eco;
+ wxGetApp().GetBook().GuessOpening(m->GetLineAsSAN(),name,eco);
+ if(eco.size()>0)
+ m->SetOpening(name,eco);
}
for (HalfMove *v : m->variations) {
BuildAndVerify(v, fen);
diff --git a/src/game_tab/HalfMove.hpp b/src/game_tab/HalfMove.hpp
index bc56557..297ca50 100644
--- a/src/game_tab/HalfMove.hpp
+++ b/src/game_tab/HalfMove.hpp
@@ -53,6 +53,7 @@ public:
std::vector<HalfMove *> GetVariations();
/// @brief Retrieve the list of moves from the current one to the first one
std::vector<HalfMove *> GetLine();
+ std::string GetLineAsSAN();
std::map<char, std::uint8_t> GetLineCaptures();
/// @brief The opening name of current line
void SetOpening(const std::string &name, const std::string &eco);
diff --git a/tools/assets/icons/screenshot.jpg b/tools/assets/icons/screenshot.jpg
index 115252b..d2b3ebb 100644
--- a/tools/assets/icons/screenshot.jpg
+++ b/tools/assets/icons/screenshot.jpg
Binary files differ