UNPKG

xchess

Version:

Chess Engine

62 lines (45 loc) 943 B
export {PromotionState} import {ProxyState} from './proxy-state.js' import {Transitional} from './transitional-state.js' import {PromotionEvent, MoveEvent} from './events.js' import {PROMOTION_REQUIRED} from './errors.js' class PromotionState extends Transitional(ProxyState) { #move; constructor(move, target, prev){ super(target, prev); this.#move = move; } get lastMove(){ return this.#move; } // Stat get status(){ return 'promotion'; } get isMovement(){ return true; } get isPromotion(){ return true; } // Log Event undo(){ this.#move.undo(this.context); } redo(){ this.#move.redo(this.context); } trigger(){ this.dispatch(new PromotionEvent('promotion', this.#move)); } // Game Events move(move){ throw PROMOTION_REQUIRED(); } promote(piece){ const move = this.#move.respond(piece); this.dispatch(new MoveEvent('promote', move)); this.target.do(move); return true; } }