Preliminary port of Shogi to the component API.
[tagua/yd.git] / src / variants / shogi / moveserializer.cpp
blobeab4be59b0d607c1e0ea431521d89f752cf267d8
2 #include "moveserializer.h"
4 #include <core/board.h>
5 #include <core/state.h>
7 namespace Shogi {
9 MoveSerializer::MoveSerializer(IMoveSerializer* serializer)
10 : Delegators::MoveSerializer(serializer) { }
12 QString MoveSerializer::serialize(const Move& move, const IState* ref) const {
13 if (type() == "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 (type() == "compact") {
24 return san(move, ref);
26 else if (type() == "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