Change practice player to 2.

This commit is contained in:
yukirij 2024-09-05 09:15:34 -07:00
parent b3a1ef8dd7
commit d78722ca51
2 changed files with 52 additions and 36 deletions

View File

@ -216,7 +216,7 @@ const INTERFACE = {
if(INTERFACE_DATA.select !== null) { if(INTERFACE_DATA.select !== null) {
// Play selection. // Play selection.
if(INTERFACE_DATA.hover.source == 0 && INTERFACE_DATA.player == (GAME_DATA.turn & 1)) { if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || INTERFACE_DATA.player == (GAME_DATA.turn & 1))) {
let tile_state = INTERFACE_DATA.board_state[INTERFACE_DATA.hover.tile][1]; let tile_state = INTERFACE_DATA.board_state[INTERFACE_DATA.hover.tile][1];
result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
} }
@ -477,8 +477,6 @@ const INTERFACE = {
ctx.font = Math.ceil(gui_scale / 2) + "px sans-serif"; ctx.font = Math.ceil(gui_scale / 2) + "px sans-serif";
let player_identity = GAME.Const.Player.Dawn; let player_identity = GAME.Const.Player.Dawn;
let player_color = INTERFACE.Color.Dawn;
let opponent_color = INTERFACE.Color.Dusk;
if(INTERFACE_DATA.player == 1 || (INTERFACE_DATA.player == 2 && INTERFACE_DATA.rotate == 1)) { if(INTERFACE_DATA.player == 1 || (INTERFACE_DATA.player == 2 && INTERFACE_DATA.rotate == 1)) {
player_identity = GAME.Const.Player.Dusk; player_identity = GAME.Const.Player.Dusk;
@ -929,9 +927,7 @@ const INTERFACE = {
GAME.init(); GAME.init();
let player = 2; let player = 2;
if(mode == INTERFACE.Mode.Local) { player = 0; }
let history = [ ];
let dawn = null; let dawn = null;
let dusk = null; let dusk = null;
@ -955,7 +951,7 @@ const INTERFACE = {
resign:false, resign:false,
resign_warn:false, resign_warn:false,
history: history, history: [ ],
history_begin: [ ], history_begin: [ ],
replay_turn: 0, replay_turn: 0,
@ -1015,12 +1011,15 @@ const INTERFACE = {
}, },
reset() { reset() {
GAME.init();
INTERFACE_DATA.history = INTERFACE_DATA.history_begin;
INTERFACE_DATA.player = 0;
INTERFACE_DATA.rotate = 0;
INTERFACE_DATA.auto_mode = null; INTERFACE_DATA.auto_mode = null;
INTERFACE.draw();
GAME.init();
INTERFACE_DATA.history = [ ];
for(let i = 0; i < INTERFACE_DATA.history_begin.length; ++i) {
INTERFACE_DATA.history.push(INTERFACE_DATA.history_begin[i]);
}
INTERFACE.replay_jump(INTERFACE_DATA.history.length, false);
}, },
message(code, data) { message(code, data) {
@ -1078,32 +1077,50 @@ const INTERFACE = {
}, },
process(play) { process(play) {
// Send message to server for online game. let valid = true;
switch(INTERFACE_DATA.mode) {
// Apply action and change turn for local game.
case INTERFACE.Mode.Local: {
INTERFACE.history_push(play, true);
INTERFACE_DATA.player = +(!INTERFACE_DATA.player); switch(play.source) {
INTERFACE_DATA.rotate = +(!INTERFACE_DATA.rotate); case 0: {
let piece_id = GAME_DATA.board.tiles[play.from].piece;
INTERFACE.draw(); let piece = GAME_DATA.board.pieces[piece_id];
valid = piece.player == (GAME_DATA.turn & 1);
if(INTERFACE_DATA.auto_mode !== null && INTERFACE_DATA.auto_mode == (GAME_DATA.turn & 1)) {
setTimeout(INTERFACE.auto_play, 1000);
}
} break; } break;
// Send action to server for validation. case 1: {
case INTERFACE.Mode.Player: { let player = play.from / 7;
let move_data = play.source | (play.from << 1) | (play.to << 7); valid = player == (GAME_DATA.turn & 1);
MESSAGE_COMPOSE([
PACK.u16(OpCode.GamePlay),
PACK.u16(0),
PACK.u16(GAME_DATA.turn),
PACK.u16(move_data),
]);
} break; } break;
case 2: {
valid = INTERFACE_DATA.mode == INTERFACE.Mode.Player;
} break;
}
if(valid) {
// Send message to server for online game.
switch(INTERFACE_DATA.mode) {
// Apply action and change turn for local game.
case INTERFACE.Mode.Local: {
INTERFACE.history_push(play, true);
INTERFACE.draw();
if(INTERFACE_DATA.auto_mode !== null && INTERFACE_DATA.auto_mode == (GAME_DATA.turn & 1)) {
setTimeout(INTERFACE.auto_play, 1000);
}
} break;
// Send action to server for validation.
case INTERFACE.Mode.Player: {
let move_data = play.source | (play.from << 1) | (play.to << 7);
MESSAGE_COMPOSE([
PACK.u16(OpCode.GamePlay),
PACK.u16(0),
PACK.u16(GAME_DATA.turn),
PACK.u16(move_data),
]);
} break;
}
} }
}, },
@ -1162,7 +1179,7 @@ const INTERFACE = {
turn = +turn; turn = +turn;
if(turn >= 0 && turn <= INTERFACE_DATA.history.length) { if(turn >= 0 && turn <= INTERFACE_DATA.history.length) {
if(turn < INTERFACE_DATA.replay_turn) { if(turn <= INTERFACE_DATA.replay_turn) {
INTERFACE_DATA.replay_turn = 0; INTERFACE_DATA.replay_turn = 0;
GAME.init(); GAME.init();
} }

View File

@ -658,10 +658,9 @@ const SCENES = {
INTERFACE.init(null, INTERFACE.Mode.Local); INTERFACE.init(null, INTERFACE.Mode.Local);
if(data !== null) { if(data !== null) {
for(let i = 0; i < data.turn; ++i) { for(let i = 0; i < data.turn; ++i) {
INTERFACE.process(data.history[i]);
INTERFACE_DATA.history_begin.push(data.history[i]); INTERFACE_DATA.history_begin.push(data.history[i]);
} }
INTERFACE.draw(); INTERFACE.reset();
} }
history.pushState(null, "Dzura - Practice", "/practice/"); history.pushState(null, "Dzura - Practice", "/practice/");