Update metadata and debug opening guesser

This commit is contained in:
Loic Guegan 2023-01-16 17:18:54 +01:00
parent 3b11b9d4f3
commit 3846e5f9f6
4 changed files with 26 additions and 15 deletions

View file

@ -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);
}
}
}

View file

@ -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);

View file

@ -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);

Binary file not shown.

Before

(image error) Size: 314 KiB

After

(image error) Size: 188 KiB