refresh 77518ae98cef372c3d26fc7e5c43c5ad4a09c6f5
[tagua/yd.git] / src / variants / shogi / moveserializer.cpp
blobfb6e17c349411f58b51abd371bace081c465b5eb
2 #include "moveserializer.h"
4 #include <core/board.h>
5 #include <core/state.h>
7 namespace Shogi {
9 MoveSerializer::MoveSerializer(const QString& rep, IValidator* validator)
10 : Chess::MoveSerializer(rep, validator) { }
12 QString MoveSerializer::serialize(const Move& move, const IState* ref) const {
13 if (m_rep == "simple") {
14 int ysize = ref->board()->size().y;
15 QString res = move.src().toString(ysize) + move.dst().toString(ysize);
16 if (move.promotion())
17 res = res + "=" +
18 symbol(
19 move.promotion()
20 ).toUpper();
21 return res;
23 else if (m_rep == "compact") {
24 return san(move, ref);
26 else if (m_rep == "decorated") {
27 QString res = san(move, ref);
28 res.replace('K', "{king}");
29 res.replace('G', "{gold}");
30 res.replace('S', "{silver}");
31 res.replace('N', "{knight}");
32 res.replace('L', "{lance}");
33 res.replace('B', "{bishop}");
34 res.replace('R', "{rook}");
35 res.replace('P', "{pawn}");
36 return res;
38 else {
39 return "";
43 } // namespace Shogi