Release v0.1.3 2026-07-11
This commit is contained in:
@@ -6,6 +6,7 @@ import type { AppScreen } from "../frontend/types";
|
||||
import { FrontEnd } from "../components/FrontEnd";
|
||||
import { createDualScreenChannel, type DualScreenMessage, type FrontendCommand, type GameCommand } from "./dualScreenSync";
|
||||
import type { BossId } from "../game/types";
|
||||
import type { DifficultySlug } from "../game/progression/loot";
|
||||
import { useForcedThorDisplays } from "./useThorDualScreen";
|
||||
import { createRateLimitedPublisher } from "./rateLimitedPublisher";
|
||||
|
||||
@@ -18,6 +19,7 @@ function screenTitle(screen: AppScreen) {
|
||||
case "saves": return "Choose hunter save";
|
||||
case "home": return "Choose expedition";
|
||||
case "profile": return "Hunter profile";
|
||||
case "gear": return "Gear upgrade";
|
||||
case "settings": return "Field settings";
|
||||
case "mode": return "Prepare encounter";
|
||||
case "game": return "Field console";
|
||||
@@ -64,8 +66,8 @@ export function BottomDisplayApp() {
|
||||
channelRef.current?.postMessage({ type: "frontend-command", command } satisfies DualScreenMessage);
|
||||
}, []);
|
||||
|
||||
const launchGame = useCallback((bossIds: readonly BossId[]) => {
|
||||
postFrontendCommand({ name: "launchGame", bossIds });
|
||||
const launchGame = useCallback((bossIds: readonly BossId[], difficultySlug?: DifficultySlug) => {
|
||||
postFrontendCommand({ name: "launchGame", bossIds, difficultySlug });
|
||||
}, [postFrontendCommand]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -115,6 +117,23 @@ export function BottomDisplayApp() {
|
||||
downloadSlot: (slotId) => postFrontend({ name: "downloadSlot", slotId }),
|
||||
selectMode: (mode) => postFrontend({ name: "selectMode", mode }),
|
||||
selectBoss: (bossId) => postFrontend({ name: "selectBoss", bossId }),
|
||||
selectDifficulty: (difficultySlug) => postFrontend({ name: "selectDifficulty", difficultySlug }),
|
||||
selectGearOwner: (ownerId) => postFrontend({ name: "selectGearOwner", ownerId }),
|
||||
selectGearSlot: (slotId) => postFrontend({ name: "selectGearSlot", slotId }),
|
||||
selectGearWorkshopMode: (mode) => postFrontend({ name: "selectGearWorkshopMode", mode }),
|
||||
selectInfusion: (infusionId) => postFrontend({ name: "selectInfusion", infusionId }),
|
||||
upgradeSelectedGear: () => {
|
||||
postFrontend({ name: "upgradeSelectedGear" });
|
||||
return false;
|
||||
},
|
||||
equipSelectedInfusion: () => {
|
||||
postFrontend({ name: "equipSelectedInfusion" });
|
||||
return false;
|
||||
},
|
||||
equipPassiveInfusion: (passiveId) => {
|
||||
postFrontend({ name: "equipPassiveInfusion", passiveId });
|
||||
return false;
|
||||
},
|
||||
selectHealerClass: (classId) => postFrontend({ name: "selectHealerClass", classId }),
|
||||
updateSetting: (key, value) => postFrontend({ name: "updateSetting", key, value }),
|
||||
});
|
||||
@@ -131,6 +150,11 @@ export function BottomDisplayApp() {
|
||||
selectItem: (itemId) => postCommand({ name: "selectItem", itemId }),
|
||||
setPaused: (paused) => postCommand({ name: "setPaused", paused }),
|
||||
setPauseSelection: (selection) => postCommand({ name: "setPauseSelection", selection }),
|
||||
setSelectedRunBuff: (buffId) => postCommand({ name: "setSelectedRunBuff", buffId }),
|
||||
chooseRunBuff: (buffId) => {
|
||||
postCommand({ name: "chooseRunBuff", buffId });
|
||||
return false;
|
||||
},
|
||||
});
|
||||
channel.onmessage = (event: MessageEvent<DualScreenMessage>) => {
|
||||
if (event.data.type === "authoritative-ready") {
|
||||
|
||||
Reference in New Issue
Block a user