#pragma once #include #include #include #include "piece.hpp" namespace engine { struct Coord { int x; int y; }; enum class MoveActionKind { Move, Capture, Create, Remove, SetFlag }; struct MoveAction { MoveActionKind kind; Coord from; Coord to; std::optional extra; }; enum class MoveType { Normal, Capture, Castling, Promotion, Multi, CardEffect }; struct Move { std::vector actions; MoveType type = MoveType::Normal; int playerId = -1; std::string tag; }; } // namespace engine