Prevent move on right button.
This commit is contained in:
parent
359076563b
commit
eaf95f8eba
@ -204,96 +204,111 @@ const INTERFACE = {
|
|||||||
if(redraw) { INTERFACE.draw(); }
|
if(redraw) { INTERFACE.draw(); }
|
||||||
},
|
},
|
||||||
|
|
||||||
click() {
|
click(event) {
|
||||||
if(INTERFACE_DATA.hover !== null) {
|
switch(event.button) {
|
||||||
INTERFACE_DATA.clicked = INTERFACE_DATA.hover;
|
// Main button
|
||||||
|
case 0: {
|
||||||
|
if(INTERFACE_DATA.hover !== null) {
|
||||||
|
INTERFACE_DATA.clicked = INTERFACE_DATA.hover;
|
||||||
|
|
||||||
if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
|
if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
|
||||||
INTERFACE_DATA.clicked = null;
|
INTERFACE_DATA.clicked = null;
|
||||||
} else {
|
} else {
|
||||||
// Check if operation can be performed on new tile.
|
// Check if operation can be performed on new tile.
|
||||||
// Otherwise, switch selection.
|
// Otherwise, switch selection.
|
||||||
let result = 0;
|
let result = 0;
|
||||||
if(INTERFACE_DATA.select !== null) {
|
if(INTERFACE_DATA.select !== null) {
|
||||||
|
|
||||||
// Play selection.
|
// Play selection.
|
||||||
if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || 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);
|
||||||
}
|
|
||||||
|
|
||||||
// Alt move selection.
|
|
||||||
else if(INTERFACE_DATA.select.source == 0 && INTERFACE_DATA.hover.source == 1) {
|
|
||||||
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
|
||||||
if(alt_piece !== null) {
|
|
||||||
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
|
|
||||||
pool_player ^= INTERFACE_DATA.player & 1;
|
|
||||||
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
|
|
||||||
|
|
||||||
if((INTERFACE_DATA.hover.tile % 7) == alt_piece.piece && alt_piece.player == pool_player) {
|
|
||||||
INTERFACE_DATA.alt_mode = !INTERFACE_DATA.alt_mode;
|
|
||||||
result = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Alt move selection.
|
||||||
|
else if(INTERFACE_DATA.select.source == 0 && INTERFACE_DATA.hover.source == 1) {
|
||||||
|
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
||||||
|
if(alt_piece !== null) {
|
||||||
|
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
|
||||||
|
pool_player ^= INTERFACE_DATA.player & 1;
|
||||||
|
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
|
||||||
|
|
||||||
|
if((INTERFACE_DATA.hover.tile % 7) == alt_piece.piece && alt_piece.player == pool_player) {
|
||||||
|
INTERFACE_DATA.alt_mode = !INTERFACE_DATA.alt_mode;
|
||||||
|
result = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle player action.
|
||||||
|
switch(result) {
|
||||||
|
case 1: {
|
||||||
|
let source = INTERFACE_DATA.select.source;
|
||||||
|
if(source == 0 && INTERFACE_DATA.alt_mode) {
|
||||||
|
source = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
let play = new GAME.Play(
|
||||||
|
source,
|
||||||
|
INTERFACE_DATA.select.tile,
|
||||||
|
INTERFACE_DATA.hover.tile,
|
||||||
|
INTERFACE_DATA.alt_mode
|
||||||
|
);
|
||||||
|
INTERFACE.process(play);
|
||||||
|
INTERFACE_DATA.select = null;
|
||||||
|
INTERFACE_DATA.alt_mode = false;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case 0: {
|
||||||
|
// Handle new selection.
|
||||||
|
INTERFACE_DATA.select = null;
|
||||||
|
INTERFACE_DATA.alt_mode = false;
|
||||||
|
|
||||||
|
// Select tile on board.
|
||||||
|
if(INTERFACE_DATA.hover.source == 0) {
|
||||||
|
if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) {
|
||||||
|
INTERFACE_DATA.select = INTERFACE_DATA.hover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select tile in pools.
|
||||||
|
else {
|
||||||
|
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
|
||||||
|
pool_player ^= INTERFACE_DATA.player & 1;
|
||||||
|
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
|
||||||
|
|
||||||
|
let pool_piece = INTERFACE_DATA.hover.tile % 7;
|
||||||
|
|
||||||
|
if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) {
|
||||||
|
INTERFACE_DATA.select = INTERFACE_DATA.hover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle player action.
|
// Clear selection if no tile is hovered.
|
||||||
switch(result) {
|
else {
|
||||||
case 1: {
|
INTERFACE_DATA.select = null;
|
||||||
let source = INTERFACE_DATA.select.source;
|
|
||||||
if(source == 0 && INTERFACE_DATA.alt_mode) {
|
|
||||||
source = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
let play = new GAME.Play(
|
|
||||||
source,
|
|
||||||
INTERFACE_DATA.select.tile,
|
|
||||||
INTERFACE_DATA.hover.tile,
|
|
||||||
INTERFACE_DATA.alt_mode
|
|
||||||
);
|
|
||||||
INTERFACE.process(play);
|
|
||||||
INTERFACE_DATA.select = null;
|
|
||||||
INTERFACE_DATA.alt_mode = false;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 0: {
|
|
||||||
// Handle new selection.
|
|
||||||
INTERFACE_DATA.select = null;
|
|
||||||
INTERFACE_DATA.alt_mode = false;
|
|
||||||
|
|
||||||
// Select tile on board.
|
|
||||||
if(INTERFACE_DATA.hover.source == 0) {
|
|
||||||
if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) {
|
|
||||||
INTERFACE_DATA.select = INTERFACE_DATA.hover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select tile in pools.
|
|
||||||
else {
|
|
||||||
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
|
|
||||||
pool_player ^= INTERFACE_DATA.player & 1;
|
|
||||||
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
|
|
||||||
|
|
||||||
let pool_piece = INTERFACE_DATA.hover.tile % 7;
|
|
||||||
|
|
||||||
if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) {
|
|
||||||
INTERFACE_DATA.select = INTERFACE_DATA.hover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
}
|
}
|
||||||
}
|
} break;
|
||||||
}
|
|
||||||
|
|
||||||
// Clear selection if no tile is hovered.
|
// Aux button
|
||||||
else {
|
case 1: {
|
||||||
INTERFACE_DATA.select = null;
|
INTERFACE_DATA.select = null;
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
INTERFACE.draw();
|
INTERFACE.draw();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
contextmenu(event) {
|
||||||
|
INTERFACE_DATA.select = null;
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
release() {
|
release() {
|
||||||
if(INTERFACE_DATA.hover !== null
|
if(INTERFACE_DATA.hover !== null
|
||||||
&& !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.clicked)
|
&& !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.clicked)
|
||||||
@ -1006,6 +1021,7 @@ const INTERFACE = {
|
|||||||
canvas.addEventListener("mouseout", INTERFACE.unhover);
|
canvas.addEventListener("mouseout", INTERFACE.unhover);
|
||||||
canvas.addEventListener("mousedown", INTERFACE.click);
|
canvas.addEventListener("mousedown", INTERFACE.click);
|
||||||
canvas.addEventListener("mouseup", INTERFACE.release);
|
canvas.addEventListener("mouseup", INTERFACE.release);
|
||||||
|
canvas.addEventListener("contextmenu", INTERFACE.contextmenu);
|
||||||
window.addEventListener("resize", INTERFACE.draw);
|
window.addEventListener("resize", INTERFACE.draw);
|
||||||
|
|
||||||
switch(INTERFACE_DATA.mode) {
|
switch(INTERFACE_DATA.mode) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user