ChessNut/engine/core/move.hpp
2025-10-13 13:40:48 +02:00

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