44 lines
611 B
C++
44 lines
611 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
#include <optional>
|
|
|
|
#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<int> extra;
|
|
};
|
|
|
|
enum class MoveType {
|
|
Normal,
|
|
Capture,
|
|
Castling,
|
|
Promotion,
|
|
Multi,
|
|
CardEffect
|
|
};
|
|
|
|
struct Move {
|
|
std::vector<MoveAction> actions;
|
|
MoveType type = MoveType::Normal;
|
|
int playerId = -1;
|
|
std::string tag;
|
|
};
|
|
|
|
} // namespace engine
|