From a70b30c7a4a6c06210c0ec6ecc1bfddfabea3113 Mon Sep 17 00:00:00 2001 From: Jason Reed Date: Thu, 22 Feb 2024 16:57:03 -0500 Subject: [PATCH] Fix bug where required letter bonuses reject all tiles --- src/core/landing-result.ts | 4 ++-- src/core/letters.ts | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/landing-result.ts b/src/core/landing-result.ts index 333bde2..a6f3c92 100644 --- a/src/core/landing-result.ts +++ b/src/core/landing-result.ts @@ -1,7 +1,7 @@ import { DEBUG } from "../util/debug"; import { Point } from "../util/types"; import { getOverlay } from "./layer"; -import { AbstractLetter } from "./letters"; +import { AbstractLetter, lettersMatch } from "./letters"; import { MobState, MobType, collidesWithMob, mobsMap } from "./mobs"; import { CoreState, MobileEntity, MoveMobile } from "./state"; import { CellContents, cellAtPointForMobiles, get_mobiles } from "./tile-helpers"; @@ -87,7 +87,7 @@ export function landMobileOnCell(m: MoveSource, c: CellContents): LandingResult case 'empty': return { t: 'place' }; case 'tree': return { t: 'collision' }; case 'bomb': return { t: 'collision' }; - case 'required': return (m.t == 'tile' && (m.letter == bonus.letter || DEBUG.allWords)) ? { t: 'place' } : { t: 'collision' }; + case 'required': return (m.t == 'tile' && (lettersMatch(m.letter, bonus.letter) || DEBUG.allWords)) ? { t: 'place' } : { t: 'collision' }; case 'consonant': return { t: 'collision' }; case 'vowel': return { t: 'collision' }; case 'copy': return { t: 'collision' }; diff --git a/src/core/letters.ts b/src/core/letters.ts index f69d64d..b553f9f 100644 --- a/src/core/letters.ts +++ b/src/core/letters.ts @@ -41,3 +41,9 @@ export function letterOfIndex(i: number): AbstractLetter { } throw new Error(`Unknown abstract letter index ${i}`); } + +export function lettersMatch(al1: AbstractLetter, al2: AbstractLetter): boolean { + switch (al1.t) { + case 'single': return al2.t == 'single' && al2.letter == al1.letter; + } +}