Fix bug whereby arrow ignored ephemeral tiles
This commit is contained in:
parent
ceb5d6c20d
commit
ad540e4c4b
2 changed files with 16 additions and 2 deletions
|
@ -95,7 +95,15 @@ export function Game(props: {
|
||||||
}
|
}
|
||||||
|
|
||||||
const new_position = current_x + current_y * GRID_LENGTH;
|
const new_position = current_x + current_y * GRID_LENGTH;
|
||||||
if(current_x < GRID_LENGTH && current_y < GRID_LENGTH && boardLetters[new_position] == null) {
|
let tray_letter_at_position = false; // need to also check if the player put a letter in the spot
|
||||||
|
for (const letter of update.playerLetters) {
|
||||||
|
if (letter != null && letter.location == LocationType.GRID && letter.index == new_position) {
|
||||||
|
tray_letter_at_position = true;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(current_x < GRID_LENGTH && current_y < GRID_LENGTH && boardLetters[new_position] == null && !tray_letter_at_position) {
|
||||||
return {
|
return {
|
||||||
direction: existing.direction,
|
direction: existing.direction,
|
||||||
position: new_position,
|
position: new_position,
|
||||||
|
@ -184,6 +192,7 @@ export function Game(props: {
|
||||||
};
|
};
|
||||||
gridArrowDispatch({
|
gridArrowDispatch({
|
||||||
action: GridArrowDispatchActionType.SHIFT,
|
action: GridArrowDispatchActionType.SHIFT,
|
||||||
|
playerLetters: playerLetters
|
||||||
});
|
});
|
||||||
return movePlayableLetters(playerLetters, {
|
return movePlayableLetters(playerLetters, {
|
||||||
action: TileDispatchActionType.MOVE,
|
action: TileDispatchActionType.MOVE,
|
||||||
|
|
|
@ -55,7 +55,12 @@ export enum GridArrowDispatchActionType {
|
||||||
SHIFT,
|
SHIFT,
|
||||||
}
|
}
|
||||||
|
|
||||||
export type GridArrowDispatchAction = {action: GridArrowDispatchActionType, position?: number};
|
// I need to include the playerLetters as an argument because I can't define gridArrow after defining the playerLetters in <Game>
|
||||||
|
export type GridArrowDispatchAction = {
|
||||||
|
action: GridArrowDispatchActionType,
|
||||||
|
position?: number,
|
||||||
|
playerLetters?: PlayableLetterData[] // only needs to be defined on action type SHIFT
|
||||||
|
};
|
||||||
export type GridArrowDispatch = React.Dispatch<GridArrowDispatchAction>;
|
export type GridArrowDispatch = React.Dispatch<GridArrowDispatchAction>;
|
||||||
|
|
||||||
export function matchCoordinate(playerLetters: PlayableLetterData[], coords: CoordinateData): number {
|
export function matchCoordinate(playerLetters: PlayableLetterData[], coords: CoordinateData): number {
|
||||||
|
|
Loading…
Reference in a new issue