shogi-player
Version:
Shogi board web components has functions for replaying, manipulating, and editing
93 lines (77 loc) • 2.25 kB
JavaScript
import { Board } from "./models/board.js"
import { Soldier } from "./models/soldier.js"
import { Xcontainer } from "./models/xcontainer.js"
export const mod_api_functions = {
methods: {
// 盤面をシャッフルする
api_board_shuffle() {
this.xcontainer.shuffle_apply(Board.dimension)
},
// 盤を消してランダムに駒を配置する
api_random_puton() {
const soldier = Soldier.random()
this.xcontainer.board.clear()
this.xcontainer.board.place_on(soldier)
return soldier
},
// 駒を置く
api_place_on(soldier) {
this.xcontainer.board.place_on(soldier)
},
// 盤面クリア
api_board_clear() {
this.xcontainer.board.clear()
},
// 指定手数の局面に設定
api_board_turn_set(turn) {
this.xcontainer_setup(turn)
},
// 指定手数の局面に設定(play_mode専用・音が出ない)
api_play_mode_seek_to(turn) {
this.play_mode_xcontainer_seek_to(turn)
},
// // 反転状態の設定
// api_flip_set(flag) {
// this.mut_viewpoint = flag ? "white" : "black"
// },
// 視点を決める
api_viewpoint_set(location_key) {
this.mut_viewpoint = location_key
},
// 反転
api_viewpoint_flip() {
this.viewpoint_flip()
},
// 待った
api_retract_a_move() {
let turn = this.turn_offset - 2
if (turn < 0) {
turn = 0
}
this.api_board_turn_set(turn)
},
// 棋譜の反映
api_sfen_or_kif_set(sfen_or_kif, options = {}) {
this.xcontainer = new Xcontainer()
this.xcontainer.data_source = this.data_source_by(sfen_or_kif)
this.xcontainer.current_turn = options.turn || 0
this.xcontainer.run()
},
// play モード用の変数の準備
api_play_mode_setup() {
this.play_mode_setup()
},
// 持った駒を離す
api_lifted_piece_cancel() {
this.lifted_piece_cancel()
},
// slider にフォーカスする
api_turn_slider_focus() {
this.turn_slider_focus()
},
// 操作モードでの moves.take(turn_offset) 相当を返す
api_moves_take_turn_offset() {
return this.moves_take_turn_offset
},
},
}