diff --git a/src/components/MainScene/Lain.tsx b/src/components/MainScene/Lain.tsx index f7c5830..40c416f 100644 --- a/src/components/MainScene/Lain.tsx +++ b/src/components/MainScene/Lain.tsx @@ -32,7 +32,7 @@ import leanRightSpriteSheet from "../../static/sprite/lean_right.png"; import lookAroundSpriteSheet from "../../static/sprite/look_around.png"; import playWithHairSpriteSheet from "../../static/sprite/play_with_hair.png"; -import { useLainStore } from "../../store"; +import { useMainSceneStore } from "../../store"; type LainConstructorProps = { sprite: string; @@ -353,7 +353,7 @@ type LainProps = { }; const Lain = (props: LainProps) => { - const lainMoveState = useLainStore((state) => state.lainMoveState); + const lainMoveState = useMainSceneStore((state) => state.lainMoveState); const lainAnimationDispatch = useMemo(() => { const anims = { diff --git a/src/components/MainScene/SyncedComponents/HUD.tsx b/src/components/MainScene/SyncedComponents/HUD.tsx index f9864ef..f74fabd 100644 --- a/src/components/MainScene/SyncedComponents/HUD.tsx +++ b/src/components/MainScene/SyncedComponents/HUD.tsx @@ -8,33 +8,36 @@ import longHudMirrored from "../../../static/sprite/long_hud_mirrored.png"; import boringHud from "../../../static/sprite/long_hud_boring.png"; import boringHudMirrored from "../../../static/sprite/long_hud_boring_mirrored.png"; import { a, useSpring } from "@react-spring/three"; -import { useHudStore, useNodeStore, useSiteStore } from "../../../store"; -import node_huds from "../../../resources/node_huds.json"; +import { useMainSceneStore } from "../../../store"; import MediumLetter from "../../TextRenderer/MediumLetter"; -import site_a from "../../../resources/site_a.json"; -import site_b from "../../../resources/site_b.json"; -import { SiteType } from "./Site"; + +export type HUDType = { + mirrored: number; + long: { + position: number[]; + initial_position: number[]; + }; + boring: { + position: number[]; + initial_position: number[]; + }; + big: { + position: number[]; + initial_position: number[]; + }; + big_text: number[]; + medium_text: { + position: number[]; + initial_position: number[]; + }; +}; const HUD = () => { - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const currentSite = useSiteStore((state) => state.currentSite); - - const greenText = useMemo(() => { - if (activeNodeId === "UNKNOWN") return "".split(""); - else { - const siteData = currentSite === "a" ? site_a : site_b; - const level = activeNodeId.substr(0, 2); - - return (siteData as SiteType)[level][activeNodeId].title.split(""); - } - }, [activeNodeId, currentSite]); - - const active = useHudStore((state) => state.active); - const id = useHudStore((state) => state.id); - - const currentHud = useMemo(() => node_huds[id as keyof typeof node_huds], [ - id, - ]); + const greenText = useMainSceneStore((state) => + state.activeNode.title.split("") + ); + const active = useMainSceneStore((state) => state.hudActive); + const currentHud = useMainSceneStore((state) => state.hud); const hudElementState = useSpring({ bigHUDPositionX: active, @@ -145,7 +148,7 @@ const HUD = () => { position-z={-8.7} scale={[0.02, 0.035, 0.02]} > - {greenText.map((letter, idx) => ( + {greenText.map((letter: string, idx: number) => ( ))} diff --git a/src/components/MainScene/SyncedComponents/Site.tsx b/src/components/MainScene/SyncedComponents/Site.tsx index dc419ad..26d016e 100644 --- a/src/components/MainScene/SyncedComponents/Site.tsx +++ b/src/components/MainScene/SyncedComponents/Site.tsx @@ -1,11 +1,6 @@ import React, { Suspense, useMemo } from "react"; import { a, useSpring } from "@react-spring/three"; -import { - useLevelStore, - useMainSceneStore, - useNodeStore, - useSiteStore, -} from "../../../store"; +import { useLevelStore, useMainSceneStore, useSiteStore } from "../../../store"; import ActiveLevelNodes from "./Site/ActiveLevelNodes"; import InactiveLevelNodes from "./Site/InactiveLevelNodes"; import Rings from "./Site/Rings"; @@ -69,7 +64,7 @@ const Site = (props: SiteProps) => { config: { duration: 3400 }, }); - const gameProgress = useNodeStore((state) => state.gameProgress); + const gameProgress = useMainSceneStore((state) => state.gameProgress); const currentSite = useSiteStore((state) => state.currentSite); diff --git a/src/components/MainScene/SyncedComponents/Site/ActiveLevelNodes.tsx b/src/components/MainScene/SyncedComponents/Site/ActiveLevelNodes.tsx index 2dec24f..5c53483 100644 --- a/src/components/MainScene/SyncedComponents/Site/ActiveLevelNodes.tsx +++ b/src/components/MainScene/SyncedComponents/Site/ActiveLevelNodes.tsx @@ -1,22 +1,26 @@ import React, { useEffect, useMemo } from "react"; import Node from "./Node"; import node_positions from "../../../../resources/node_positions.json"; -import { useNodeStore } from "../../../../store"; +import { useMainSceneStore } from "../../../../store"; import { isNodeVisible } from "../../../../core/nodeSelector"; import { NodesProps } from "../Site"; const ActiveLevelNodes = (props: NodesProps) => { - const activeNodeState = useNodeStore((state) => state.activeNodeState); + const activeNodeId = useMainSceneStore((state) => state.activeNode.id); const activeLevelNodes = useMemo( () => props.siteData[props.activeLevel as keyof typeof props.siteData], [props] ); + useEffect(() => { + console.log(activeNodeId); + }, [activeNodeId]); + return ( <> {Object.entries(activeLevelNodes).map((node: [string, any]) => { - if (isNodeVisible(node[0], props.gameProgress, props.currentSite)) { + if (isNodeVisible(node[1], props.gameProgress)) { return ( { .rotation } key={node[1].node_name} - active={node[0] === activeNodeState.id} + active={node[0] === activeNodeId} level={node[0].substr(0, 2)} /> ); diff --git a/src/components/MainScene/SyncedComponents/Site/InactiveLevelNodes.tsx b/src/components/MainScene/SyncedComponents/Site/InactiveLevelNodes.tsx index 0d597c0..a106190 100644 --- a/src/components/MainScene/SyncedComponents/Site/InactiveLevelNodes.tsx +++ b/src/components/MainScene/SyncedComponents/Site/InactiveLevelNodes.tsx @@ -25,7 +25,7 @@ const InactiveLevelNodes = memo((props: NodesProps) => { return ( <> {Object.entries(visibleNodes).map((node: [string, any]) => { - if (isNodeVisible(node[0], props.gameProgress, props.currentSite)) { + if (isNodeVisible(node[1], props.gameProgress)) { return ( { - // the game only has a couple of sprite that it displays in the hub - // dynamically importnig them would be worse for performance, - // so we import all of them here and then use this function to - // associate a sprite with the path - const tex = useMemo(() => { if (props.nodeName.includes("S")) { return [SSkn, SSKnActive]; @@ -106,66 +101,29 @@ const Node = memo((props: NodeContructorProps) => { } `; - // these pieces of state get updated transiently rather than reactively - // to avoid excess unnecessary renders (this is absolutely crucial for performance). - const [ - { - activeNodePosX, - activeNodePosY, - activeNodePosZ, - activeNodeRotZ, - activeNodeVisible, - activeNodeScale, - }, + { activeNodePos, activeNodeRot, activeNodeScale, activeNodeVisible }, set, ] = useSpring(() => ({ - activeNodePosX: useNodeStore.getState().activeNodeState.interactedWith - ? useNodeStore.getState().activeNodeState.posX - : props.position[0], - activeNodePosY: useNodeStore.getState().activeNodeState.interactedWith - ? level_y_values[props.level as keyof typeof level_y_values] + - useNodeStore.getState().activeNodeState.posY - : props.position[1], - activeNodePosZ: useNodeStore.getState().activeNodeState.interactedWith - ? useNodeStore.getState().activeNodeState.posZ - : props.position[2], - activeNodeRotZ: useNodeStore.getState().activeNodeState.interactedWith - ? useNodeStore.getState().activeNodeState.rotZ - : 0, - activeNodeScale: useNodeStore.getState().activeNodeState.shrinking ? 0 : 1, + activeNodePos: props.position, + activeNodeRot: [0, 0, 0], + activeNodeScale: 1, activeNodeVisible: true, config: { duration: 800 }, })); useEffect(() => { - useNodeStore.subscribe(set, (state) => ({ - activeNodePosX: useNodeStore.getState().activeNodeState.interactedWith - ? state.activeNodeState.posX - : props.position[0], - activeNodePosY: useNodeStore.getState().activeNodeState.interactedWith - ? state.activeNodeState.posY - : props.position[1], - activeNodePosZ: useNodeStore.getState().activeNodeState.interactedWith - ? state.activeNodeState.posZ - : props.position[2], - activeNodeRotZ: useNodeStore.getState().activeNodeState.interactedWith + useMainSceneStore.subscribe(set, (state) => ({ + activeNodePos: state.activeNodeState.interactedWith + ? state.activeNodePos + : props.position, + activeNodeRot: state.activeNodeState.interactedWith ? state.activeNodeState.rotZ : 0, - activeNodeScale: useNodeStore.getState().activeNodeState.shrinking - ? 0 - : 1, - activeNodeVisible: useNodeStore.getState().activeNodeState.visible, + activeNodeScale: state.activeNodeState.shrinking ? 0 : 1, + activeNodeVisible: state.activeNodeState.visible, })); - }, [ - props.level, - activeNodePosX, - activeNodePosZ, - activeNodeRotZ, - props.position, - set, - props.rotation, - ]); + }, [props.level, props.position, set, props.rotation]); useFrame(() => { if (materialRef.current) { @@ -189,10 +147,9 @@ const Node = memo((props: NodeContructorProps) => { scale-z={activeNodeScale} > x)} + position-y={activeNodePos.interpolate((x, y, z) => y)} + position-z={activeNodePos.interpolate((x, y, z) => z)} rotation-y={props.rotation[1]} visible={activeNodeVisible} scale={[0.36, 0.18, 0.36]} diff --git a/src/components/MainScene/SyncedComponents/Site/NodeAnimations.tsx b/src/components/MainScene/SyncedComponents/Site/NodeAnimations.tsx index c844ccb..7c20e10 100644 --- a/src/components/MainScene/SyncedComponents/Site/NodeAnimations.tsx +++ b/src/components/MainScene/SyncedComponents/Site/NodeAnimations.tsx @@ -1,21 +1,21 @@ import React from "react"; -import { useNodeStore } from "../../../../store"; +import { useMainSceneStore } from "../../../../store"; import NodeExplosion from "./NodeAnimations/NodeExplosion"; import NodeRip from "./NodeAnimations/NodeRip"; const NodeAnimations = () => { - const nodeShrinking = useNodeStore( + const nodeShrinking = useMainSceneStore( (state) => state.activeNodeState.shrinking ); - const nodeExploding = useNodeStore( + const nodeExploding = useMainSceneStore( (state) => state.activeNodeState.exploding ); return ( <> - {nodeExploding ? : <>} - {nodeShrinking ? : <>} + {nodeExploding && } + {nodeShrinking && } ); }; diff --git a/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion.tsx b/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion.tsx index fda3c1a..79ce161 100644 --- a/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion.tsx +++ b/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion.tsx @@ -4,10 +4,10 @@ import node_explosion_line_positions from "../../../../../resources/node_explosi import { useFrame } from "react-three-fiber"; import GoldNode from "./NodeExplosion/GoldNode"; -import { useNodeStore } from "../../../../../store"; +import { useMainSceneStore } from "../../../../../store"; const NodeExplosion = () => { - const explosionVisible = useNodeStore( + const explosionVisible = useMainSceneStore( (state) => state.activeNodeState.exploding ); diff --git a/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion/GoldNode.tsx b/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion/GoldNode.tsx index 4e84b91..c439ec1 100644 --- a/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion/GoldNode.tsx +++ b/src/components/MainScene/SyncedComponents/Site/NodeAnimations/NodeExplosion/GoldNode.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useRef, useState } from "react"; +import React, { useEffect, useMemo, useRef } from "react"; import { GLTF, GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; import * as THREE from "three"; import { useFrame, useLoader } from "react-three-fiber"; @@ -16,21 +16,7 @@ import Lda from "../../../../../../static/sprite/Lda.png"; import LdaGold from "../../../../../../static/sprite/Lda_gold.png"; import MULTI from "../../../../../../static/sprite/MULTI.png"; import MULTIGold from "../../../../../../static/sprite/MULTI_gold.png"; -import { - useLevelStore, - useNodeStore, - useSiteStore, -} from "../../../../../../store"; -import site_a from "../../../../../../resources/site_a.json"; -import site_b from "../../../../../../resources/site_b.json"; -import { SiteType } from "../../../Site"; -import SSKnActive from "../../../../../../static/sprite/SSkn_active.png"; -import MULTIActive from "../../../../../../static/sprite/MULTI_active.png"; -import DcActive from "../../../../../../static/sprite/Dc_active.png"; -import TdaActive from "../../../../../../static/sprite/Tda_active.png"; -import CouActive from "../../../../../../static/sprite/Cou_active.png"; -import DiaActive from "../../../../../../static/sprite/Dia_active.png"; -import LdaActive from "../../../../../../static/sprite/Lda_active.png"; +import { useMainSceneStore } from "../../../../../../store"; type GLTFResult = GLTF & { nodes: { @@ -48,43 +34,38 @@ type GoldNodeProps = { const GoldNode = (props: GoldNodeProps) => { const { nodes } = useLoader(GLTFLoader, "models/goldNode.glb"); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const activeLevel = useLevelStore((state) => state.activeLevel); - const currentSite = useSiteStore((state) => state.currentSite); - - const siteData = currentSite === "a" ? site_a : site_b; - - const activeNodeData = (siteData as SiteType)[activeLevel][activeNodeId]; - const activeNodeName = activeNodeData.node_name; + const activeNodeName = useMainSceneStore( + (state) => state.activeNode.node_name + ); const tex = useMemo(() => { if (activeNodeName.includes("S")) { - return [SSkn, SSKnActive]; + return [SSkn, SSKnGold]; } else if ( activeNodeName.startsWith("P") || activeNodeName.startsWith("G") || activeNodeName.includes("?") ) { - return [MULTI, MULTIActive]; + return [MULTI, MULTIGold]; } else if (activeNodeName.includes("Dc")) { - return [Dc, DcActive]; + return [Dc, DcGold]; } else { switch (activeNodeName.substr(0, 3)) { case "Tda": - return [Tda, TdaActive]; + return [Tda, TdaGold]; case "Cou": - return [Cou, CouActive]; + return [Cou, CouGold]; case "Dia": - return [Dia, DiaActive]; + return [Dia, DiaGold]; case "Lda": - return [Lda, LdaActive]; + return [Lda, LdaGold]; case "Ere": case "Ekm": case "Eda": case "TaK": case "Env": - return [MULTI, MULTIActive]; + return [MULTI, MULTIGold]; } } }, [activeNodeName]); @@ -109,7 +90,6 @@ const GoldNode = (props: GoldNodeProps) => { } }); - return ( { - const nodeShrinking = useNodeStore( + const nodeShrinking = useMainSceneStore( (state) => state.activeNodeState.shrinking ); const [shouldAnimate, setShouldAnimate] = useState(false); diff --git a/src/components/MediaScene/Images.tsx b/src/components/MediaScene/Images.tsx index 8dc517c..88990cf 100644 --- a/src/components/MediaScene/Images.tsx +++ b/src/components/MediaScene/Images.tsx @@ -1,24 +1,22 @@ -import React, { useEffect, useMemo, useState } from "react"; +import React, { useEffect, useState } from "react"; import { useIdleStore, - useLevelStore, + useMainSceneStore, useMediaStore, - useNodeStore, useSceneStore, useSiteStore, } from "../../store"; import { a, useSpring } from "@react-spring/three"; -import { LevelType, SiteType } from "../MainScene/SyncedComponents/Site"; -import site_a from "../../resources/site_a.json"; -import site_b from "../../resources/site_b.json"; import dummy from "../../static/sprite/dummy.png"; import * as THREE from "three"; import { useLoader } from "react-three-fiber"; const Images = () => { const idleNodeImages = useIdleStore((state) => state.images); + const nodeImages = useMainSceneStore( + (state) => state.activeNodeState.image_table_indices + ); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); const currentScene = useSceneStore((state) => state.currentScene); const [imageScaleY, setImageScaleY] = useState(3.75); @@ -27,8 +25,6 @@ const Images = () => { const currentSite = useSiteStore((state) => state.currentSite); - const siteData = currentSite === "a" ? site_a : site_b; - const dummyTex = useLoader(THREE.TextureLoader, dummy); const mediaPercentageElapsed = useMediaStore( @@ -40,17 +36,10 @@ const Images = () => { config: { duration: 300 }, }); - const activeLevel = useLevelStore((state) => state.activeLevel); - const activeLevelData: LevelType = useMemo( - () => siteData[activeLevel as keyof typeof siteData], - [activeLevel, siteData] - ); - useEffect(() => { let images; if (currentScene === "media" || currentScene === "tak") { - images = (siteData as SiteType)[activeLevel][activeNodeId] - .image_table_indices; + images = nodeImages; } else if (currentScene === "idle_media") { images = idleNodeImages; } @@ -77,15 +66,7 @@ const Images = () => { } }); } - }, [ - activeLevel, - activeLevelData, - activeNodeId, - currentScene, - currentSite, - idleNodeImages, - siteData, - ]); + }, [currentScene, currentSite, idleNodeImages, nodeImages]); useEffect(() => { if (mediaPercentageElapsed === 0 && sceneImages[0]) { diff --git a/src/components/MediaScene/MediaPlayer.tsx b/src/components/MediaScene/MediaPlayer.tsx index c25ef28..1391cea 100644 --- a/src/components/MediaScene/MediaPlayer.tsx +++ b/src/components/MediaScene/MediaPlayer.tsx @@ -6,19 +6,15 @@ import React, { useRef, useState, } from "react"; -import site_a from "../../resources/site_a.json"; -import site_b from "../../resources/site_b.json"; import { useEndSceneStore, useIdleStore, - useLevelStore, + useMainSceneStore, useMediaStore, - useNodeStore, useSceneStore, useSiteStore, } from "../../store"; import t from "../../static/webvtt/test.vtt"; -import { SiteType } from "../MainScene/SyncedComponents/Site"; import endroll from "../../static/movie/ENDROLL1.STR[0].webm"; import xa0001 from "../../static/audio/a/Xa0001.mp4"; import xa0006 from "../../static/audio/a/Xa0006.mp4"; @@ -34,19 +30,17 @@ const MediaPlayer = () => { ); const idleMedia = useIdleStore((state) => state.media); + const nodeMedia = useMainSceneStore((state) => state.activeNode.media_file); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const activeLevel = useLevelStore((state) => state.activeLevel); + const triggersFinalVideo = useMainSceneStore( + (state) => state.activeNode.triggers_final_video + ); const requestRef = useRef(); const videoRef = createRef(); const currentSite = useSiteStore((state) => state.currentSite); - const siteData = useMemo(() => (currentSite === "a" ? site_a : site_b), [ - currentSite, - ]); - // end scene specific stuff const endMediaPlayedCount = useEndSceneStore( (state) => state.mediaPlayedCount @@ -76,10 +70,7 @@ const MediaPlayer = () => { if (currentScene === "end") { incrementEndMediaPlayedCount(); } else { - if ( - (siteData as SiteType)[activeLevel][activeNodeId] - .triggers_final_video === 1 - ) { + if (triggersFinalVideo === 1) { resetEndMediaPlayedCount(); setScene("end"); } else { @@ -91,14 +82,12 @@ const MediaPlayer = () => { } } }, [ - activeLevel, - activeNodeId, currentScene, incrementEndMediaPlayedCount, resetEndMediaPlayedCount, setPercentageElapsed, setScene, - siteData, + triggersFinalVideo, videoRef, ]); @@ -140,8 +129,6 @@ const MediaPlayer = () => { } } else { if (currentScene === "media" || currentScene === "tak") { - const nodeMedia = (siteData as SiteType)[activeLevel][activeNodeId] - .media_file; if (nodeMedia.includes("XA")) { import( "../../static/audio/" + currentSite + "/" + nodeMedia + ".ogg" @@ -188,13 +175,11 @@ const MediaPlayer = () => { } } }, [ - activeLevel, - activeNodeId, currentScene, currentSite, endMediaPlayedCount, idleMedia, - siteData, + nodeMedia, videoRef, ]); diff --git a/src/components/MediaScene/Selectables/RightSide.tsx b/src/components/MediaScene/Selectables/RightSide.tsx index e46c664..b0c2166 100644 --- a/src/components/MediaScene/Selectables/RightSide.tsx +++ b/src/components/MediaScene/Selectables/RightSide.tsx @@ -1,26 +1,16 @@ import React, { useCallback, useMemo } from "react"; -import {useLevelStore, useMediaWordStore, useNodeStore, useSiteStore} from "../../../store"; +import { useMainSceneStore, useMediaWordStore } from "../../../store"; import Word from "./RightSide/Word"; -import { useSpring, a } from "@react-spring/three"; +import { a, useSpring } from "@react-spring/three"; import word_position_states from "../../../resources/word_position_states.json"; import * as THREE from "three"; -import site_a from "../../../resources/site_a.json"; -import { SiteType } from "../../MainScene/SyncedComponents/Site"; -import site_b from "../../../resources/site_b.json"; type RightSideProps = { activeMediaComponent: string; }; const RightSide = (props: RightSideProps) => { - const activeLevel = useLevelStore((state) => state.activeLevel); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - - const currentSite = useSiteStore((state) => state.currentSite); - - const siteData = currentSite === "a" ? site_a : site_b; - - const words = (siteData as SiteType)[activeLevel][activeNodeId].words; + const words = useMainSceneStore((state) => state.activeNode.words); const posStateIdx = useMediaWordStore( (state) => state.posStateIdx diff --git a/src/components/TextRenderer/BigLetter.tsx b/src/components/TextRenderer/BigLetter.tsx index 6b2d20b..343c4cf 100644 --- a/src/components/TextRenderer/BigLetter.tsx +++ b/src/components/TextRenderer/BigLetter.tsx @@ -84,6 +84,7 @@ const BigLetter = memo( config: { duration: 200 }, }); + console.log('rend') return ( { // main scene const currentSite = useSiteStore((state) => state.currentSite); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const nodeMatrixIndices = useNodeStore((state) => state.nodeMatrixIndices); + // const activeNodeId = useNodeStore((state) => state.activeNodeState.id); + // const nodeMatrixIndices = useNodeStore((state) => state.nodeMatrixIndices); const siteTransformState = useSiteStore((state) => state.transformState); const activeLevel = useLevelStore((state) => state.activeLevel); const mainSubscene = useMainSceneStore((state) => state.subscene); @@ -74,7 +73,7 @@ const EventManager = () => { pauseMatrixIdx, ]) ); - const gameProgress = useNodeStore((state) => state.gameProgress); + // const gameProgress = useNodeStore((state) => state.gameProgress); // media scene const mediaComponentMatrixIndices = useMediaStore( @@ -199,13 +198,13 @@ const EventManager = () => { mainSubscene: mainSubscene, keyPress: keyPress, siteTransformState: siteTransformState, - activeNodeId: activeNodeId, - nodeMatrixIndices: nodeMatrixIndices, + // activeNodeId: activeNodeId, + // nodeMatrixIndices: nodeMatrixIndices, activeLevel: activeLevel, selectedLevel: selectedLevel, pauseMatrixIdx: pauseMatrixIdx, activePauseComponent: activePauseComponent, - gameProgress: gameProgress, + // gameProgress: gameProgress, currentSite: currentSite, }); break; @@ -246,13 +245,10 @@ const EventManager = () => { currentScene, mainSubscene, siteTransformState, - activeNodeId, - nodeMatrixIndices, activeLevel, selectedLevel, pauseMatrixIdx, activePauseComponent, - gameProgress, currentSite, activeMediaComponent, wordPosStateIdx, diff --git a/src/core/StateManagers/GameManagers/GameLoader.tsx b/src/core/StateManagers/GameManagers/GameLoader.tsx index 1265e01..7e451ef 100644 --- a/src/core/StateManagers/GameManagers/GameLoader.tsx +++ b/src/core/StateManagers/GameManagers/GameLoader.tsx @@ -1,9 +1,7 @@ import { useCallback, useEffect } from "react"; import { - useHudStore, useLevelStore, useMainSceneStore, - useNodeStore, useSiteSaveStore, useSiteStore, } from "../../../store"; @@ -35,13 +33,13 @@ const GameLoader = (props: StateManagerProps) => { const setCurrentSite = useSiteStore((state) => state.setCurrentSite); // node setter - const setActiveNodeState = useNodeStore((state) => state.setActiveNodeState); - const setNodeMatrixIndices = useNodeStore( + const setActiveNode = useMainSceneStore((state) => state.setNode); + const setNodeMatrixIndices = useMainSceneStore( (state) => state.setNodeMatrixIndices ); // node hud setter - const setHudId = useHudStore((state) => state.setId); + const setHud = useMainSceneStore((state) => state.setHud); const changeSite = useCallback( (site: string) => { @@ -71,19 +69,19 @@ const GameLoader = (props: StateManagerProps) => { setBigText(targetYellowText); // load new site node - setActiveNodeState(siteToLoad.activeNodeId, "id"); + setActiveNode(siteToLoad.activeNodeId); setNodeMatrixIndices(siteToLoad.nodeMatrixIndices); // load new site node hud - setHudId(siteToLoad.nodeHudId); + setHud(siteToLoad.nodeHudId); }, [ setActiveLevel, - setActiveNodeState, + setActiveNode, setBigTexPos, setBigText, setCurrentSite, - setHudId, + setHud, setNodeMatrixIndices, setSiteTransformState, siteASaveState, diff --git a/src/core/StateManagers/MainSceneEventManager.tsx b/src/core/StateManagers/MainSceneEventManager.tsx index b1b2436..9fdc3ab 100644 --- a/src/core/StateManagers/MainSceneEventManager.tsx +++ b/src/core/StateManagers/MainSceneEventManager.tsx @@ -3,7 +3,6 @@ import { useLevelSelectionStore, useLevelStore, useMainSceneStore, - useNodeStore, usePauseStore, useSiteStore, } from "../../store"; @@ -32,8 +31,8 @@ type MainSceneEventManagerProps = { const MainSceneEventManager = (props: MainSceneEventManagerProps) => { // all the possible context needed to calculate new state const currentSite = useSiteStore((state) => state.currentSite); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const nodeMatrixIndices = useNodeStore((state) => state.nodeMatrixIndices); + const activeNodeId = useMainSceneStore((state) => state.activeNodeState.id); + const nodeMatrixIndices = useMainSceneStore((state) => state.activeNodeMatrixIndices); const siteTransformState = useSiteStore((state) => state.transformState); const activeLevel = useLevelStore((state) => state.activeLevel); const mainSubscene = useMainSceneStore((state) => state.subscene); @@ -44,7 +43,7 @@ const MainSceneEventManager = (props: MainSceneEventManagerProps) => { pauseMatrixIdx, ]) ); - const gameProgress = useNodeStore((state) => state.gameProgress); + const gameProgress = useMainSceneStore((state) => state.gameProgress); const timePassedSinceLastKeyPress = useRef(-1); diff --git a/src/core/StateManagers/MainSceneManagers/BigTextManager.tsx b/src/core/StateManagers/MainSceneManagers/BigTextManager.tsx index f5781ba..8ab7825 100644 --- a/src/core/StateManagers/MainSceneManagers/BigTextManager.tsx +++ b/src/core/StateManagers/MainSceneManagers/BigTextManager.tsx @@ -1,10 +1,10 @@ import { useCallback, useEffect } from "react"; -import node_huds from "../../../resources/node_huds.json"; import site_a from "../../../resources/site_a.json"; import site_b from "../../../resources/site_b.json"; import { useMainSceneStore } from "../../../store"; -import { SiteType } from "../../../components/MainScene/SyncedComponents/Site"; +import { NodeDataType } from "../../../components/MainScene/SyncedComponents/Site"; import { StateManagerProps } from "../EventManager"; +import { HUDType } from "../../../components/MainScene/SyncedComponents/HUD"; const BigTextManager = (props: StateManagerProps) => { const setText = useMainSceneStore((state) => state.setBigText); @@ -13,17 +13,12 @@ const BigTextManager = (props: StateManagerProps) => { const setXOffset = useMainSceneStore((state) => state.setBigTextXOffset); const setPos = useMainSceneStore((state) => state.setBigTextPos); - const siteData = useMainSceneStore( - useCallback((state) => (state.activeSite === "a" ? site_a : site_b), []) - ); - const animateYellowTextWithMove = useCallback( ( posXOffset: number, posYOffset: number, - newActiveHudId: string, - newActiveNodeId: string, - newLevel: string, + hud: HUDType, + node: NodeDataType | "UNKNOWN", delay: number ) => { // animate the letters to match that of site's @@ -40,12 +35,9 @@ const BigTextManager = (props: StateManagerProps) => { setTimeout(() => { // animate it to new pos x/y - setPos(node_huds[newActiveHudId as keyof typeof node_huds].big_text); + setPos(hud.big_text); // set new text according to the node name - const targetText = - newActiveNodeId === "UNKNOWN" - ? "Unknown" - : (siteData as SiteType)[newLevel][newActiveNodeId].node_name; + const targetText = node === "UNKNOWN" ? "Unknown" : node.node_name; setText(targetText); }, 3000); @@ -55,22 +47,22 @@ const BigTextManager = (props: StateManagerProps) => { setXOffset(0); }, 3900); }, - [setPos, setText, setXOffset, siteData] + [setPos, setText, setXOffset] ); const animateYellowTextWithoutMove = useCallback( - (newActiveHudId: string, newActiveNodeId: string, level: string) => { + (hud: HUDType, node: NodeDataType) => { // make current hud big text shrink setXOffset(-1); setTimeout(() => { // animate it to new pos x/y - setPos(node_huds[newActiveHudId as keyof typeof node_huds].big_text); + setPos(hud.big_text); }, 400); setTimeout(() => { // set new text according to the node name - setText((siteData as SiteType)[level][newActiveNodeId].node_name); + setText(node.node_name); }, 1000); setTimeout(() => { @@ -78,7 +70,7 @@ const BigTextManager = (props: StateManagerProps) => { setXOffset(0); }, 1200); }, - [setPos, setText, setXOffset, siteData] + [setPos, setText, setXOffset] ); const initializeLevelSelection = useCallback(() => { @@ -99,36 +91,33 @@ const BigTextManager = (props: StateManagerProps) => { }, [setColor, setPos, setText, setXOffset]); const levelSelectionBack = useCallback( - (activeNodeId: string, activeHudId: string, level: string) => { + (node: NodeDataType, hud: HUDType) => { setXOffset(-1); setTimeout(() => { - setPos(node_huds[activeHudId as keyof typeof node_huds].big_text); + setPos(hud.big_text); }, 400); setTimeout(() => { setColor("yellow"); - setText((siteData as SiteType)[level][activeNodeId].node_name); + setText(node.node_name); }, 1000); setTimeout(() => { setXOffset(0); }, 1200); }, - [setColor, setPos, setText, setXOffset, siteData] + [setColor, setPos, setText, setXOffset] ); const toggleVisibleAfterLevelSelect = useCallback( - (activeNodeId: string, activeHudId: string, level: string) => { + (node: NodeDataType | "UNKNOWN", hud: HUDType) => { setVisible(false); setTimeout(() => { - setPos(node_huds[activeHudId as keyof typeof node_huds].big_text[0]); + setPos(hud.big_text[0]); setColor("yellow"); - const targetText = - activeNodeId === "UNKNOWN" - ? "Unknown" - : (siteData as SiteType)[level][activeNodeId].node_name; + const targetText = node === "UNKNOWN" ? "Unknown" : node.node_name; setText(targetText); }, 400); @@ -137,82 +126,46 @@ const BigTextManager = (props: StateManagerProps) => { setVisible(true); }, 3900); }, - [setColor, setPos, setText, setVisible, siteData] + [setColor, setPos, setText, setVisible] ); const dispatchObject = useCallback( (eventState: { event: string; - activeHudId: string; - activeNodeId: string; + hud: HUDType; + node: NodeDataType; level: string; }) => { switch (eventState.event) { case "site_up": return { action: animateYellowTextWithMove, - value: [ - 0, - -1.5, - eventState.activeHudId, - eventState.activeNodeId, - eventState.level, - 1300, - ], + value: [0, -1.5, eventState.hud, eventState.node, 1300], }; case "site_down": return { action: animateYellowTextWithMove, - value: [ - 0, - 1.5, - eventState.activeHudId, - eventState.activeNodeId, - eventState.level, - 1300, - ], + value: [0, 1.5, eventState.hud, eventState.node, 1300], }; case "site_left": return { action: animateYellowTextWithMove, - value: [ - Math.PI / 4, - 0, - eventState.activeHudId, - eventState.activeNodeId, - eventState.level, - 1100, - ], + value: [Math.PI / 4, 0, eventState.hud, eventState.node, 1100], }; case "site_right": return { action: animateYellowTextWithMove, - value: [ - -Math.PI / 4, - 0, - eventState.activeHudId, - eventState.activeNodeId, - eventState.level, - 1100, - ], + value: [-Math.PI / 4, 0, eventState.hud, eventState.node, 1100], }; case "change_node": return { action: animateYellowTextWithoutMove, - value: [ - eventState.activeHudId, - eventState.activeNodeId, - eventState.level, - ], + value: [eventState.hud, eventState.node], }; case "level_selection_back": return { action: levelSelectionBack, - value: [ - eventState.activeNodeId, - eventState.activeHudId, - eventState.level, - ], + value: [eventState.node, eventState.hud], }; case "toggle_level_selection": return { @@ -222,11 +175,7 @@ const BigTextManager = (props: StateManagerProps) => { case "select_level_down": return { action: toggleVisibleAfterLevelSelect, - value: [ - eventState.activeNodeId, - eventState.activeHudId, - eventState.level, - ], + value: [eventState.node, eventState.hud], }; } }, diff --git a/src/core/StateManagers/MainSceneManagers/LainManager.tsx b/src/core/StateManagers/MainSceneManagers/LainManager.tsx index 502a504..fdb3298 100644 --- a/src/core/StateManagers/MainSceneManagers/LainManager.tsx +++ b/src/core/StateManagers/MainSceneManagers/LainManager.tsx @@ -1,9 +1,9 @@ import { useCallback, useEffect } from "react"; -import { useLainStore } from "../../../store"; +import { useMainSceneStore } from "../../../store"; import { StateManagerProps } from "../EventManager"; const LainManager = (props: StateManagerProps) => { - const setLainMoveState = useLainStore((state) => state.setLainMoveState); + const setLainMoveState = useMainSceneStore((state) => state.setLainMoveState); const dispatchObject = useCallback( (eventState: { event: string }) => { diff --git a/src/core/StateManagers/MainSceneManagers/NodeHUDManager.tsx b/src/core/StateManagers/MainSceneManagers/NodeHUDManager.tsx index c04b94d..8e0161a 100644 --- a/src/core/StateManagers/MainSceneManagers/NodeHUDManager.tsx +++ b/src/core/StateManagers/MainSceneManagers/NodeHUDManager.tsx @@ -1,47 +1,48 @@ import { useCallback, useEffect } from "react"; -import { useHudStore } from "../../../store"; +import { useMainSceneStore } from "../../../store"; import { StateManagerProps } from "../EventManager"; +import {HUDType} from "../../../components/MainScene/SyncedComponents/HUD"; const NodeHUDManager = (props: StateManagerProps) => { - const setId = useHudStore((state) => state.setId); - const toggleActive = useHudStore((state) => state.toggleActive); + const set = useMainSceneStore((state) => state.setHud); + const toggleActive = useMainSceneStore((state) => state.toggleHudActive); const moveAndChangeNode = useCallback( - (targetNodeHudId: string) => { + (hud: HUDType) => { toggleActive(); setTimeout(() => { - setId(targetNodeHudId); + set(hud); toggleActive(); }, 3900); }, - [setId, toggleActive] + [set, toggleActive] ); const changeNode = useCallback( - (targetNodeHudId: string) => { + (hud: HUDType) => { toggleActive(); setTimeout(() => { - setId(targetNodeHudId); + set(hud); toggleActive(); }, 500); }, - [setId, toggleActive] + [set, toggleActive] ); const selectLevelAnimation = useCallback( - (targetNodeHudId: string) => { + (hud: HUDType) => { setTimeout(() => { - setId(targetNodeHudId); + set(hud); toggleActive(); }, 3900); }, - [setId, toggleActive] + [set, toggleActive] ); const dispatchObject = useCallback( - (eventState: { event: string; activeHudId: string }) => { + (eventState: { event: string; hud: HUDType }) => { switch (eventState.event) { case "site_up": case "site_down": @@ -49,12 +50,12 @@ const NodeHUDManager = (props: StateManagerProps) => { case "site_right": return { action: moveAndChangeNode, - value: [eventState.activeHudId], + value: [eventState.hud], }; case "change_node": return { action: changeNode, - value: [eventState.activeHudId], + value: [eventState.hud], }; case "toggle_level_selection": case "level_selection_back": @@ -65,7 +66,7 @@ const NodeHUDManager = (props: StateManagerProps) => { case "select_level_down": return { action: selectLevelAnimation, - value: [eventState.activeHudId], + value: [eventState.hud], }; } }, diff --git a/src/core/StateManagers/MainSceneManagers/NodeManager.tsx b/src/core/StateManagers/MainSceneManagers/NodeManager.tsx index 6e16504..962b4f3 100644 --- a/src/core/StateManagers/MainSceneManagers/NodeManager.tsx +++ b/src/core/StateManagers/MainSceneManagers/NodeManager.tsx @@ -1,10 +1,12 @@ import { useCallback, useEffect } from "react"; -import { useNodeStore } from "../../../store"; +import { useMainSceneStore } from "../../../store"; import { StateManagerProps } from "../EventManager"; +import { NodeDataType } from "../../../components/MainScene/SyncedComponents/Site"; const NodeManager = (props: StateManagerProps) => { - const setActiveNodeState = useNodeStore((state) => state.setActiveNodeState); - const setNodeMatrixIndices = useNodeStore( + const setActiveNode = useMainSceneStore((state) => state.setNode); + const setActiveNodeState = useMainSceneStore((state) => state.setNodeState); + const setNodeMatrixIndices = useMainSceneStore( (state) => state.setNodeMatrixIndices ); @@ -173,7 +175,7 @@ const NodeManager = (props: StateManagerProps) => { const updateActiveNode = useCallback( ( - newActiveNodeId: string, + node: NodeDataType, newNodeMatrixIndices: { matrixIdx: number; rowIdx: number; @@ -183,17 +185,17 @@ const NodeManager = (props: StateManagerProps) => { delay?: number ) => { setTimeout(() => { - setActiveNodeState(newActiveNodeId, "id"); + setActiveNode(node); setNodeMatrixIndices(newNodeMatrixIndices); }, delay); }, - [setActiveNodeState, setNodeMatrixIndices] + [setActiveNode, setNodeMatrixIndices] ); const dispatchObject = useCallback( (eventState: { event: string; - activeNodeId: string; + node: NodeDataType; nodeMatrixIndices: { matrixIdx: number; rowIdx: number; @@ -202,6 +204,7 @@ const NodeManager = (props: StateManagerProps) => { siteRotY: number; idleNodeId?: string; }) => { + console.log(eventState.node); switch (eventState.event) { case "site_up": case "site_down": @@ -211,17 +214,12 @@ const NodeManager = (props: StateManagerProps) => { case "select_level_down": return { action: updateActiveNode, - value: [ - eventState.activeNodeId, - eventState.nodeMatrixIndices, - true, - 3900, - ], + value: [eventState.node, eventState.nodeMatrixIndices, true, 3900], }; case "change_node": return { action: updateActiveNode, - value: [eventState.activeNodeId, eventState.nodeMatrixIndices], + value: [eventState.node, eventState.nodeMatrixIndices], }; case "throw_node_media": case "throw_node_gate": diff --git a/src/core/mainSceneEventHandler.ts b/src/core/mainSceneEventHandler.ts index 6ecad5f..5dbfefc 100644 --- a/src/core/mainSceneEventHandler.ts +++ b/src/core/mainSceneEventHandler.ts @@ -1,7 +1,4 @@ -import site_a from "../resources/site_a.json"; -import site_b from "../resources/site_b.json"; -import nodeSelector, { getNodeHudId, getNodeId } from "./nodeSelector"; -import { SiteType } from "../components/MainScene/SyncedComponents/Site"; +import nodeSelector, { getNode, getNodeHud } from "./nodeSelector"; const handleMainSceneEvent = (gameContext: any) => { let event; @@ -17,8 +14,8 @@ const handleMainSceneEvent = (gameContext: any) => { const siteASaveState = gameContext.siteASaveState; const siteBSaveState = gameContext.siteBSaveState; - let activeNodeId = gameContext.activeNodeId; - let activeHudId; + let activeNode = gameContext.activeNode; + let activeHud; let nodeMatrixIndices = gameContext.nodeMatrixIndices; let level = parseInt(gameContext.activeLevel); let siteRotY = gameContext.siteTransformState.rotY; @@ -34,7 +31,7 @@ const handleMainSceneEvent = (gameContext: any) => { case "UP": selectedNodeData = nodeSelector({ action: `site_${keyPress.toLowerCase()}`, - activeId: activeNodeId, + activeId: activeNode, nodeMatrixIndices: nodeMatrixIndices, level: level, siteRotY: siteRotY, @@ -45,12 +42,12 @@ const handleMainSceneEvent = (gameContext: any) => { if (selectedNodeData) { event = selectedNodeData.event; - activeNodeId = selectedNodeData.newActiveNodeId; + activeNode = selectedNodeData.node; nodeMatrixIndices = selectedNodeData.newNodeMatrixIndices; siteRotY = selectedNodeData.newSiteRotY; sitePosY = selectedNodeData.newSitePosY; level = selectedNodeData.newLevel; - activeHudId = selectedNodeData.newActiveHudId; + activeHud = selectedNodeData.newActiveHud; } break; @@ -58,14 +55,9 @@ const handleMainSceneEvent = (gameContext: any) => { // in this case we have to check the type of the blue orb // and dispatch an action depending on that, so we have to precalculate the // new active blue orb here. - activeNodeId = getNodeId(level, nodeMatrixIndices); + activeNode = getNode(level, nodeMatrixIndices, currentSite); - const siteData = currentSite === "a" ? site_a : site_b; - - const nodeData = (siteData as SiteType)[gameContext.activeLevel][ - activeNodeId - ]; - const nodeType = nodeData.type; + const nodeType = activeNode.type; const eventAnimation = Math.random() < 0.4 ? "rip_node" : "throw_node"; @@ -79,7 +71,7 @@ const handleMainSceneEvent = (gameContext: any) => { scene = "media"; break; case 6: - if (nodeData.node_name.substr(0, 3) === "TaK") { + if (activeNode.node_name.substr(0, 3) === "TaK") { event = `${eventAnimation}_tak`; scene = "tak"; } else { @@ -112,8 +104,8 @@ const handleMainSceneEvent = (gameContext: any) => { siteRotY: siteRotY, level: level.toString().padStart(2, "0"), scene: scene, - activeNodeId: activeNodeId, - activeHudId: activeHudId, + node: activeNode, + hud: activeHud, }; } else if (subscene === "level_selection") { switch (keyPress) { @@ -142,14 +134,13 @@ const handleMainSceneEvent = (gameContext: any) => { case "X": return { event: "level_selection_back", - activeNodeId: getNodeId(level, nodeMatrixIndices), - activeHudId: getNodeHudId(nodeMatrixIndices), - level: level.toString().padStart(2, "0"), + node: getNode(level, nodeMatrixIndices, currentSite), + hud: getNodeHud(nodeMatrixIndices), }; case "CIRCLE": const selectedNodeData = nodeSelector({ action: "select_level", - activeId: activeNodeId, + activeId: activeNode, nodeMatrixIndices: nodeMatrixIndices, level: selectedLevel, siteRotY: siteRotY, @@ -165,8 +156,8 @@ const handleMainSceneEvent = (gameContext: any) => { return { event: event, level: selectedLevel.toString().padStart(2, "0"), - activeNodeId: selectedNodeData.newActiveNodeId, - activeHudId: selectedNodeData.newActiveHudId, + activeNodeId: selectedNodeData.node, + activeHud: selectedNodeData.newActiveHud, nodeMatrixIndices: selectedNodeData.newNodeMatrixIndices, sitePosY: -selectedNodeData.newSitePosY, }; @@ -191,9 +182,9 @@ const handleMainSceneEvent = (gameContext: any) => { event: `pause_${activePauseComponent}_select`, currentSitePosY: sitePosY, currentSiteRotY: siteRotY, - currentNodeId: activeNodeId, + currentNodeId: activeNode, currentNodeMatrixIndices: nodeMatrixIndices, - currentHudId: getNodeHudId(nodeMatrixIndices), + currentHud: getNodeHud(nodeMatrixIndices), currentLevel: level.toString().padStart(2, "0"), site: currentSite === "a" ? "b" : "a", }; diff --git a/src/core/nodeSelector.ts b/src/core/nodeSelector.ts index 2e9b847..1696753 100644 --- a/src/core/nodeSelector.ts +++ b/src/core/nodeSelector.ts @@ -1,9 +1,13 @@ import node_matrices from "../resources/node_matrices.json"; import site_a from "../resources/site_a.json"; import site_b from "../resources/site_b.json"; -import { SiteType } from "../components/MainScene/SyncedComponents/Site"; +import { + NodeDataType, + SiteType, +} from "../components/MainScene/SyncedComponents/Site"; import unlocked_nodes from "../resources/initial_progress.json"; import level_y_values from "../resources/level_y_values.json"; +import node_huds from "../resources/node_huds.json"; type NodeSelectorContext = { action: string; @@ -31,41 +35,45 @@ const hudAssocs = { "23": "fg_hud_6", }; -export const getNodeId = ( +export const getNode = ( level: number, nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number; - } + }, + currentSite: string ) => { - return ( - level.toString().padStart(2, "0") + + const siteData = currentSite === "a" ? site_a : site_b; + + const formattedLevel = level.toString().padStart(2, "0"); + const nodePos = node_matrices[ nodeMatrixIndices.matrixIdx.toString() as keyof typeof node_matrices - ][nodeMatrixIndices.rowIdx][nodeMatrixIndices.colIdx] - ); + ][nodeMatrixIndices.rowIdx][nodeMatrixIndices.colIdx]; + + const id = formattedLevel + nodePos; + + return (siteData as SiteType)[formattedLevel][id]; }; -export const getNodeHudId = (nodeMatrixIndices: { +export const getNodeHud = (nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number; }) => - hudAssocs[ - `${nodeMatrixIndices.rowIdx}${nodeMatrixIndices.colIdx}` as keyof typeof hudAssocs + node_huds[ + hudAssocs[ + `${nodeMatrixIndices.rowIdx}${nodeMatrixIndices.colIdx}` as keyof typeof hudAssocs + ] as keyof typeof node_huds ]; export const isNodeVisible = ( - nodeId: string, - gameProgress: typeof unlocked_nodes, - currentSite: string + node: NodeDataType, + gameProgress: typeof unlocked_nodes ) => { - const siteData = currentSite === "a" ? site_a : site_b; - const nodeLevel = nodeId.substr(0, 2); - const nodeData = (siteData as SiteType)[nodeLevel][nodeId]; - if (nodeData) { - const unlockedBy = nodeData.unlocked_by; + if (node) { + const unlockedBy = node.unlocked_by; let unlocked; if (unlockedBy === "") unlocked = true; @@ -77,7 +85,7 @@ export const isNodeVisible = ( return ( unlocked && - gameProgress[nodeData.node_name as keyof typeof gameProgress].is_visible + gameProgress[node.node_name as keyof typeof gameProgress].is_visible ); } else { return false; @@ -106,9 +114,13 @@ const findNodeAfterLevelSelection = ( newMatIndices.rowIdx = 0; - let newNodeId = getNodeId(targetLevel, newMatIndices); + let newNode: NodeDataType | "UNKNOWN" = getNode( + targetLevel, + newMatIndices, + currentSite + ); - while (!isNodeVisible(newNodeId, gameProgress, currentSite)) { + while (!isNodeVisible(newNode, gameProgress)) { if (triedCols.length < 4) { triedCols.push(newMatIndices.colIdx); const colToTry = tryCol(newMatIndices.colIdx, triedCols); @@ -118,7 +130,7 @@ const findNodeAfterLevelSelection = ( } else { if (newMatIndices.rowIdx === 2) { newMatIndices.colIdx = nodeMatrixIndices.colIdx; - newNodeId = "UNKNOWN"; + newNode = "UNKNOWN"; break; } else { newMatIndices.rowIdx++; @@ -126,15 +138,15 @@ const findNodeAfterLevelSelection = ( newMatIndices.colIdx = 0; } } - newNodeId = getNodeId(targetLevel, newMatIndices); + newNode = getNode(targetLevel, newMatIndices, currentSite); } - const newNodeHudId = getNodeHudId(newMatIndices); + const newNodeHud = getNodeHud(newMatIndices); return { newLevel: targetLevel, - newNodeId: newNodeId, - newNodeHudId: newNodeHudId, + node: newNode, + newNodeHud: newNodeHud, newNodeMatrixIndices: newMatIndices, newSitePosY: level_y_values[ @@ -150,7 +162,7 @@ const findNodeVertical = ( nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number }, currentSite: string ) => { - let newNodeId; + let newNode: NodeDataType | "UNKNOWN"; let newLevel = level; let newMatIndices = Object.assign({}, nodeMatrixIndices); @@ -164,9 +176,9 @@ const findNodeVertical = ( newLevel = level - 1; } - newNodeId = getNodeId(newLevel, newMatIndices); + newNode = getNode(newLevel, newMatIndices, currentSite); - while (!isNodeVisible(newNodeId, gameProgress, currentSite)) { + while (!isNodeVisible(newNode, gameProgress)) { if (triedCols.length < 4) { triedCols.push(newMatIndices.colIdx); const colToTry = tryCol(newMatIndices.colIdx, triedCols); @@ -176,7 +188,7 @@ const findNodeVertical = ( } else { if (newMatIndices.rowIdx === 2) { if (newLevel === level - 1) { - newNodeId = "UNKNOWN"; + newNode = "UNKNOWN"; newMatIndices.colIdx = nodeMatrixIndices.colIdx; break; } @@ -188,7 +200,7 @@ const findNodeVertical = ( triedCols = []; } } - newNodeId = getNodeId(newLevel, newMatIndices); + newNode = getNode(newLevel, newMatIndices, currentSite); } } else if (direction === "up") { newMatIndices.rowIdx--; @@ -200,9 +212,9 @@ const findNodeVertical = ( newLevel = level + 1; } - newNodeId = getNodeId(newLevel, newMatIndices); + newNode = getNode(newLevel, newMatIndices, currentSite); - while (!isNodeVisible(newNodeId, gameProgress, currentSite)) { + while (!isNodeVisible(newNode, gameProgress)) { if (triedCols.length < 4) { triedCols.push(newMatIndices.colIdx); const colToTry = tryCol(newMatIndices.colIdx, triedCols); @@ -212,7 +224,7 @@ const findNodeVertical = ( } else { if (newMatIndices.rowIdx === 0) { if (newLevel === level + 1) { - newNodeId = "UNKNOWN"; + newNode = "UNKNOWN"; newMatIndices.colIdx = nodeMatrixIndices.colIdx; break; } @@ -224,13 +236,13 @@ const findNodeVertical = ( triedCols = []; } } - newNodeId = getNodeId(newLevel, newMatIndices); + newNode = getNode(newLevel, newMatIndices, currentSite); } } return { - newNodeId: newNodeId, - newNodeHudId: getNodeHudId(newMatIndices), + node: newNode!, + newNodeHud: getNodeHud(newMatIndices), newLevel: newLevel, newNodeMatrixIndices: newMatIndices, }; @@ -244,7 +256,7 @@ const findNodeHorizontal = ( nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number }, currentSite: string ) => { - let newNodeId; + let newNode: NodeDataType | "UNKNOWN"; let newMatIndices = Object.assign({}, nodeMatrixIndices); let didMove = false; @@ -261,9 +273,9 @@ const findNodeHorizontal = ( newMatIndices.matrixIdx + 1 > 8 ? 1 : newMatIndices.matrixIdx + 1; } - newNodeId = getNodeId(level, newMatIndices); + newNode = getNode(level, newMatIndices, currentSite); - while (!isNodeVisible(newNodeId, gameProgress, currentSite)) { + while (!isNodeVisible(newNode, gameProgress)) { if (triedRows.length < 3) { triedRows.push(newMatIndices.rowIdx); const rowToTry = tryRow(newMatIndices.rowIdx, triedRows); @@ -279,7 +291,7 @@ const findNodeHorizontal = ( newMatIndices.colIdx = nodeMatrixIndices.colIdx; newMatIndices.matrixIdx = newMatIndices.matrixIdx + 1 > 8 ? 1 : newMatIndices.matrixIdx + 1; - newNodeId = "UNKNOWN"; + newNode = "UNKNOWN"; break; } else { didMove = true; @@ -293,7 +305,7 @@ const findNodeHorizontal = ( newMatIndices.rowIdx = 0; } } - newNodeId = getNodeId(level, newMatIndices); + newNode = getNode(level, newMatIndices, currentSite); } } else if (direction === "right") { newMatIndices.colIdx++; @@ -307,9 +319,9 @@ const findNodeHorizontal = ( newMatIndices.matrixIdx - 1 < 1 ? 8 : newMatIndices.matrixIdx - 1; } - newNodeId = getNodeId(level, newMatIndices); + newNode = getNode(level, newMatIndices, currentSite); - while (!isNodeVisible(newNodeId, gameProgress, currentSite)) { + while (!isNodeVisible(newNode, gameProgress)) { if (triedRows.length < 3) { triedRows.push(newMatIndices.rowIdx); const rowToTry = tryRow(newMatIndices.rowIdx, triedRows); @@ -325,7 +337,7 @@ const findNodeHorizontal = ( newMatIndices.colIdx = nodeMatrixIndices.colIdx; newMatIndices.matrixIdx = newMatIndices.matrixIdx - 1 < 1 ? 8 : newMatIndices.matrixIdx - 1; - newNodeId = "UNKNOWN"; + newNode = "UNKNOWN"; break; } else { if (didMove) return; @@ -344,16 +356,16 @@ const findNodeHorizontal = ( newMatIndices.rowIdx = 0; } } - newNodeId = getNodeId(level, newMatIndices); + newNode = getNode(level, newMatIndices, currentSite); } } - const newNodeHudId = getNodeHudId(newMatIndices); + const newNodeHud = getNodeHud(newMatIndices); return { didMove: didMove, - newNodeId: newNodeId, - newNodeHudId: newNodeHudId, + node: newNode!, + newNodeHud: newNodeHud, newNodeMatrixIndices: newMatIndices, }; }; @@ -380,8 +392,8 @@ const nodeSelector = (context: NodeSelectorContext) => { return { event: newNodeData.didMove ? context.action : "change_node", - newActiveNodeId: newNodeData.newNodeId, - newActiveHudId: newNodeData.newNodeHudId, + node: newNodeData.node, + newActiveHud: newNodeData.newNodeHud, newNodeMatrixIndices: newNodeData.newNodeMatrixIndices, newSiteRotY: newNodeData.didMove ? context.siteRotY + siteRotYModifier @@ -408,9 +420,9 @@ const nodeSelector = (context: NodeSelectorContext) => { const sitePosYModifier = move === "up" ? -1.5 : 1.5; return { event: didMove ? context.action : "change_node", - newActiveNodeId: newNodeData.newNodeId, + node: newNodeData.node, newNodeMatrixIndices: newNodeData.newNodeMatrixIndices, - newActiveHudId: newNodeData.newNodeHudId, + newActiveHud: newNodeData.newNodeHud, newSiteRotY: context.siteRotY, newSitePosY: didMove ? context.sitePosY + sitePosYModifier @@ -429,9 +441,9 @@ const nodeSelector = (context: NodeSelectorContext) => { if (newNodeData) { return { - newActiveNodeId: newNodeData.newNodeId, + node: newNodeData.node, newNodeMatrixIndices: newNodeData.newNodeMatrixIndices, - newActiveHudId: newNodeData.newNodeHudId, + newActiveHud: newNodeData.newNodeHud, newSiteRotY: context.siteRotY, newLevel: newNodeData.newLevel, newSitePosY: newNodeData.newSitePosY, diff --git a/src/resources/site_a.json b/src/resources/site_a.json index b1223c2..b7c024b 100644 --- a/src/resources/site_a.json +++ b/src/resources/site_a.json @@ -1,6 +1,7 @@ { "00": { "0000": { + "id": "0000", "image_table_indices": { "1": "401", "2": "404", @@ -28,6 +29,7 @@ } }, "0001": { + "id": "0001", "image_table_indices": { "1": "320", "2": "346", @@ -55,6 +57,7 @@ } }, "0002": { + "id": "0002", "image_table_indices": { "1": "668", "2": "667", @@ -82,6 +85,7 @@ } }, "0003": { + "id": "0003", "image_table_indices": { "1": "664", "2": "647", @@ -109,6 +113,7 @@ } }, "0004": { + "id": "0004", "image_table_indices": { "1": "658", "2": "630", @@ -136,6 +141,7 @@ } }, "0005": { + "id": "0005", "image_table_indices": { "1": "504", "2": "514", @@ -163,6 +169,7 @@ } }, "0006": { + "id": "0006", "image_table_indices": { "1": "524", "2": "476", @@ -190,6 +197,7 @@ } }, "0007": { + "id": "0007", "image_table_indices": { "1": "400", "2": "396", @@ -217,6 +225,7 @@ } }, "0008": { + "id": "0008", "image_table_indices": { "1": "399", "2": "398", @@ -244,6 +253,7 @@ } }, "0009": { + "id": "0009", "image_table_indices": { "1": "402", "2": "397", @@ -273,6 +283,7 @@ }, "01": { "0100": { + "id": "0100", "image_table_indices": { "1": "266", "2": "665", @@ -300,6 +311,7 @@ } }, "0101": { + "id": "0101", "image_table_indices": { "1": "666", "2": "592", @@ -327,6 +339,7 @@ } }, "0104": { + "id": "0104", "image_table_indices": { "1": "-1", "2": "-1", @@ -354,6 +367,7 @@ } }, "0109": { + "id": "0109", "image_table_indices": { "1": "462", "2": "678", @@ -381,6 +395,7 @@ } }, "0110": { + "id": "0110", "image_table_indices": { "1": "463", "2": "204", @@ -408,6 +423,7 @@ } }, "0112": { + "id": "0112", "image_table_indices": { "1": "-1", "2": "-1", @@ -435,6 +451,7 @@ } }, "0114": { + "id": "0114", "image_table_indices": { "1": "-1", "2": "-1", @@ -462,6 +479,7 @@ } }, "0116": { + "id": "0116", "image_table_indices": { "1": "680", "2": "692", @@ -489,6 +507,7 @@ } }, "0118": { + "id": "0118", "image_table_indices": { "1": "467", "2": "454", @@ -516,6 +535,7 @@ } }, "0119": { + "id": "0119", "image_table_indices": { "1": "468", "2": "38", @@ -543,6 +563,7 @@ } }, "0120": { + "id": "0120", "image_table_indices": { "1": "-1", "2": "-1", @@ -570,6 +591,7 @@ } }, "0121": { + "id": "0121", "image_table_indices": { "1": "-1", "2": "-1", @@ -597,6 +619,7 @@ } }, "0123": { + "id": "0123", "image_table_indices": { "1": "-1", "2": "-1", @@ -626,6 +649,7 @@ }, "02": { "0201": { + "id": "0201", "image_table_indices": { "1": "693", "2": "628", @@ -653,6 +677,7 @@ } }, "0202": { + "id": "0202", "image_table_indices": { "1": "-1", "2": "-1", @@ -680,6 +705,7 @@ } }, "0203": { + "id": "0203", "image_table_indices": { "1": "469", "2": "211", @@ -707,6 +733,7 @@ } }, "0204": { + "id": "0204", "image_table_indices": { "1": "488", "2": "475", @@ -734,6 +761,7 @@ } }, "0205": { + "id": "0205", "image_table_indices": { "1": "-1", "2": "-1", @@ -761,6 +789,7 @@ } }, "0206": { + "id": "0206", "image_table_indices": { "1": "-1", "2": "-1", @@ -788,6 +817,7 @@ } }, "0207": { + "id": "0207", "image_table_indices": { "1": "-1", "2": "-1", @@ -815,6 +845,7 @@ } }, "0208": { + "id": "0208", "image_table_indices": { "1": "-1", "2": "-1", @@ -842,6 +873,7 @@ } }, "0209": { + "id": "0209", "image_table_indices": { "1": "-1", "2": "-1", @@ -869,6 +901,7 @@ } }, "0210": { + "id": "0210", "image_table_indices": { "1": "188", "2": "174", @@ -896,6 +929,7 @@ } }, "0211": { + "id": "0211", "image_table_indices": { "1": "-1", "2": "-1", @@ -923,6 +957,7 @@ } }, "0212": { + "id": "0212", "image_table_indices": { "1": "496", "2": "41", @@ -950,6 +985,7 @@ } }, "0213": { + "id": "0213", "image_table_indices": { "1": "594", "2": "245", @@ -977,6 +1013,7 @@ } }, "0215": { + "id": "0215", "image_table_indices": { "1": "-1", "2": "-1", @@ -1004,6 +1041,7 @@ } }, "0217": { + "id": "0217", "image_table_indices": { "1": "-1", "2": "-1", @@ -1031,6 +1069,7 @@ } }, "0218": { + "id": "0218", "image_table_indices": { "1": "-1", "2": "-1", @@ -1058,6 +1097,7 @@ } }, "0219": { + "id": "0219", "image_table_indices": { "1": "163", "2": "171", @@ -1085,6 +1125,7 @@ } }, "0221": { + "id": "0221", "image_table_indices": { "1": "14", "2": "-1", @@ -1112,6 +1153,7 @@ } }, "0222": { + "id": "0222", "image_table_indices": { "1": "507", "2": "58", @@ -1139,6 +1181,7 @@ } }, "0223": { + "id": "0223", "image_table_indices": { "1": "521", "2": "277", @@ -1168,6 +1211,7 @@ }, "03": { "0300": { + "id": "0300", "image_table_indices": { "1": "68", "2": "280", @@ -1195,6 +1239,7 @@ } }, "0301": { + "id": "0301", "image_table_indices": { "1": "-1", "2": "-1", @@ -1222,6 +1267,7 @@ } }, "0303": { + "id": "0303", "image_table_indices": { "1": "-1", "2": "-1", @@ -1249,6 +1295,7 @@ } }, "0304": { + "id": "0304", "image_table_indices": { "1": "173", "2": "177", @@ -1276,6 +1323,7 @@ } }, "0306": { + "id": "0306", "image_table_indices": { "1": "15", "2": "-1", @@ -1303,6 +1351,7 @@ } }, "0307": { + "id": "0307", "image_table_indices": { "1": "279", "2": "67", @@ -1330,6 +1379,7 @@ } }, "0308": { + "id": "0308", "image_table_indices": { "1": "548", "2": "70", @@ -1357,6 +1407,7 @@ } }, "0310": { + "id": "0310", "image_table_indices": { "1": "-1", "2": "-1", @@ -1384,6 +1435,7 @@ } }, "0312": { + "id": "0312", "image_table_indices": { "1": "-1", "2": "-1", @@ -1411,6 +1463,7 @@ } }, "0313": { + "id": "0313", "image_table_indices": { "1": "702", "2": "661", @@ -1438,6 +1491,7 @@ } }, "0314": { + "id": "0314", "image_table_indices": { "1": "-1", "2": "-1", @@ -1465,6 +1519,7 @@ } }, "0315": { + "id": "0315", "image_table_indices": { "1": "69", "2": "547", @@ -1492,6 +1547,7 @@ } }, "0316": { + "id": "0316", "image_table_indices": { "1": "549", "2": "335", @@ -1519,6 +1575,7 @@ } }, "0317": { + "id": "0317", "image_table_indices": { "1": "337", "2": "550", @@ -1546,6 +1603,7 @@ } }, "0318": { + "id": "0318", "image_table_indices": { "1": "-1", "2": "-1", @@ -1573,6 +1631,7 @@ } }, "0319": { + "id": "0319", "image_table_indices": { "1": "-1", "2": "-1", @@ -1600,6 +1659,7 @@ } }, "0321": { + "id": "0321", "image_table_indices": { "1": "-1", "2": "-1", @@ -1627,6 +1687,7 @@ } }, "0322": { + "id": "0322", "image_table_indices": { "1": "-1", "2": "-1", @@ -1656,6 +1717,7 @@ }, "04": { "0400": { + "id": "0400", "image_table_indices": { "1": "-1", "2": "-1", @@ -1683,6 +1745,7 @@ } }, "0401": { + "id": "0401", "image_table_indices": { "1": "350", "2": "74", @@ -1710,6 +1773,7 @@ } }, "0402": { + "id": "0402", "image_table_indices": { "1": "76", "2": "351", @@ -1737,6 +1801,7 @@ } }, "0403": { + "id": "0403", "image_table_indices": { "1": "-1", "2": "-1", @@ -1764,6 +1829,7 @@ } }, "0404": { + "id": "0404", "image_table_indices": { "1": "-1", "2": "-1", @@ -1791,6 +1857,7 @@ } }, "0405": { + "id": "0405", "image_table_indices": { "1": "-1", "2": "-1", @@ -1818,6 +1885,7 @@ } }, "0406": { + "id": "0406", "image_table_indices": { "1": "-1", "2": "-1", @@ -1845,6 +1913,7 @@ } }, "0407": { + "id": "0407", "image_table_indices": { "1": "-1", "2": "-1", @@ -1872,6 +1941,7 @@ } }, "0408": { + "id": "0408", "image_table_indices": { "1": "265", "2": "54", @@ -1899,6 +1969,7 @@ } }, "0409": { + "id": "0409", "image_table_indices": { "1": "43", "2": "44", @@ -1926,6 +1997,7 @@ } }, "0410": { + "id": "0410", "image_table_indices": { "1": "79", "2": "556", @@ -1953,6 +2025,7 @@ } }, "0411": { + "id": "0411", "image_table_indices": { "1": "16", "2": "-1", @@ -1980,6 +2053,7 @@ } }, "0412": { + "id": "0412", "image_table_indices": { "1": "558", "2": "353", @@ -2007,6 +2081,7 @@ } }, "0413": { + "id": "0413", "image_table_indices": { "1": "-1", "2": "-1", @@ -2034,6 +2109,7 @@ } }, "0414": { + "id": "0414", "image_table_indices": { "1": "31", "2": "584", @@ -2061,6 +2137,7 @@ } }, "0415": { + "id": "0415", "image_table_indices": { "1": "577", "2": "583", @@ -2088,6 +2165,7 @@ } }, "0416": { + "id": "0416", "image_table_indices": { "1": "546", "2": "529", @@ -2115,6 +2193,7 @@ } }, "0417": { + "id": "0417", "image_table_indices": { "1": "-1", "2": "-1", @@ -2142,6 +2221,7 @@ } }, "0418": { + "id": "0418", "image_table_indices": { "1": "28", "2": "53", @@ -2169,6 +2249,7 @@ } }, "0419": { + "id": "0419", "image_table_indices": { "1": "105", "2": "249", @@ -2196,6 +2277,7 @@ } }, "0420": { + "id": "0420", "image_table_indices": { "1": "354", "2": "559", @@ -2223,6 +2305,7 @@ } }, "0421": { + "id": "0421", "image_table_indices": { "1": "355", "2": "83", @@ -2250,6 +2333,7 @@ } }, "0422": { + "id": "0422", "image_table_indices": { "1": "93", "2": "356", @@ -2277,6 +2361,7 @@ } }, "0423": { + "id": "0423", "image_table_indices": { "1": "495", "2": "490", @@ -2306,6 +2391,7 @@ }, "05": { "0500": { + "id": "0500", "image_table_indices": { "1": "-1", "2": "-1", @@ -2333,6 +2419,7 @@ } }, "0501": { + "id": "0501", "image_table_indices": { "1": "443", "2": "445", @@ -2360,6 +2447,7 @@ } }, "0503": { + "id": "0503", "image_table_indices": { "1": "256", "2": "55", @@ -2387,6 +2475,7 @@ } }, "0504": { + "id": "0504", "image_table_indices": { "1": "322", "2": "324", @@ -2414,6 +2503,7 @@ } }, "0505": { + "id": "0505", "image_table_indices": { "1": "331", "2": "330", @@ -2441,6 +2531,7 @@ } }, "0506": { + "id": "0506", "image_table_indices": { "1": "94", "2": "564", @@ -2468,6 +2559,7 @@ } }, "0507": { + "id": "0507", "image_table_indices": { "1": "565", "2": "95", @@ -2495,6 +2587,7 @@ } }, "0508": { + "id": "0508", "image_table_indices": { "1": "360", "2": "569", @@ -2522,6 +2615,7 @@ } }, "0509": { + "id": "0509", "image_table_indices": { "1": "361", "2": "114", @@ -2549,6 +2643,7 @@ } }, "0510": { + "id": "0510", "image_table_indices": { "1": "442", "2": "439", @@ -2576,6 +2671,7 @@ } }, "0511": { + "id": "0511", "image_table_indices": { "1": "464", "2": "461", @@ -2603,6 +2699,7 @@ } }, "0512": { + "id": "0512", "image_table_indices": { "1": "-1", "2": "-1", @@ -2630,6 +2727,7 @@ } }, "0513": { + "id": "0513", "image_table_indices": { "1": "-1", "2": "-1", @@ -2657,6 +2755,7 @@ } }, "0514": { + "id": "0514", "image_table_indices": { "1": "670", "2": "347", @@ -2684,6 +2783,7 @@ } }, "0515": { + "id": "0515", "image_table_indices": { "1": "566", "2": "359", @@ -2711,6 +2811,7 @@ } }, "0516": { + "id": "0516", "image_table_indices": { "1": "380", "2": "390", @@ -2738,6 +2839,7 @@ } }, "0517": { + "id": "0517", "image_table_indices": { "1": "115", "2": "362", @@ -2765,6 +2867,7 @@ } }, "0518": { + "id": "0518", "image_table_indices": { "1": "116", "2": "572", @@ -2792,6 +2895,7 @@ } }, "0520": { + "id": "0520", "image_table_indices": { "1": "408", "2": "409", @@ -2819,6 +2923,7 @@ } }, "0521": { + "id": "0521", "image_table_indices": { "1": "412", "2": "545", @@ -2846,6 +2951,7 @@ } }, "0522": { + "id": "0522", "image_table_indices": { "1": "608", "2": "586", @@ -2873,6 +2979,7 @@ } }, "0523": { + "id": "0523", "image_table_indices": { "1": "267", "2": "348", @@ -2902,6 +3009,7 @@ }, "06": { "0600": { + "id": "0600", "image_table_indices": { "1": "455", "2": "421", @@ -2929,6 +3037,7 @@ } }, "0601": { + "id": "0601", "image_table_indices": { "1": "393", "2": "427", @@ -2956,6 +3065,7 @@ } }, "0602": { + "id": "0602", "image_table_indices": { "1": "579", "2": "118", @@ -2983,6 +3093,7 @@ } }, "0603": { + "id": "0603", "image_table_indices": { "1": "580", "2": "365", @@ -3010,6 +3121,7 @@ } }, "0604": { + "id": "0604", "image_table_indices": { "1": "-1", "2": "-1", @@ -3037,6 +3149,7 @@ } }, "0606": { + "id": "0606", "image_table_indices": { "1": "392", "2": "395", @@ -3064,6 +3177,7 @@ } }, "0607": { + "id": "0607", "image_table_indices": { "1": "349", "2": "257", @@ -3091,6 +3205,7 @@ } }, "0608": { + "id": "0608", "image_table_indices": { "1": "0", "2": "-1", @@ -3118,6 +3233,7 @@ } }, "0609": { + "id": "0609", "image_table_indices": { "1": "428", "2": "465", @@ -3145,6 +3261,7 @@ } }, "0610": { + "id": "0610", "image_table_indices": { "1": "502", "2": "429", @@ -3172,6 +3289,7 @@ } }, "0611": { + "id": "0611", "image_table_indices": { "1": "371", "2": "491", @@ -3199,6 +3317,7 @@ } }, "0612": { + "id": "0612", "image_table_indices": { "1": "-1", "2": "-1", @@ -3226,6 +3345,7 @@ } }, "0613": { + "id": "0613", "image_table_indices": { "1": "1", "2": "-1", @@ -3253,6 +3373,7 @@ } }, "0614": { + "id": "0614", "image_table_indices": { "1": "-1", "2": "-1", @@ -3280,6 +3401,7 @@ } }, "0615": { + "id": "0615", "image_table_indices": { "1": "29", "2": "253", @@ -3307,6 +3429,7 @@ } }, "0616": { + "id": "0616", "image_table_indices": { "1": "258", "2": "179", @@ -3334,6 +3457,7 @@ } }, "0617": { + "id": "0617", "image_table_indices": { "1": "180", "2": "259", @@ -3361,6 +3485,7 @@ } }, "0618": { + "id": "0618", "image_table_indices": { "1": "-1", "2": "-1", @@ -3388,6 +3513,7 @@ } }, "0619": { + "id": "0619", "image_table_indices": { "1": "516", "2": "372", @@ -3415,6 +3541,7 @@ } }, "0620": { + "id": "0620", "image_table_indices": { "1": "-1", "2": "-1", @@ -3442,6 +3569,7 @@ } }, "0621": { + "id": "0621", "image_table_indices": { "1": "-1", "2": "-1", @@ -3469,6 +3597,7 @@ } }, "0622": { + "id": "0622", "image_table_indices": { "1": "-1", "2": "-1", @@ -3496,6 +3625,7 @@ } }, "0623": { + "id": "0623", "image_table_indices": { "1": "-1", "2": "-1", @@ -3525,6 +3655,7 @@ }, "07": { "0700": { + "id": "0700", "image_table_indices": { "1": "238", "2": "220", @@ -3552,6 +3683,7 @@ } }, "0701": { + "id": "0701", "image_table_indices": { "1": "181", "2": "49", @@ -3579,6 +3711,7 @@ } }, "0702": { + "id": "0702", "image_table_indices": { "1": "50", "2": "182", @@ -3606,6 +3739,7 @@ } }, "0704": { + "id": "0704", "image_table_indices": { "1": "517", "2": "411", @@ -3633,6 +3767,7 @@ } }, "0705": { + "id": "0705", "image_table_indices": { "1": "-1", "2": "-1", @@ -3660,6 +3795,7 @@ } }, "0706": { + "id": "0706", "image_table_indices": { "1": "17", "2": "-1", @@ -3687,6 +3823,7 @@ } }, "0708": { + "id": "0708", "image_table_indices": { "1": "-1", "2": "-1", @@ -3714,6 +3851,7 @@ } }, "0709": { + "id": "0709", "image_table_indices": { "1": "2", "2": "-1", @@ -3741,6 +3879,7 @@ } }, "0710": { + "id": "0710", "image_table_indices": { "1": "191", "2": "193", @@ -3768,6 +3907,7 @@ } }, "0712": { + "id": "0712", "image_table_indices": { "1": "-1", "2": "-1", @@ -3795,6 +3935,7 @@ } }, "0713": { + "id": "0713", "image_table_indices": { "1": "-1", "2": "-1", @@ -3822,6 +3963,7 @@ } }, "0714": { + "id": "0714", "image_table_indices": { "1": "-1", "2": "-1", @@ -3849,6 +3991,7 @@ } }, "0716": { + "id": "0716", "image_table_indices": { "1": "-1", "2": "-1", @@ -3876,6 +4019,7 @@ } }, "0718": { + "id": "0718", "image_table_indices": { "1": "240", "2": "150", @@ -3903,6 +4047,7 @@ } }, "0719": { + "id": "0719", "image_table_indices": { "1": "133", "2": "117", @@ -3930,6 +4075,7 @@ } }, "0720": { + "id": "0720", "image_table_indices": { "1": "52", "2": "262", @@ -3957,6 +4103,7 @@ } }, "0722": { + "id": "0722", "image_table_indices": { "1": "413", "2": "519", @@ -3984,6 +4131,7 @@ } }, "0723": { + "id": "0723", "image_table_indices": { "1": "-1", "2": "-1", @@ -4013,6 +4161,7 @@ }, "08": { "0800": { + "id": "0800", "image_table_indices": { "1": "-1", "2": "-1", @@ -4040,6 +4189,7 @@ } }, "0801": { + "id": "0801", "image_table_indices": { "1": "-1", "2": "-1", @@ -4067,6 +4217,7 @@ } }, "0802": { + "id": "0802", "image_table_indices": { "1": "-1", "2": "-1", @@ -4094,6 +4245,7 @@ } }, "0803": { + "id": "0803", "image_table_indices": { "1": "99", "2": "420", @@ -4121,6 +4273,7 @@ } }, "0804": { + "id": "0804", "image_table_indices": { "1": "36", "2": "703", @@ -4148,6 +4301,7 @@ } }, "0805": { + "id": "0805", "image_table_indices": { "1": "154", "2": "187", @@ -4175,6 +4329,7 @@ } }, "0806": { + "id": "0806", "image_table_indices": { "1": "3", "2": "-1", @@ -4202,6 +4357,7 @@ } }, "0809": { + "id": "0809", "image_table_indices": { "1": "-1", "2": "-1", @@ -4229,6 +4385,7 @@ } }, "0810": { + "id": "0810", "image_table_indices": { "1": "-1", "2": "-1", @@ -4256,6 +4413,7 @@ } }, "0812": { + "id": "0812", "image_table_indices": { "1": "593", "2": "578", @@ -4283,6 +4441,7 @@ } }, "0813": { + "id": "0813", "image_table_indices": { "1": "4", "2": "-1", @@ -4310,6 +4469,7 @@ } }, "0814": { + "id": "0814", "image_table_indices": { "1": "5", "2": "-1", @@ -4337,6 +4497,7 @@ } }, "0815": { + "id": "0815", "image_table_indices": { "1": "-1", "2": "-1", @@ -4364,6 +4525,7 @@ } }, "0816": { + "id": "0816", "image_table_indices": { "1": "263", "2": "63", @@ -4391,6 +4553,7 @@ } }, "0817": { + "id": "0817", "image_table_indices": { "1": "264", "2": "185", @@ -4418,6 +4581,7 @@ } }, "0818": { + "id": "0818", "image_table_indices": { "1": "414", "2": "377", @@ -4445,6 +4609,7 @@ } }, "0819": { + "id": "0819", "image_table_indices": { "1": "-1", "2": "-1", @@ -4472,6 +4637,7 @@ } }, "0820": { + "id": "0820", "image_table_indices": { "1": "-1", "2": "-1", @@ -4499,6 +4665,7 @@ } }, "0821": { + "id": "0821", "image_table_indices": { "1": "6", "2": "-1", @@ -4526,6 +4693,7 @@ } }, "0822": { + "id": "0822", "image_table_indices": { "1": "7", "2": "-1", @@ -4553,6 +4721,7 @@ } }, "0823": { + "id": "0823", "image_table_indices": { "1": "8", "2": "-1", @@ -4582,6 +4751,7 @@ }, "09": { "0900": { + "id": "0900", "image_table_indices": { "1": "674", "2": "673", @@ -4609,6 +4779,7 @@ } }, "0901": { + "id": "0901", "image_table_indices": { "1": "186", "2": "268", @@ -4636,6 +4807,7 @@ } }, "0902": { + "id": "0902", "image_table_indices": { "1": "190", "2": "85", @@ -4663,6 +4835,7 @@ } }, "0904": { + "id": "0904", "image_table_indices": { "1": "-1", "2": "-1", @@ -4690,6 +4863,7 @@ } }, "0905": { + "id": "0905", "image_table_indices": { "1": "-1", "2": "-1", @@ -4717,6 +4891,7 @@ } }, "0906": { + "id": "0906", "image_table_indices": { "1": "687", "2": "686", @@ -4744,6 +4919,7 @@ } }, "0907": { + "id": "0907", "image_table_indices": { "1": "691", "2": "701", @@ -4771,6 +4947,7 @@ } }, "0908": { + "id": "0908", "image_table_indices": { "1": "155", "2": "518", @@ -4798,6 +4975,7 @@ } }, "0909": { + "id": "0909", "image_table_indices": { "1": "688", "2": "769", @@ -4825,6 +5003,7 @@ } }, "0911": { + "id": "0911", "image_table_indices": { "1": "-1", "2": "-1", @@ -4852,6 +5031,7 @@ } }, "0912": { + "id": "0912", "image_table_indices": { "1": "366", "2": "121", @@ -4879,6 +5059,7 @@ } }, "0913": { + "id": "0913", "image_table_indices": { "1": "-1", "2": "-1", @@ -4906,6 +5087,7 @@ } }, "0914": { + "id": "0914", "image_table_indices": { "1": "-1", "2": "-1", @@ -4933,6 +5115,7 @@ } }, "0917": { + "id": "0917", "image_table_indices": { "1": "21", "2": "425", @@ -4960,6 +5143,7 @@ } }, "0918": { + "id": "0918", "image_table_indices": { "1": "22", "2": "27", @@ -4987,6 +5171,7 @@ } }, "0919": { + "id": "0919", "image_table_indices": { "1": "-1", "2": "-1", @@ -5014,6 +5199,7 @@ } }, "0920": { + "id": "0920", "image_table_indices": { "1": "-1", "2": "-1", @@ -5041,6 +5227,7 @@ } }, "0921": { + "id": "0921", "image_table_indices": { "1": "-1", "2": "-1", @@ -5068,6 +5255,7 @@ } }, "0922": { + "id": "0922", "image_table_indices": { "1": "-1", "2": "-1", @@ -5095,6 +5283,7 @@ } }, "0923": { + "id": "0923", "image_table_indices": { "1": "-1", "2": "-1", @@ -5124,6 +5313,7 @@ }, "10": { "1000": { + "id": "1000", "image_table_indices": { "1": "-1", "2": "-1", @@ -5151,6 +5341,7 @@ } }, "1002": { + "id": "1002", "image_table_indices": { "1": "9", "2": "-1", @@ -5178,6 +5369,7 @@ } }, "1003": { + "id": "1003", "image_table_indices": { "1": "20", "2": "448", @@ -5205,6 +5397,7 @@ } }, "1004": { + "id": "1004", "image_table_indices": { "1": "87", "2": "194", @@ -5232,6 +5425,7 @@ } }, "1005": { + "id": "1005", "image_table_indices": { "1": "88", "2": "291", @@ -5259,6 +5453,7 @@ } }, "1006": { + "id": "1006", "image_table_indices": { "1": "378", "2": "415", @@ -5286,6 +5481,7 @@ } }, "1007": { + "id": "1007", "image_table_indices": { "1": "-1", "2": "-1", @@ -5313,6 +5509,7 @@ } }, "1008": { + "id": "1008", "image_table_indices": { "1": "18", "2": "-1", @@ -5340,6 +5537,7 @@ } }, "1009": { + "id": "1009", "image_table_indices": { "1": "123", "2": "42", @@ -5367,6 +5565,7 @@ } }, "1011": { + "id": "1011", "image_table_indices": { "1": "449", "2": "164", @@ -5394,6 +5593,7 @@ } }, "1012": { + "id": "1012", "image_table_indices": { "1": "451", "2": "25", @@ -5421,6 +5621,7 @@ } }, "1013": { + "id": "1013", "image_table_indices": { "1": "342", "2": "453", @@ -5448,6 +5649,7 @@ } }, "1014": { + "id": "1014", "image_table_indices": { "1": "45", "2": "-1", @@ -5475,6 +5677,7 @@ } }, "1015": { + "id": "1015", "image_table_indices": { "1": "-1", "2": "-1", @@ -5502,6 +5705,7 @@ } }, "1016": { + "id": "1016", "image_table_indices": { "1": "323", "2": "92", @@ -5529,6 +5733,7 @@ } }, "1017": { + "id": "1017", "image_table_indices": { "1": "326", "2": "198", @@ -5556,6 +5761,7 @@ } }, "1018": { + "id": "1018", "image_table_indices": { "1": "595", "2": "124", @@ -5583,6 +5789,7 @@ } }, "1019": { + "id": "1019", "image_table_indices": { "1": "600", "2": "368", @@ -5610,6 +5817,7 @@ } }, "1020": { + "id": "1020", "image_table_indices": { "1": "379", "2": "523", @@ -5637,6 +5845,7 @@ } }, "1021": { + "id": "1021", "image_table_indices": { "1": "167", "2": "-1", @@ -5664,6 +5873,7 @@ } }, "1022": { + "id": "1022", "image_table_indices": { "1": "170", "2": "456", @@ -5693,6 +5903,7 @@ }, "11": { "1100": { + "id": "1100", "image_table_indices": { "1": "-1", "2": "-1", @@ -5720,6 +5931,7 @@ } }, "1101": { + "id": "1101", "image_table_indices": { "1": "-1", "2": "-1", @@ -5747,6 +5959,7 @@ } }, "1102": { + "id": "1102", "image_table_indices": { "1": "-1", "2": "-1", @@ -5774,6 +5987,7 @@ } }, "1103": { + "id": "1103", "image_table_indices": { "1": "-1", "2": "-1", @@ -5801,6 +6015,7 @@ } }, "1104": { + "id": "1104", "image_table_indices": { "1": "-1", "2": "-1", @@ -5828,6 +6043,7 @@ } }, "1105": { + "id": "1105", "image_table_indices": { "1": "457", "2": "189", @@ -5855,6 +6071,7 @@ } }, "1106": { + "id": "1106", "image_table_indices": { "1": "458", "2": "51", @@ -5882,6 +6099,7 @@ } }, "1107": { + "id": "1107", "image_table_indices": { "1": "56", "2": "33", @@ -5909,6 +6127,7 @@ } }, "1109": { + "id": "1109", "image_table_indices": { "1": "-1", "2": "-1", @@ -5936,6 +6155,7 @@ } }, "1110": { + "id": "1110", "image_table_indices": { "1": "-1", "2": "-1", @@ -5963,6 +6183,7 @@ } }, "1111": { + "id": "1111", "image_table_indices": { "1": "-1", "2": "-1", @@ -5990,6 +6211,7 @@ } }, "1112": { + "id": "1112", "image_table_indices": { "1": "-1", "2": "-1", @@ -6017,6 +6239,7 @@ } }, "1113": { + "id": "1113", "image_table_indices": { "1": "-1", "2": "-1", @@ -6044,6 +6267,7 @@ } }, "1114": { + "id": "1114", "image_table_indices": { "1": "59", "2": "241", @@ -6071,6 +6295,7 @@ } }, "1115": { + "id": "1115", "image_table_indices": { "1": "242", "2": "60", @@ -6098,6 +6323,7 @@ } }, "1116": { + "id": "1116", "image_table_indices": { "1": "470", "2": "255", @@ -6125,6 +6351,7 @@ } }, "1117": { + "id": "1117", "image_table_indices": { "1": "471", "2": "65", @@ -6152,6 +6379,7 @@ } }, "1118": { + "id": "1118", "image_table_indices": { "1": "73", "2": "472", @@ -6179,6 +6407,7 @@ } }, "1120": { + "id": "1120", "image_table_indices": { "1": "199", "2": "327", @@ -6206,6 +6435,7 @@ } }, "1121": { + "id": "1121", "image_table_indices": { "1": "200", "2": "106", @@ -6233,6 +6463,7 @@ } }, "1122": { + "id": "1122", "image_table_indices": { "1": "532", "2": "382", @@ -6260,6 +6491,7 @@ } }, "1123": { + "id": "1123", "image_table_indices": { "1": "243", "2": "460", @@ -6289,6 +6521,7 @@ }, "12": { "1201": { + "id": "1201", "image_table_indices": { "1": "-1", "2": "-1", @@ -6316,6 +6549,7 @@ } }, "1202": { + "id": "1202", "image_table_indices": { "1": "77", "2": "313", @@ -6343,6 +6577,7 @@ } }, "1203": { + "id": "1203", "image_table_indices": { "1": "314", "2": "78", @@ -6370,6 +6605,7 @@ } }, "1204": { + "id": "1204", "image_table_indices": { "1": "315", "2": "477", @@ -6397,6 +6633,7 @@ } }, "1206": { + "id": "1206", "image_table_indices": { "1": "-1", "2": "-1", @@ -6424,6 +6661,7 @@ } }, "1207": { + "id": "1207", "image_table_indices": { "1": "-1", "2": "-1", @@ -6451,6 +6689,7 @@ } }, "1208": { + "id": "1208", "image_table_indices": { "1": "-1", "2": "-1", @@ -6478,6 +6717,7 @@ } }, "1209": { + "id": "1209", "image_table_indices": { "1": "-1", "2": "-1", @@ -6505,6 +6745,7 @@ } }, "1211": { + "id": "1211", "image_table_indices": { "1": "478", "2": "316", @@ -6532,6 +6773,7 @@ } }, "1212": { + "id": "1212", "image_table_indices": { "1": "624", "2": "90", @@ -6559,6 +6801,7 @@ } }, "1213": { + "id": "1213", "image_table_indices": { "1": "91", "2": "278", @@ -6586,6 +6829,7 @@ } }, "1214": { + "id": "1214", "image_table_indices": { "1": "-1", "2": "-1", @@ -6613,6 +6857,7 @@ } }, "1215": { + "id": "1215", "image_table_indices": { "1": "-1", "2": "-1", @@ -6640,6 +6885,7 @@ } }, "1216": { + "id": "1216", "image_table_indices": { "1": "107", "2": "201", @@ -6667,6 +6913,7 @@ } }, "1217": { + "id": "1217", "image_table_indices": { "1": "108", "2": "333", @@ -6694,6 +6941,7 @@ } }, "1218": { + "id": "1218", "image_table_indices": { "1": "535", "2": "432", @@ -6721,6 +6969,7 @@ } }, "1219": { + "id": "1219", "image_table_indices": { "1": "-1", "2": "-1", @@ -6748,6 +6997,7 @@ } }, "1220": { + "id": "1220", "image_table_indices": { "1": "96", "2": "319", @@ -6775,6 +7025,7 @@ } }, "1221": { + "id": "1221", "image_table_indices": { "1": "345", "2": "97", @@ -6802,6 +7053,7 @@ } }, "1223": { + "id": "1223", "image_table_indices": { "1": "-1", "2": "-1", @@ -6831,6 +7083,7 @@ }, "13": { "1300": { + "id": "1300", "image_table_indices": { "1": "113", "2": "485", @@ -6858,6 +7111,7 @@ } }, "1302": { + "id": "1302", "image_table_indices": { "1": "-1", "2": "-1", @@ -6885,6 +7139,7 @@ } }, "1303": { + "id": "1303", "image_table_indices": { "1": "-1", "2": "-1", @@ -6912,6 +7167,7 @@ } }, "1305": { + "id": "1305", "image_table_indices": { "1": "10", "2": "-1", @@ -6939,6 +7195,7 @@ } }, "1306": { + "id": "1306", "image_table_indices": { "1": "483", "2": "436", @@ -6966,6 +7223,7 @@ } }, "1307": { + "id": "1307", "image_table_indices": { "1": "484", "2": "101", @@ -6993,6 +7251,7 @@ } }, "1308": { + "id": "1308", "image_table_indices": { "1": "784", "2": "493", @@ -7020,6 +7279,7 @@ } }, "1309": { + "id": "1309", "image_table_indices": { "1": "-1", "2": "-1", @@ -7047,6 +7307,7 @@ } }, "1310": { + "id": "1310", "image_table_indices": { "1": "-1", "2": "-1", @@ -7074,6 +7335,7 @@ } }, "1312": { + "id": "1312", "image_table_indices": { "1": "-1", "2": "-1", @@ -7101,6 +7363,7 @@ } }, "1313": { + "id": "1313", "image_table_indices": { "1": "-1", "2": "-1", @@ -7128,6 +7391,7 @@ } }, "1314": { + "id": "1314", "image_table_indices": { "1": "120", "2": "288", @@ -7155,6 +7419,7 @@ } }, "1315": { + "id": "1315", "image_table_indices": { "1": "626", "2": "127", @@ -7182,6 +7447,7 @@ } }, "1317": { + "id": "1317", "image_table_indices": { "1": "494", "2": "420", @@ -7209,6 +7475,7 @@ } }, "1318": { + "id": "1318", "image_table_indices": { "1": "232", "2": "130", @@ -7236,6 +7503,7 @@ } }, "1319": { + "id": "1319", "image_table_indices": { "1": "131", "2": "497", @@ -7263,6 +7531,7 @@ } }, "1320": { + "id": "1320", "image_table_indices": { "1": "132", "2": "675", @@ -7290,6 +7559,7 @@ } }, "1321": { + "id": "1321", "image_table_indices": { "1": "334", "2": "109", @@ -7317,6 +7587,7 @@ } }, "1322": { + "id": "1322", "image_table_indices": { "1": "336", "2": "244", @@ -7344,6 +7615,7 @@ } }, "1323": { + "id": "1323", "image_table_indices": { "1": "433", "2": "537", @@ -7373,6 +7645,7 @@ }, "14": { "1400": { + "id": "1400", "image_table_indices": { "1": "-1", "2": "-1", @@ -7400,6 +7673,7 @@ } }, "1402": { + "id": "1402", "image_table_indices": { "1": "676", "2": "134", @@ -7427,6 +7701,7 @@ } }, "1403": { + "id": "1403", "image_table_indices": { "1": "681", "2": "503", @@ -7454,6 +7729,7 @@ } }, "1406": { + "id": "1406", "image_table_indices": { "1": "-1", "2": "-1", @@ -7481,6 +7757,7 @@ } }, "1408": { + "id": "1408", "image_table_indices": { "1": "-1", "2": "-1", @@ -7508,6 +7785,7 @@ } }, "1409": { + "id": "1409", "image_table_indices": { "1": "-1", "2": "-1", @@ -7535,6 +7813,7 @@ } }, "1410": { + "id": "1410", "image_table_indices": { "1": "-1", "2": "-1", @@ -7562,6 +7841,7 @@ } }, "1411": { + "id": "1411", "image_table_indices": { "1": "11", "2": "-1", @@ -7589,6 +7869,7 @@ } }, "1412": { + "id": "1412", "image_table_indices": { "1": "505", "2": "136", @@ -7616,6 +7897,7 @@ } }, "1414": { + "id": "1414", "image_table_indices": { "1": "-1", "2": "-1", @@ -7643,6 +7925,7 @@ } }, "1415": { + "id": "1415", "image_table_indices": { "1": "-1", "2": "-1", @@ -7670,6 +7953,7 @@ } }, "1416": { + "id": "1416", "image_table_indices": { "1": "-1", "2": "-1", @@ -7697,6 +7981,7 @@ } }, "1417": { + "id": "1417", "image_table_indices": { "1": "-1", "2": "-1", @@ -7724,6 +8009,7 @@ } }, "1418": { + "id": "1418", "image_table_indices": { "1": "-1", "2": "-1", @@ -7751,6 +8037,7 @@ } }, "1419": { + "id": "1419", "image_table_indices": { "1": "-1", "2": "-1", @@ -7778,6 +8065,7 @@ } }, "1420": { + "id": "1420", "image_table_indices": { "1": "137", "2": "506", @@ -7805,6 +8093,7 @@ } }, "1421": { + "id": "1421", "image_table_indices": { "1": "138", "2": "685", @@ -7832,6 +8121,7 @@ } }, "1422": { + "id": "1422", "image_table_indices": { "1": "-1", "2": "-1", @@ -7861,6 +8151,7 @@ }, "15": { "1500": { + "id": "1500", "image_table_indices": { "1": "-1", "2": "-1", @@ -7888,6 +8179,7 @@ } }, "1502": { + "id": "1502", "image_table_indices": { "1": "-1", "2": "-1", @@ -7915,6 +8207,7 @@ } }, "1503": { + "id": "1503", "image_table_indices": { "1": "-1", "2": "-1", @@ -7942,6 +8235,7 @@ } }, "1505": { + "id": "1505", "image_table_indices": { "1": "690", "2": "139", @@ -7969,6 +8263,7 @@ } }, "1506": { + "id": "1506", "image_table_indices": { "1": "695", "2": "510", @@ -7996,6 +8291,7 @@ } }, "1507": { + "id": "1507", "image_table_indices": { "1": "343", "2": "697", @@ -8023,6 +8319,7 @@ } }, "1508": { + "id": "1508", "image_table_indices": { "1": "147", "2": "700", @@ -8050,6 +8347,7 @@ } }, "1509": { + "id": "1509", "image_table_indices": { "1": "705", "2": "148", @@ -8077,6 +8375,7 @@ } }, "1510": { + "id": "1510", "image_table_indices": { "1": "246", "2": "338", @@ -8104,6 +8403,7 @@ } }, "1511": { + "id": "1511", "image_table_indices": { "1": "434", "2": "385", @@ -8131,6 +8431,7 @@ } }, "1512": { + "id": "1512", "image_table_indices": { "1": "-1", "2": "-1", @@ -8158,6 +8459,7 @@ } }, "1513": { + "id": "1513", "image_table_indices": { "1": "-1", "2": "-1", @@ -8185,6 +8487,7 @@ } }, "1514": { + "id": "1514", "image_table_indices": { "1": "511", "2": "143", @@ -8212,6 +8515,7 @@ } }, "1515": { + "id": "1515", "image_table_indices": { "1": "146", "2": "512", @@ -8239,6 +8543,7 @@ } }, "1516": { + "id": "1516", "image_table_indices": { "1": "525", "2": "707", @@ -8266,6 +8571,7 @@ } }, "1517": { + "id": "1517", "image_table_indices": { "1": "149", "2": "526", @@ -8293,6 +8599,7 @@ } }, "1518": { + "id": "1518", "image_table_indices": { "1": "-1", "2": "-1", @@ -8320,6 +8627,7 @@ } }, "1520": { + "id": "1520", "image_table_indices": { "1": "-1", "2": "-1", @@ -8347,6 +8655,7 @@ } }, "1521": { + "id": "1521", "image_table_indices": { "1": "-1", "2": "-1", @@ -8374,6 +8683,7 @@ } }, "1523": { + "id": "1523", "image_table_indices": { "1": "12", "2": "-1", @@ -8403,6 +8713,7 @@ }, "16": { "1600": { + "id": "1600", "image_table_indices": { "1": "151", "2": "709", @@ -8430,6 +8741,7 @@ } }, "1601": { + "id": "1601", "image_table_indices": { "1": "710", "2": "152", @@ -8457,6 +8769,7 @@ } }, "1602": { + "id": "1602", "image_table_indices": { "1": "711", "2": "534", @@ -8484,6 +8797,7 @@ } }, "1603": { + "id": "1603", "image_table_indices": { "1": "538", "2": "712", @@ -8511,6 +8825,7 @@ } }, "1604": { + "id": "1604", "image_table_indices": { "1": "-1", "2": "-1", @@ -8538,6 +8853,7 @@ } }, "1605": { + "id": "1605", "image_table_indices": { "1": "247", "2": "112", @@ -8565,6 +8881,7 @@ } }, "1606": { + "id": "1606", "image_table_indices": { "1": "-1", "2": "-1", @@ -8592,6 +8909,7 @@ } }, "1607": { + "id": "1607", "image_table_indices": { "1": "386", "2": "435", @@ -8619,6 +8937,7 @@ } }, "1608": { + "id": "1608", "image_table_indices": { "1": "-1", "2": "-1", @@ -8646,6 +8965,7 @@ } }, "1609": { + "id": "1609", "image_table_indices": { "1": "422", "2": "157", @@ -8673,6 +8993,7 @@ } }, "1610": { + "id": "1610", "image_table_indices": { "1": "158", "2": "541", @@ -8700,6 +9021,7 @@ } }, "1611": { + "id": "1611", "image_table_indices": { "1": "159", "2": "715", @@ -8727,6 +9049,7 @@ } }, "1612": { + "id": "1612", "image_table_indices": { "1": "716", "2": "160", @@ -8754,6 +9077,7 @@ } }, "1614": { + "id": "1614", "image_table_indices": { "1": "-1", "2": "-1", @@ -8781,6 +9105,7 @@ } }, "1615": { + "id": "1615", "image_table_indices": { "1": "-1", "2": "-1", @@ -8808,6 +9133,7 @@ } }, "1618": { + "id": "1618", "image_table_indices": { "1": "13", "2": "-1", @@ -8835,6 +9161,7 @@ } }, "1619": { + "id": "1619", "image_table_indices": { "1": "552", "2": "717", @@ -8862,6 +9189,7 @@ } }, "1620": { + "id": "1620", "image_table_indices": { "1": "554", "2": "162", @@ -8889,6 +9217,7 @@ } }, "1621": { + "id": "1621", "image_table_indices": { "1": "168", "2": "560", @@ -8916,6 +9245,7 @@ } }, "1622": { + "id": "1622", "image_table_indices": { "1": "-1", "2": "-1", @@ -8945,6 +9275,7 @@ }, "17": { "1700": { + "id": "1700", "image_table_indices": { "1": "-1", "2": "-1", @@ -8972,6 +9303,7 @@ } }, "1701": { + "id": "1701", "image_table_indices": { "1": "-1", "2": "-1", @@ -8999,6 +9331,7 @@ } }, "1703": { + "id": "1703", "image_table_indices": { "1": "423", "2": "720", @@ -9026,6 +9359,7 @@ } }, "1704": { + "id": "1704", "image_table_indices": { "1": "721", "2": "169", @@ -9053,6 +9387,7 @@ } }, "1705": { + "id": "1705", "image_table_indices": { "1": "722", "2": "574", @@ -9080,6 +9415,7 @@ } }, "1707": { + "id": "1707", "image_table_indices": { "1": "-1", "2": "-1", @@ -9107,6 +9443,7 @@ } }, "1709": { + "id": "1709", "image_table_indices": { "1": "-1", "2": "-1", @@ -9134,6 +9471,7 @@ } }, "1710": { + "id": "1710", "image_table_indices": { "1": "-1", "2": "-1", @@ -9161,6 +9499,7 @@ } }, "1711": { + "id": "1711", "image_table_indices": { "1": "-1", "2": "-1", @@ -9188,6 +9527,7 @@ } }, "1712": { + "id": "1712", "image_table_indices": { "1": "575", "2": "723", @@ -9215,6 +9555,7 @@ } }, "1713": { + "id": "1713", "image_table_indices": { "1": "576", "2": "207", @@ -9242,6 +9583,7 @@ } }, "1714": { + "id": "1714", "image_table_indices": { "1": "208", "2": "581", @@ -9269,6 +9611,7 @@ } }, "1716": { + "id": "1716", "image_table_indices": { "1": "590", "2": "729", @@ -9296,6 +9639,7 @@ } }, "1717": { + "id": "1717", "image_table_indices": { "1": "-1", "2": "-1", @@ -9323,6 +9667,7 @@ } }, "1719": { + "id": "1719", "image_table_indices": { "1": "-1", "2": "-1", @@ -9350,6 +9695,7 @@ } }, "1720": { + "id": "1720", "image_table_indices": { "1": "-1", "2": "-1", @@ -9377,6 +9723,7 @@ } }, "1721": { + "id": "1721", "image_table_indices": { "1": "424", "2": "726", @@ -9404,6 +9751,7 @@ } }, "1722": { + "id": "1722", "image_table_indices": { "1": "727", "2": "209", @@ -9431,6 +9779,7 @@ } }, "1723": { + "id": "1723", "image_table_indices": { "1": "728", "2": "589", @@ -9460,6 +9809,7 @@ }, "18": { "1800": { + "id": "1800", "image_table_indices": { "1": "215", "2": "732", @@ -9487,6 +9837,7 @@ } }, "1801": { + "id": "1801", "image_table_indices": { "1": "302", "2": "216", @@ -9514,6 +9865,7 @@ } }, "1804": { + "id": "1804", "image_table_indices": { "1": "-1", "2": "-1", @@ -9541,6 +9893,7 @@ } }, "1806": { + "id": "1806", "image_table_indices": { "1": "591", "2": "213", @@ -9568,6 +9921,7 @@ } }, "1807": { + "id": "1807", "image_table_indices": { "1": "214", "2": "-1", @@ -9595,6 +9949,7 @@ } }, "1808": { + "id": "1808", "image_table_indices": { "1": "601", "2": "734", @@ -9622,6 +9977,7 @@ } }, "1809": { + "id": "1809", "image_table_indices": { "1": "602", "2": "219", @@ -9649,6 +10005,7 @@ } }, "1810": { + "id": "1810", "image_table_indices": { "1": "221", "2": "603", @@ -9676,6 +10033,7 @@ } }, "1811": { + "id": "1811", "image_table_indices": { "1": "-1", "2": "-1", @@ -9703,6 +10061,7 @@ } }, "1812": { + "id": "1812", "image_table_indices": { "1": "-1", "2": "-1", @@ -9730,6 +10089,7 @@ } }, "1813": { + "id": "1813", "image_table_indices": { "1": "-1", "2": "-1", @@ -9757,6 +10117,7 @@ } }, "1815": { + "id": "1815", "image_table_indices": { "1": "733", "2": "599", @@ -9784,6 +10145,7 @@ } }, "1816": { + "id": "1816", "image_table_indices": { "1": "222", "2": "737", @@ -9811,6 +10173,7 @@ } }, "1817": { + "id": "1817", "image_table_indices": { "1": "738", "2": "223", @@ -9838,6 +10201,7 @@ } }, "1818": { + "id": "1818", "image_table_indices": { "1": "739", "2": "609", @@ -9865,6 +10229,7 @@ } }, "1819": { + "id": "1819", "image_table_indices": { "1": "-1", "2": "-1", @@ -9892,6 +10257,7 @@ } }, "1820": { + "id": "1820", "image_table_indices": { "1": "-1", "2": "-1", @@ -9919,6 +10285,7 @@ } }, "1821": { + "id": "1821", "image_table_indices": { "1": "-1", "2": "-1", @@ -9946,6 +10313,7 @@ } }, "1822": { + "id": "1822", "image_table_indices": { "1": "-1", "2": "-1", @@ -9973,6 +10341,7 @@ } }, "1823": { + "id": "1823", "image_table_indices": { "1": "-1", "2": "-1", @@ -10002,6 +10371,7 @@ }, "19": { "1901": { + "id": "1901", "image_table_indices": { "1": "610", "2": "740", @@ -10029,6 +10399,7 @@ } }, "1902": { + "id": "1902", "image_table_indices": { "1": "611", "2": "226", @@ -10056,6 +10427,7 @@ } }, "1903": { + "id": "1903", "image_table_indices": { "1": "227", "2": "612", @@ -10083,6 +10455,7 @@ } }, "1904": { + "id": "1904", "image_table_indices": { "1": "228", "2": "743", @@ -10110,6 +10483,7 @@ } }, "1905": { + "id": "1905", "image_table_indices": { "1": "-1", "2": "-1", @@ -10137,6 +10511,7 @@ } }, "1906": { + "id": "1906", "image_table_indices": { "1": "-1", "2": "-1", @@ -10164,6 +10539,7 @@ } }, "1907": { + "id": "1907", "image_table_indices": { "1": "-1", "2": "-1", @@ -10191,6 +10567,7 @@ } }, "1908": { + "id": "1908", "image_table_indices": { "1": "-1", "2": "-1", @@ -10218,6 +10595,7 @@ } }, "1909": { + "id": "1909", "image_table_indices": { "1": "-1", "2": "-1", @@ -10245,6 +10623,7 @@ } }, "1910": { + "id": "1910", "image_table_indices": { "1": "731", "2": "229", @@ -10272,6 +10651,7 @@ } }, "1911": { + "id": "1911", "image_table_indices": { "1": "745", "2": "616", @@ -10299,6 +10679,7 @@ } }, "1912": { + "id": "1912", "image_table_indices": { "1": "617", "2": "746", @@ -10326,6 +10707,7 @@ } }, "1913": { + "id": "1913", "image_table_indices": { "1": "619", "2": "234", @@ -10353,6 +10735,7 @@ } }, "1914": { + "id": "1914", "image_table_indices": { "1": "-1", "2": "-1", @@ -10380,6 +10763,7 @@ } }, "1915": { + "id": "1915", "image_table_indices": { "1": "-1", "2": "-1", @@ -10407,6 +10791,7 @@ } }, "1917": { + "id": "1917", "image_table_indices": { "1": "-1", "2": "-1", @@ -10434,6 +10819,7 @@ } }, "1918": { + "id": "1918", "image_table_indices": { "1": "-1", "2": "-1", @@ -10461,6 +10847,7 @@ } }, "1919": { + "id": "1919", "image_table_indices": { "1": "270", "2": "620", @@ -10488,6 +10875,7 @@ } }, "1920": { + "id": "1920", "image_table_indices": { "1": "271", "2": "749", @@ -10515,6 +10903,7 @@ } }, "1921": { + "id": "1921", "image_table_indices": { "1": "750", "2": "273", @@ -10542,6 +10931,7 @@ } }, "1922": { + "id": "1922", "image_table_indices": { "1": "751", "2": "623", @@ -10571,6 +10961,7 @@ }, "20": { "2000": { + "id": "2000", "image_table_indices": { "1": "-1", "2": "-1", @@ -10598,6 +10989,7 @@ } }, "2001": { + "id": "2001", "image_table_indices": { "1": "-1", "2": "-1", @@ -10625,6 +11017,7 @@ } }, "2002": { + "id": "2002", "image_table_indices": { "1": "-1", "2": "-1", @@ -10652,6 +11045,7 @@ } }, "2004": { + "id": "2004", "image_table_indices": { "1": "479", "2": "752", @@ -10679,6 +11073,7 @@ } }, "2005": { + "id": "2005", "image_table_indices": { "1": "625", "2": "276", @@ -10706,6 +11101,7 @@ } }, "2006": { + "id": "2006", "image_table_indices": { "1": "480", "2": "627", @@ -10733,6 +11129,7 @@ } }, "2007": { + "id": "2007", "image_table_indices": { "1": "283", "2": "755", @@ -10760,6 +11157,7 @@ } }, "2008": { + "id": "2008", "image_table_indices": { "1": "636", "2": "287", @@ -10787,6 +11185,7 @@ } }, "2009": { + "id": "2009", "image_table_indices": { "1": "-1", "2": "-1", @@ -10814,6 +11213,7 @@ } }, "2010": { + "id": "2010", "image_table_indices": { "1": "122", "2": "248", @@ -10841,6 +11241,7 @@ } }, "2011": { + "id": "2011", "image_table_indices": { "1": "387", "2": "567", @@ -10868,6 +11269,7 @@ } }, "2012": { + "id": "2012", "image_table_indices": { "1": "-1", "2": "-1", @@ -10895,6 +11297,7 @@ } }, "2013": { + "id": "2013", "image_table_indices": { "1": "756", "2": "284", @@ -10922,6 +11325,7 @@ } }, "2014": { + "id": "2014", "image_table_indices": { "1": "757", "2": "634", @@ -10949,6 +11353,7 @@ } }, "2015": { + "id": "2015", "image_table_indices": { "1": "635", "2": "758", @@ -10976,6 +11381,7 @@ } }, "2016": { + "id": "2016", "image_table_indices": { "1": "762", "2": "290", @@ -11003,6 +11409,7 @@ } }, "2017": { + "id": "2017", "image_table_indices": { "1": "763", "2": "640", @@ -11030,6 +11437,7 @@ } }, "2019": { + "id": "2019", "image_table_indices": { "1": "-1", "2": "-1", @@ -11057,6 +11465,7 @@ } }, "2020": { + "id": "2020", "image_table_indices": { "1": "-1", "2": "-1", @@ -11084,6 +11493,7 @@ } }, "2021": { + "id": "2021", "image_table_indices": { "1": "-1", "2": "-1", @@ -11111,6 +11521,7 @@ } }, "2022": { + "id": "2022", "image_table_indices": { "1": "628", "2": "637", @@ -11138,6 +11549,7 @@ } }, "2023": { + "id": "2023", "image_table_indices": { "1": "289", "2": "761", @@ -11167,6 +11579,7 @@ }, "21": { "2100": { + "id": "2100", "image_table_indices": { "1": "642", "2": "294", @@ -11194,6 +11607,7 @@ } }, "2101": { + "id": "2101", "image_table_indices": { "1": "295", "2": "643", @@ -11221,6 +11635,7 @@ } }, "2102": { + "id": "2102", "image_table_indices": { "1": "296", "2": "767", @@ -11248,6 +11663,7 @@ } }, "2104": { + "id": "2104", "image_table_indices": { "1": "-1", "2": "-1", @@ -11275,6 +11691,7 @@ } }, "2105": { + "id": "2105", "image_table_indices": { "1": "-1", "2": "-1", @@ -11302,6 +11719,7 @@ } }, "2106": { + "id": "2106", "image_table_indices": { "1": "-1", "2": "-1", @@ -11329,6 +11747,7 @@ } }, "2107": { + "id": "2107", "image_table_indices": { "1": "641", "2": "764", @@ -11356,6 +11775,7 @@ } }, "2108": { + "id": "2108", "image_table_indices": { "1": "768", "2": "297", @@ -11383,6 +11803,7 @@ } }, "2109": { + "id": "2109", "image_table_indices": { "1": "629", "2": "646", @@ -11410,6 +11831,7 @@ } }, "2110": { + "id": "2110", "image_table_indices": { "1": "649", "2": "771", @@ -11437,6 +11859,7 @@ } }, "2112": { + "id": "2112", "image_table_indices": { "1": "140", "2": "341", @@ -11464,6 +11887,7 @@ } }, "2113": { + "id": "2113", "image_table_indices": { "1": "568", "2": "388", @@ -11491,6 +11915,7 @@ } }, "2115": { + "id": "2115", "image_table_indices": { "1": "-1", "2": "-1", @@ -11518,6 +11943,7 @@ } }, "2117": { + "id": "2117", "image_table_indices": { "1": "663", "2": "300", @@ -11545,6 +11971,7 @@ } }, "2118": { + "id": "2118", "image_table_indices": { "1": "301", "2": "650", @@ -11572,6 +11999,7 @@ } }, "2119": { + "id": "2119", "image_table_indices": { "1": "231", "2": "774", @@ -11599,6 +12027,7 @@ } }, "2120": { + "id": "2120", "image_table_indices": { "1": "775", "2": "303", @@ -11626,6 +12055,7 @@ } }, "2121": { + "id": "2121", "image_table_indices": { "1": "-1", "2": "-1", @@ -11655,6 +12085,7 @@ }, "22": { "2200": { + "id": "2200", "image_table_indices": { "1": "-1", "2": "-1", @@ -11682,6 +12113,7 @@ } }, "2201": { + "id": "2201", "image_table_indices": { "1": "-1", "2": "-1", @@ -11709,6 +12141,7 @@ } }, "2202": { + "id": "2202", "image_table_indices": { "1": "776", "2": "654", @@ -11736,6 +12169,7 @@ } }, "2203": { + "id": "2203", "image_table_indices": { "1": "656", "2": "777", @@ -11763,6 +12197,7 @@ } }, "2204": { + "id": "2204", "image_table_indices": { "1": "657", "2": "306", @@ -11790,6 +12225,7 @@ } }, "2205": { + "id": "2205", "image_table_indices": { "1": "-1", "2": "-1", @@ -11817,6 +12253,7 @@ } }, "2207": { + "id": "2207", "image_table_indices": { "1": "-1", "2": "-1", @@ -11844,6 +12281,7 @@ } }, "2208": { + "id": "2208", "image_table_indices": { "1": "-1", "2": "-1", @@ -11871,6 +12309,7 @@ } }, "2209": { + "id": "2209", "image_table_indices": { "1": "-1", "2": "-1", @@ -11898,6 +12337,7 @@ } }, "2210": { + "id": "2210", "image_table_indices": { "1": "-1", "2": "-1", @@ -11925,6 +12365,7 @@ } }, "2211": { + "id": "2211", "image_table_indices": { "1": "307", "2": "659", @@ -11952,6 +12393,7 @@ } }, "2212": { + "id": "2212", "image_table_indices": { "1": "308", "2": "780", @@ -11979,6 +12421,7 @@ } }, "2214": { + "id": "2214", "image_table_indices": { "1": "-1", "2": "-1", @@ -12006,6 +12449,7 @@ } }, "2215": { + "id": "2215", "image_table_indices": { "1": "-1", "2": "-1", @@ -12033,6 +12477,7 @@ } }, "2216": { + "id": "2216", "image_table_indices": { "1": "-1", "2": "-1", @@ -12060,6 +12505,7 @@ } }, "2217": { + "id": "2217", "image_table_indices": { "1": "-1", "2": "-1", @@ -12087,6 +12533,7 @@ } }, "2218": { + "id": "2218", "image_table_indices": { "1": "369", "2": "605", @@ -12114,6 +12561,7 @@ } }, "2219": { + "id": "2219", "image_table_indices": { "1": "-1", "2": "-1", @@ -12141,6 +12589,7 @@ } }, "2220": { + "id": "2220", "image_table_indices": { "1": "781", "2": "309", @@ -12168,6 +12617,7 @@ } }, "2221": { + "id": "2221", "image_table_indices": { "1": "782", "2": "662", @@ -12195,6 +12645,7 @@ } }, "2222": { + "id": "2222", "image_table_indices": { "1": "35", "2": "145", @@ -12222,6 +12673,7 @@ } }, "2223": { + "id": "2223", "image_table_indices": { "1": "585", "2": "441", diff --git a/src/scenes/MediaScene.tsx b/src/scenes/MediaScene.tsx index 35553ed..cc2a45d 100644 --- a/src/scenes/MediaScene.tsx +++ b/src/scenes/MediaScene.tsx @@ -1,12 +1,5 @@ import React, { useCallback, useEffect } from "react"; -import { - useIdleStore, - useLevelStore, - useMediaStore, - useNodeStore, - useSceneStore, - useSiteStore, -} from "../store"; +import { useMainSceneStore, useMediaStore } from "../store"; import LeftSide from "../components/MediaScene/Selectables/LeftSide"; import RightSide from "../components/MediaScene/Selectables/RightSide"; import AudioVisualizer from "../components/MediaScene/AudioVisualizer/AudioVisualizer"; @@ -15,29 +8,20 @@ import NodeNameContainer from "../components/MediaScene/NodeNameContainer"; import Lof from "../components/MediaScene/Lof"; import Images from "../components/MediaScene/Images"; import MediumLetter from "../components/TextRenderer/MediumLetter"; -import site_a from "../resources/site_a.json"; -import { SiteType } from "../components/MainScene/SyncedComponents/Site"; import MediaYellowTextAnimator from "../components/TextRenderer/MediaYellowTextAnimator"; -import site_b from "../resources/site_b.json"; import MediaSceneEventManager from "../core/StateManagers/MediaSceneEventManager"; const MediaScene = () => { - const currentScene = useSceneStore((state) => state.currentScene); const mediaComponentMatrixIndices = useMediaStore( (state) => state.componentMatrixIndices ); - const idleMedia = useIdleStore((state) => state.media); - const activeNodeId = useNodeStore((state) => state.activeNodeState.id); - const activeLevel = useLevelStore((state) => state.activeLevel); - - const currentSite = useSiteStore((state) => state.currentSite); - - const siteData = currentSite === "a" ? site_a : site_b; - - const activeNodeData = (siteData as SiteType)[activeLevel][activeNodeId]; - const activeNodeName = activeNodeData.node_name; - const activeNodeMedia = activeNodeData.media_file; + const activeNodeName = useMainSceneStore((state) => + state.activeNode.node_name.split("") + ); + const activeNodeMedia = useMainSceneStore( + (state) => state.activeNode.media_file + ); const activeMediaComponent = useMediaStore( useCallback( @@ -70,7 +54,7 @@ const MediaScene = () => { - {activeNodeName.split("").map((letter, idx) => ( + {activeNodeName.map((letter: string, idx: number) => ( ))} diff --git a/src/store.ts b/src/store.ts index 02f804d..4cf45a0 100644 --- a/src/store.ts +++ b/src/store.ts @@ -5,6 +5,7 @@ import site_a from "./resources/site_a.json"; import site_b from "./resources/site_b.json"; import authorize_user_letters from "./resources/authorize_user_letters.json"; import game_progress from "./resources/initial_progress.json"; +import { HUDType } from "./components/MainScene/SyncedComponents/HUD"; type EndState = { mediaPlayedCount: number; @@ -86,15 +87,6 @@ type LainState = { setLainMoveState: (to: string) => void; }; -type StarfieldState = { - introStarfieldVisible: boolean; - mainStarfieldVisible: boolean; - mainStarfieldBoostVal: number; - setIntroStarfieldVisible: (to: boolean) => void; - setMainStarfieldVisible: (to: boolean) => void; - setMainStarfieldBoostVal: (to: number) => void; -}; - type SiteState = { currentSite: "a" | "b"; transformState: { @@ -241,44 +233,6 @@ export const useMediaBigTextStore = create( ) ); -export const useHudStore = create((set) => ({ - id: "fg_hud_1", - active: 1, - setId: (to) => set(() => ({ id: to })), - toggleActive: () => set((state) => ({ active: Number(!state.active) })), -})); - -export const useNodeStore = create( - combine( - { - activeNodeState: { - id: "0422", - posX: 0, - posZ: 0, - rotZ: 0, - posY: 0, - interactedWith: false, - exploding: false, - shrinking: false, - visible: true, - }, - nodeMatrixIndices: { matrixIdx: 7, rowIdx: 0, colIdx: 0 }, - gameProgress: game_progress, - } as NodeState, - (set) => ({ - setActiveNodeState: (to: number | boolean | string, at: string) => - set((state) => ({ - activeNodeState: { ...state.activeNodeState, [at]: to }, - })), - setNodeMatrixIndices: (to: { - matrixIdx: number; - rowIdx: number; - colIdx: number; - }) => set(() => ({ nodeMatrixIndices: to })), - }) - ) -); - export const useIdleStore = create((set) => ({ media: "INS01.STR", // this may be undefined depending on whether or not the media is audio or not @@ -287,20 +241,6 @@ export const useIdleStore = create((set) => ({ setImages: (to) => set(() => ({ images: to })), })); -export const useLainStore = create((set) => ({ - lainMoveState: "standing", - setLainMoveState: (to) => set(() => ({ lainMoveState: to })), -})); - -export const useStarfieldStore = create((set) => ({ - introStarfieldVisible: false, - mainStarfieldVisible: true, - mainStarfieldBoostVal: 0.2, - setIntroStarfieldVisible: (to) => set(() => ({ introStarfieldVisible: to })), - setMainStarfieldVisible: (to) => set(() => ({ mainStarfieldVisible: to })), - setMainStarfieldBoostVal: (to) => set(() => ({ mainStarfieldBoostVal: to })), -})); - export const useSiteStore = create( combine( { @@ -468,11 +408,56 @@ export const useMainSceneStore = create( bigTextXOffset: 0, // hud - hudId: "fg_hud_1", + hud: { + mirrored: 0, + long: { + position: [-0.45, 0.15, -8.6], + initial_position: [-1.45, 0.15, -8.6], + }, + boring: { + position: [0.48, 0.174, -8.6], + initial_position: [1.48, 0.174, -8.6], + }, + big: { + position: [0.36, 0.13, -8.6], + initial_position: [1.36, 0.13, -8.6], + }, + big_text: [-0.35, 0.23, -8.7], + medium_text: { + position: [0.18, 0.16, -8.7], + initial_position: [1.18, 0.16, -8.7], + }, + }, hudActive: 1, // nodes - activeNodeId: "0422", + activeNode: { + image_table_indices: { + "1": "93", + "2": "356", + "3": "562", + }, + media_file: "LAIN08.XA[26]", + node_name: "Tda028", + protocol_lines: { + "1": "TOUKO's_DIARY", + "2": "authorized_il", + "3": "decoded file:t", + "4": "ftp/tl.S_server", + }, + required_final_video_viewcount: 0, + site: "A", + title: "TOUKO's DIARY", + triggers_final_video: 0, + type: 2, + unlocked_by: "", + upgrade_requirement: 0, + words: { + "1": "eye", + "2": "quiet", + "3": "hallucination", + }, + }, activeNodeMatrixIndices: { matrixIdx: 7, rowIdx: 0, colIdx: 0 }, activeNodePos: [0, 0, 0], activeNodeRot: [0, 0, 0], @@ -486,11 +471,6 @@ export const useMainSceneStore = create( // lain lainMoveState: "standing", - // starfield - mainStarfieldVisible: true, - introStarfieldVisible: false, - mainStarBoostVal: 0.2, - // site activeSite: "a", siteRot: [0, 0, 0], @@ -535,20 +515,20 @@ export const useMainSceneStore = create( setBigTextXOffset: (to: number) => set(() => ({ bigTextXOffset: to })), // hud setters - setHudId: (to: string) => set(() => ({ hudId: to })), + setHud: (to: HUDType) => set(() => ({ hud: to })), toggleHudActive: () => set((state) => ({ hudActive: Number(!state.hudActive) })), // node setters - setActiveNodeId: (to: string) => set(() => ({ activeNodeId: to })), - setActiveNodeMatrixIndices: (to: { + setNode: (to: string) => set(() => ({ activeNode: to })), + setNodeMatrixIndices: (to: { matrixIdx: number; rowIdx: number; colIdx: number; }) => set(() => ({ activeNodeMatrixIndices: to })), - setActiveNodePos: (to: number[]) => set(() => ({ activeNodePos: to })), - setActiveNodeRot: (to: number[]) => set(() => ({ activeNodeRot: to })), - setActiveNodeState: ( + setNodePos: (to: number[]) => set(() => ({ activeNodePos: to })), + setNodeRot: (to: number[]) => set(() => ({ activeNodeRot: to })), + setNodeState: ( to: boolean, at: "interactedWith" | "visible" | "exploding" | "shrinking" ) => @@ -559,14 +539,6 @@ export const useMainSceneStore = create( // lain setters setLainMoveState: (to: string) => set(() => ({ lainMoveState: to })), - // starfield setters - setMainStarfieldVisible: (to: boolean) => - set(() => ({ mainStarfieldVisible: to })), - setMainStarBoostVal: (to: number) => - set(() => ({ mainStarBoostVal: to })), - setIntroStarfieldVisible: (to: boolean) => - set(() => ({ introStarfieldVisible: to })), - // site setters setActiveSite: (to: "a" | "b") => set(() => ({ activeSite: to })), setSiteRot: (to: number[]) => set(() => ({ siteRot: to })),