Release Healer Man 0.1.22
This commit is contained in:
1 parent
f6f2375145
commit
7f6001723a
144 files changed
+54107
-690
No files matched your search
+21
-4
@@ -6,8 +6,14 @@ import { useManastormAdminStore } from "./game/manastormAdminStore";
|
||||
import { useAuthoritativeDualScreenSync, useForcedThorDisplays } from "./platform/useThorDualScreen";
|
||||
import { LoginScreen } from "./ui/LoginScreen";
|
||||
import { OnlineGroupCoordinator } from "./app/OnlineGroupCoordinator";
|
||||
import { preloadTalentGameplayResources } from "./ui/talentGameplayResources";
|
||||
import {
|
||||
getLoadedGameRuntime,
|
||||
loadGameRuntime,
|
||||
preloadSharedGameplayResources,
|
||||
} from "./ui/gameplayResources";
|
||||
|
||||
const GameRuntime = lazy(() => import("./GameRuntime"));
|
||||
const GameRuntime = lazy(loadGameRuntime);
|
||||
const CharacterCreateScreen = lazy(() => import("./ui/CharacterCreateScreen").then((module) => ({ default: module.CharacterCreateScreen })));
|
||||
const CharacterSelectScreen = lazy(() => import("./ui/CharacterSelectScreen").then((module) => ({ default: module.CharacterSelectScreen })));
|
||||
const ClassHallScreen = lazy(() => import("./ui/ClassHallScreen").then((module) => ({ default: module.ClassHallScreen })));
|
||||
@@ -32,7 +38,11 @@ function RuntimeCatalogGate({ children }: { readonly children: ReactNode }) {
|
||||
if (definition.mode === "conquest") return [...BASE_CLASS_IDS, character.classId];
|
||||
return [character.classId, ...(character.secondaryClassId ? [character.secondaryClassId] : [])];
|
||||
}, [character]);
|
||||
const talentClassId = character && !character.classId.startsWith("rom-")
|
||||
? character.classId
|
||||
: null;
|
||||
const requestKey = classIds.join(":");
|
||||
const originalMediaEnabled = useShellStore((state) => state.combatPresentationSettings.originalMediaEnabled);
|
||||
const [loadedKey, setLoadedKey] = useState("");
|
||||
const [failedKey, setFailedKey] = useState("");
|
||||
|
||||
@@ -40,13 +50,17 @@ function RuntimeCatalogGate({ children }: { readonly children: ReactNode }) {
|
||||
if (!requestKey) return;
|
||||
let active = true;
|
||||
setFailedKey("");
|
||||
void preloadAbilityCatalogsForClasses(classIds).then(() => {
|
||||
void Promise.all([
|
||||
preloadAbilityCatalogsForClasses(classIds),
|
||||
talentClassId ? preloadTalentGameplayResources(talentClassId) : Promise.resolve(),
|
||||
preloadSharedGameplayResources(originalMediaEnabled),
|
||||
]).then(() => {
|
||||
if (active) setLoadedKey(requestKey);
|
||||
}).catch(() => {
|
||||
if (active) setFailedKey(requestKey);
|
||||
});
|
||||
return () => { active = false; };
|
||||
}, [classIds, requestKey]);
|
||||
}, [classIds, originalMediaEnabled, requestKey, talentClassId]);
|
||||
|
||||
if (!requestKey || loadedKey === requestKey) return children;
|
||||
if (failedKey === requestKey) {
|
||||
@@ -61,6 +75,7 @@ export default function App() {
|
||||
const phase = useShellStore((state) => state.phase);
|
||||
const session = useShellStore((state) => state.session);
|
||||
const refreshManastormConfig = useManastormAdminStore((state) => state.refresh);
|
||||
const PreloadedGameRuntime = getLoadedGameRuntime();
|
||||
|
||||
useEffect(() => {
|
||||
void refreshManastormConfig(session);
|
||||
@@ -77,7 +92,9 @@ export default function App() {
|
||||
else if (phase === "arenas") screen = <Suspense fallback={<ShellTransition />}><ArenaSelectScreen /></Suspense>;
|
||||
else if (phase === "arena-game") screen = <Suspense fallback={<ShellTransition />}><ArenaRuntime /></Suspense>;
|
||||
else if (phase === "gm-admin") screen = <Suspense fallback={<ShellTransition />}><GmAdminScreen /></Suspense>;
|
||||
else if (phase === "game") screen = <Suspense fallback={<ShellTransition />}><GameRuntime /></Suspense>;
|
||||
else if (phase === "game") screen = PreloadedGameRuntime
|
||||
? <PreloadedGameRuntime />
|
||||
: <Suspense fallback={<ShellTransition />}><GameRuntime /></Suspense>;
|
||||
const requiresRuntimeCatalog = !["login", "characters", "create-character"].includes(phase);
|
||||
return <><OnlineGroupCoordinator />{requiresRuntimeCatalog ? <RuntimeCatalogGate>{screen}</RuntimeCatalogGate> : screen}</>;
|
||||
}
|
||||
Reference in new issue
Block a user