24 lines
773 B
C++
24 lines
773 B
C++
#pragma once
|
|
|
|
#include "../core/game_state.hpp"
|
|
#include "../core/move.hpp"
|
|
#include "../core/move_result.hpp"
|
|
#include "../core/move_generator.hpp"
|
|
|
|
namespace engine::plugins {
|
|
|
|
class EffectPlugin {
|
|
public:
|
|
virtual ~EffectPlugin() = default;
|
|
|
|
// modify the move generation step (can register extra moves)
|
|
virtual void modifyMoveGeneration(const engine::GameState& state, engine::MoveGenerator& generator) {}
|
|
|
|
// hook before applying a move (can mutate the move or block it)
|
|
virtual void onBeforeApply(engine::GameState& state, engine::Move& move, engine::MoveResult& out) {}
|
|
|
|
// hook after move applied
|
|
virtual void onAfterApply(engine::GameState& state, const engine::Move& move, engine::MoveResult& out) {}
|
|
};
|
|
|
|
} // namespace engine::plugins
|