Release Healer Man 0.1.29
This commit is contained in:
1 parent
8c9809d3e0
commit
544c1bee91
120 files changed
+4363
-1036
No files matched your search
+17
-10
@@ -30,7 +30,9 @@ import { DungeonInteractionPrompt } from "./ui/DungeonInteractionPrompt";
|
||||
import { UiLayoutEditor } from "./ui/UiLayoutEditor";
|
||||
import { EditableHudElement } from "./ui/EditableHudElement";
|
||||
import { activeUiLayout, currentUiDevice } from "./game/uiLayoutStore";
|
||||
import { actionKeyForEvent, desktopSlotForKey } from "./game/uiLayout";
|
||||
import { useUiLayoutStore } from "./game/uiLayoutStore";
|
||||
import { profileInputBindings } from "./game/keybindPreferences";
|
||||
import { KeybindsPanel } from "./ui/KeybindsPanel";
|
||||
|
||||
function InputBridge() {
|
||||
const overlay = useGameStore((state) => state.overlay);
|
||||
@@ -38,16 +40,18 @@ function InputBridge() {
|
||||
|
||||
useEffect(() => installInput({
|
||||
desktopActionBarsActive: () => currentUiDevice() === "pc" && activeUiLayout().wowBars,
|
||||
handleCustomKey: (event) => {
|
||||
const game = useGameStore.getState();
|
||||
if (game.overlay === "ui-layout") return !["Tab", "Enter", "Space", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(event.code);
|
||||
if (currentUiDevice() !== "pc" || game.overlay || game.companionOpen || useCombatStore.getState().pendingGroundTarget) return false;
|
||||
const button = desktopSlotForKey(activeUiLayout(), actionKeyForEvent(event));
|
||||
if (!button) return false;
|
||||
if (!event.repeat && button.abilityId) useCombatStore.getState().castAbility(button.abilityId, game.playerPosition, Date.now());
|
||||
game.setInputMode("keyboard");
|
||||
return true;
|
||||
inputSuspended: () => ["ui-layout", "keybinds"].includes(useGameStore.getState().overlay ?? ""),
|
||||
getBindings: (device) => {
|
||||
const preferences = useUiLayoutStore.getState().preferences;
|
||||
const bindings = profileInputBindings(preferences, device);
|
||||
for (let b = activeUiLayout().barCount; b < 5; b++) for (let s = 0; s < 12; s++) bindings[`bar:${b}:${s}`] = null;
|
||||
return bindings;
|
||||
},
|
||||
castDesktopSlot: (bar, slot) => {
|
||||
const game = useGameStore.getState(); const button = activeUiLayout().bars[bar]?.slots[slot];
|
||||
if (button?.abilityId) useCombatStore.getState().castAbility(button.abilityId, game.playerPosition, Date.now());
|
||||
},
|
||||
togglePanel: (panel) => useGameStore.getState().toggleOverlay(panel),
|
||||
togglePause: () => useGameStore.getState().togglePause(),
|
||||
toggleMap: () => useGameStore.getState().toggleMap(),
|
||||
toggleInventory: () => useGameStore.getState().toggleOverlay("inventory"),
|
||||
@@ -93,6 +97,7 @@ function InputBridge() {
|
||||
}
|
||||
|
||||
export default function GameRuntime() {
|
||||
const editingControls = useGameStore((state) => state.overlay === "keybinds" || state.overlay === "ui-layout");
|
||||
useEffect(() => () => {
|
||||
const activeDungeon = requireDungeonDefinition(useGameStore.getState().activeDungeonId);
|
||||
clearDungeonRuntimeCaches();
|
||||
@@ -102,6 +107,7 @@ export default function GameRuntime() {
|
||||
return (
|
||||
<DualDisplayFrame
|
||||
contextLabel="Tactical"
|
||||
companionDisabled={editingControls}
|
||||
onActiveSurfaceChange={(surface) => useGameStore.getState().setCompanionOpen(surface === "bottom")}
|
||||
top={
|
||||
<main className="game-shell">
|
||||
@@ -119,6 +125,7 @@ export default function GameRuntime() {
|
||||
<GameplayPanels />
|
||||
<PauseMenu />
|
||||
<UiLayoutEditor />
|
||||
<KeybindsPanel />
|
||||
<GmReviewCard />
|
||||
<GmWorldEditor />
|
||||
</main>
|
||||
|
||||
Reference in new issue
Block a user