mirror of
https://github.com/ad044/lainTSX.git
synced 2024-10-22 23:19:06 +00:00
cleaned up node selector a bit, level selector works properly
This commit is contained in:
parent
6c3374de01
commit
2b911fd6c4
7 changed files with 220 additions and 283 deletions
|
@ -7,6 +7,7 @@ const YellowTextRenderer = (props: { visible?: boolean }) => {
|
||||||
const disableTrail = useBigTextStore((state) => state.disableTrail);
|
const disableTrail = useBigTextStore((state) => state.disableTrail);
|
||||||
const transformState = useBigTextStore((state) => state.transformState);
|
const transformState = useBigTextStore((state) => state.transformState);
|
||||||
|
|
||||||
|
const visible = useBigTextStore((state) => state.visible);
|
||||||
const color = useBigTextStore((state) => state.color);
|
const color = useBigTextStore((state) => state.color);
|
||||||
|
|
||||||
const textArrRef = useRef(useBigTextStore.getState().text.split(""));
|
const textArrRef = useRef(useBigTextStore.getState().text.split(""));
|
||||||
|
@ -40,7 +41,7 @@ const YellowTextRenderer = (props: { visible?: boolean }) => {
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<group position={[0, 0, 10]} visible={props.visible}>
|
<group position={[0, 0, 10]} visible={props.visible && visible}>
|
||||||
{disableTrail
|
{disableTrail
|
||||||
? textArrRef.current.map((letter, idx) => (
|
? textArrRef.current.map((letter, idx) => (
|
||||||
<a.group
|
<a.group
|
||||||
|
|
|
@ -17,7 +17,8 @@ const GreenTextManager = (props: StateManagerProps) => {
|
||||||
newActiveNodeId: string,
|
newActiveNodeId: string,
|
||||||
newActiveHudId: string,
|
newActiveHudId: string,
|
||||||
newLevel: string,
|
newLevel: string,
|
||||||
delay: number
|
delay: number,
|
||||||
|
shouldToggleAtStart: boolean
|
||||||
) => {
|
) => {
|
||||||
const targetGreenText = (site_a as SiteType)[newLevel][newActiveNodeId]
|
const targetGreenText = (site_a as SiteType)[newLevel][newActiveNodeId]
|
||||||
.title;
|
.title;
|
||||||
|
@ -25,7 +26,7 @@ const GreenTextManager = (props: StateManagerProps) => {
|
||||||
const targetGreenTextPosData =
|
const targetGreenTextPosData =
|
||||||
node_huds[newActiveHudId as keyof typeof node_huds].medium_text;
|
node_huds[newActiveHudId as keyof typeof node_huds].medium_text;
|
||||||
|
|
||||||
toggleActive();
|
if (shouldToggleAtStart) toggleActive();
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setTransformState(
|
setTransformState(
|
||||||
|
@ -74,12 +75,12 @@ const GreenTextManager = (props: StateManagerProps) => {
|
||||||
case "site_right":
|
case "site_right":
|
||||||
return {
|
return {
|
||||||
action: toggleAndSetGreenText,
|
action: toggleAndSetGreenText,
|
||||||
value: [newActiveNodeId, newActiveHudId, newLevel, 3903.704],
|
value: [newActiveNodeId, newActiveHudId, newLevel, 3900, true],
|
||||||
};
|
};
|
||||||
case "change_node":
|
case "change_node":
|
||||||
return {
|
return {
|
||||||
action: toggleAndSetGreenText,
|
action: toggleAndSetGreenText,
|
||||||
value: [newActiveNodeId, newActiveHudId, newLevel, 500],
|
value: [newActiveNodeId, newActiveHudId, newLevel, 500, true],
|
||||||
};
|
};
|
||||||
case "throw_node_media":
|
case "throw_node_media":
|
||||||
return {
|
return {
|
||||||
|
@ -90,6 +91,12 @@ const GreenTextManager = (props: StateManagerProps) => {
|
||||||
return {
|
return {
|
||||||
action: toggleActive,
|
action: toggleActive,
|
||||||
};
|
};
|
||||||
|
case "select_level_up":
|
||||||
|
case "select_level_down":
|
||||||
|
return {
|
||||||
|
action: toggleAndSetGreenText,
|
||||||
|
value: [newActiveNodeId, newActiveHudId, newLevel, 3900, false],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[initializeGreenTextForMediaScene, toggleActive, toggleAndSetGreenText]
|
[initializeGreenTextForMediaScene, toggleActive, toggleAndSetGreenText]
|
||||||
|
|
|
@ -39,17 +39,15 @@ const NodeManager = (props: StateManagerProps) => {
|
||||||
delay: number,
|
delay: number,
|
||||||
isMoving: boolean,
|
isMoving: boolean,
|
||||||
newActiveNodeId: string,
|
newActiveNodeId: string,
|
||||||
newNodeColIdx: number,
|
newNodeMatrixIndices: {
|
||||||
newNodeRowIdx: number,
|
matrixIdx: number;
|
||||||
newNodeMatIdx: number
|
rowIdx: number;
|
||||||
|
colIdx: number;
|
||||||
|
}
|
||||||
) => {
|
) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setActiveNodeState(newActiveNodeId, "id");
|
setActiveNodeState(newActiveNodeId, "id");
|
||||||
setNodeMatrixIndices({
|
setNodeMatrixIndices(newNodeMatrixIndices);
|
||||||
matrixIdx: newNodeMatIdx,
|
|
||||||
rowIdx: newNodeRowIdx,
|
|
||||||
colIdx: newNodeColIdx,
|
|
||||||
});
|
|
||||||
}, delay);
|
}, delay);
|
||||||
},
|
},
|
||||||
[setActiveNodeState, setNodeMatrixIndices]
|
[setActiveNodeState, setNodeMatrixIndices]
|
||||||
|
@ -59,9 +57,11 @@ const NodeManager = (props: StateManagerProps) => {
|
||||||
(
|
(
|
||||||
event: string,
|
event: string,
|
||||||
newActiveNodeId: string,
|
newActiveNodeId: string,
|
||||||
newNodeColIdx: number,
|
newNodeMatrixIndices: {
|
||||||
newNodeRowIdx: number,
|
matrixIdx: number;
|
||||||
newNodeMatIdx: number
|
rowIdx: number;
|
||||||
|
colIdx: number;
|
||||||
|
}
|
||||||
) => {
|
) => {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case "site_up":
|
case "site_up":
|
||||||
|
@ -72,26 +72,12 @@ const NodeManager = (props: StateManagerProps) => {
|
||||||
case "select_level_down":
|
case "select_level_down":
|
||||||
return {
|
return {
|
||||||
action: updateActiveNode,
|
action: updateActiveNode,
|
||||||
value: [
|
value: [3900, true, newActiveNodeId, newNodeMatrixIndices],
|
||||||
3900,
|
|
||||||
true,
|
|
||||||
newActiveNodeId,
|
|
||||||
newNodeColIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeMatIdx,
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
case "change_node":
|
case "change_node":
|
||||||
return {
|
return {
|
||||||
action: updateActiveNode,
|
action: updateActiveNode,
|
||||||
value: [
|
value: [0, false, newActiveNodeId, newNodeMatrixIndices],
|
||||||
0,
|
|
||||||
false,
|
|
||||||
newActiveNodeId,
|
|
||||||
newNodeColIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeMatIdx,
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
case "throw_node_media":
|
case "throw_node_media":
|
||||||
case "throw_node_gate":
|
case "throw_node_gate":
|
||||||
|
@ -109,17 +95,12 @@ const NodeManager = (props: StateManagerProps) => {
|
||||||
if (props.eventState) {
|
if (props.eventState) {
|
||||||
const eventAction = props.eventState.event;
|
const eventAction = props.eventState.event;
|
||||||
const newActiveNodeId = props.eventState.newActiveNodeId;
|
const newActiveNodeId = props.eventState.newActiveNodeId;
|
||||||
console.log(newActiveNodeId)
|
const newNodeMatrixIndices = props.eventState.newNodeMatrixIndices;
|
||||||
const newNodeRowIdx = props.eventState.newNodeRowIdx;
|
|
||||||
const newNodeColIdx = props.eventState.newNodeColIdx;
|
|
||||||
const newNodeMatIdx = props.eventState.newNodeMatIdx;
|
|
||||||
|
|
||||||
const dispatchedObject = dispatchObject(
|
const dispatchedObject = dispatchObject(
|
||||||
eventAction,
|
eventAction,
|
||||||
newActiveNodeId,
|
newActiveNodeId,
|
||||||
newNodeColIdx,
|
newNodeMatrixIndices
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeMatIdx
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dispatchedObject) {
|
if (dispatchedObject) {
|
||||||
|
|
|
@ -16,6 +16,8 @@ const YellowTextManager = (props: StateManagerProps) => {
|
||||||
|
|
||||||
const setColor = useBigTextStore((state) => state.setColor);
|
const setColor = useBigTextStore((state) => state.setColor);
|
||||||
|
|
||||||
|
const setVisible = useBigTextStore((state) => state.setVisible);
|
||||||
|
|
||||||
const animateYellowTextWithMove = useCallback(
|
const animateYellowTextWithMove = useCallback(
|
||||||
(
|
(
|
||||||
posXOffset: number,
|
posXOffset: number,
|
||||||
|
@ -185,6 +187,30 @@ const YellowTextManager = (props: StateManagerProps) => {
|
||||||
[setColor, setText, setTransformState]
|
[setColor, setText, setTransformState]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const toggleVisibleAfterLevelSelect = useCallback(
|
||||||
|
(activeNodeId: string, activeHudId: string, level: string) => {
|
||||||
|
setVisible(false);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
setTransformState(
|
||||||
|
node_huds[activeHudId as keyof typeof node_huds].big_text[0],
|
||||||
|
"posX"
|
||||||
|
);
|
||||||
|
setTransformState(
|
||||||
|
node_huds[activeHudId as keyof typeof node_huds].big_text[1],
|
||||||
|
"posY"
|
||||||
|
);
|
||||||
|
setColor("yellow");
|
||||||
|
setText((site_a as SiteType)[level][activeNodeId].node_name);
|
||||||
|
}, 400);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
setVisible(true);
|
||||||
|
}, 3900);
|
||||||
|
},
|
||||||
|
[setColor, setText, setTransformState, setVisible]
|
||||||
|
);
|
||||||
|
|
||||||
const dispatchObject = useCallback(
|
const dispatchObject = useCallback(
|
||||||
(
|
(
|
||||||
event: string,
|
event: string,
|
||||||
|
@ -252,8 +278,6 @@ const YellowTextManager = (props: StateManagerProps) => {
|
||||||
value: [newActiveNodeId, newActiveHudId, newLevel],
|
value: [newActiveNodeId, newActiveHudId, newLevel],
|
||||||
};
|
};
|
||||||
case "level_selection_back":
|
case "level_selection_back":
|
||||||
case "select_level_up":
|
|
||||||
case "select_level_down":
|
|
||||||
return {
|
return {
|
||||||
action: levelSelectionBack,
|
action: levelSelectionBack,
|
||||||
value: [newActiveNodeId, newActiveHudId, newLevel],
|
value: [newActiveNodeId, newActiveHudId, newLevel],
|
||||||
|
@ -262,6 +286,12 @@ const YellowTextManager = (props: StateManagerProps) => {
|
||||||
return {
|
return {
|
||||||
action: initializeLevelSelection,
|
action: initializeLevelSelection,
|
||||||
};
|
};
|
||||||
|
case "select_level_up":
|
||||||
|
case "select_level_down":
|
||||||
|
return {
|
||||||
|
action: toggleVisibleAfterLevelSelect,
|
||||||
|
value: [newActiveNodeId, newActiveHudId, newLevel],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
|
@ -272,6 +302,7 @@ const YellowTextManager = (props: StateManagerProps) => {
|
||||||
initializeYellowTextForMainScene,
|
initializeYellowTextForMainScene,
|
||||||
initializeYellowTextForMediaScene,
|
initializeYellowTextForMediaScene,
|
||||||
levelSelectionBack,
|
levelSelectionBack,
|
||||||
|
toggleVisibleAfterLevelSelect,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,6 @@
|
||||||
import node_matrices from "../resources/node_matrices.json";
|
import node_matrices from "../resources/node_matrices.json";
|
||||||
import site_a from "../resources/site_a.json";
|
import site_a from "../resources/site_a.json";
|
||||||
import nodeSelector from "./nodeSelector";
|
import nodeSelector, { getNodeHudId, getNodeId } from "./nodeSelector";
|
||||||
|
|
||||||
const hudAssocs = {
|
|
||||||
"00": "fg_hud_1",
|
|
||||||
"10": "fg_hud_2",
|
|
||||||
"20": "fg_hud_3",
|
|
||||||
"01": "bg_hud_1",
|
|
||||||
"11": "bg_hud_2",
|
|
||||||
"21": "bg_hud_3",
|
|
||||||
"02": "bg_hud_4",
|
|
||||||
"12": "bg_hud_5",
|
|
||||||
"22": "bg_hud_6",
|
|
||||||
"03": "fg_hud_4",
|
|
||||||
"13": "fg_hud_5",
|
|
||||||
"23": "fg_hud_6",
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleMainSceneEvent = (gameContext: any) => {
|
const handleMainSceneEvent = (gameContext: any) => {
|
||||||
let event;
|
let event;
|
||||||
|
@ -27,17 +12,14 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
const activePauseComponent = gameContext.activePauseComponent;
|
const activePauseComponent = gameContext.activePauseComponent;
|
||||||
const unlockedNodes = gameContext.unlockedNodes;
|
const unlockedNodes = gameContext.unlockedNodes;
|
||||||
|
|
||||||
const nodeColIdx = gameContext.nodeMatrixIndices.colIdx;
|
let nodeMatrixIndices = gameContext.nodeMatrixIndices;
|
||||||
const nodeRowIdx = gameContext.nodeMatrixIndices.rowIdx;
|
|
||||||
const nodeMatIdx = gameContext.nodeMatrixIndices.matrixIdx;
|
|
||||||
const level = parseInt(gameContext.activeLevel);
|
const level = parseInt(gameContext.activeLevel);
|
||||||
const siteRotY = gameContext.siteTransformState.rotY;
|
const siteRotY = gameContext.siteTransformState.rotY;
|
||||||
const sitePosY = gameContext.siteTransformState.posY;
|
const sitePosY = gameContext.siteTransformState.posY;
|
||||||
|
|
||||||
let newActiveNodeId;
|
let newActiveNodeId;
|
||||||
let newNodeMatIdx = gameContext.nodeMatrixIndices.matrixIdx;
|
let newActiveHudId;
|
||||||
let newNodeColIdx = gameContext.nodeMatrixIndices.colIdx;
|
|
||||||
let newNodeRowIdx = gameContext.nodeMatrixIndices.rowIdx;
|
|
||||||
let newLevel = parseInt(gameContext.activeLevel);
|
let newLevel = parseInt(gameContext.activeLevel);
|
||||||
let newSiteRotY = gameContext.siteTransformState.rotY;
|
let newSiteRotY = gameContext.siteTransformState.rotY;
|
||||||
let newSitePosY = gameContext.siteTransformState.posY;
|
let newSitePosY = gameContext.siteTransformState.posY;
|
||||||
|
@ -52,9 +34,7 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
case "UP":
|
case "UP":
|
||||||
selectedNodeData = nodeSelector({
|
selectedNodeData = nodeSelector({
|
||||||
action: `site_${keyPress.toLowerCase()}`,
|
action: `site_${keyPress.toLowerCase()}`,
|
||||||
nodeMatIdx: nodeMatIdx,
|
nodeMatrixIndices: nodeMatrixIndices,
|
||||||
nodeColIdx: nodeColIdx,
|
|
||||||
nodeRowIdx: nodeRowIdx,
|
|
||||||
level: level,
|
level: level,
|
||||||
siteRotY: siteRotY,
|
siteRotY: siteRotY,
|
||||||
sitePosY: sitePosY,
|
sitePosY: sitePosY,
|
||||||
|
@ -64,12 +44,11 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
if (selectedNodeData) {
|
if (selectedNodeData) {
|
||||||
event = selectedNodeData.event;
|
event = selectedNodeData.event;
|
||||||
newActiveNodeId = selectedNodeData.newActiveNodeId;
|
newActiveNodeId = selectedNodeData.newActiveNodeId;
|
||||||
newNodeMatIdx = selectedNodeData.newNodeMatIdx;
|
nodeMatrixIndices = selectedNodeData.newNodeMatrixIndices;
|
||||||
newNodeColIdx = selectedNodeData.newNodeColIdx;
|
|
||||||
newNodeRowIdx = selectedNodeData.newNodeRowIdx;
|
|
||||||
newSiteRotY = selectedNodeData.newSiteRotY;
|
newSiteRotY = selectedNodeData.newSiteRotY;
|
||||||
newSitePosY = selectedNodeData.newSitePosY;
|
newSitePosY = selectedNodeData.newSitePosY;
|
||||||
newLevel = selectedNodeData.newLevel;
|
newLevel = selectedNodeData.newLevel;
|
||||||
|
newActiveHudId = selectedNodeData.newActiveHudId;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -77,11 +56,7 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
// in this case we have to check the type of the blue orb
|
// 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
|
// and dispatch an action depending on that, so we have to precalculate the
|
||||||
// new active blue orb here.
|
// new active blue orb here.
|
||||||
newActiveNodeId =
|
newActiveNodeId = getNodeId(gameContext.activeLevel, nodeMatrixIndices);
|
||||||
gameContext.activeLevel +
|
|
||||||
node_matrices[newNodeMatIdx.toString() as keyof typeof node_matrices][
|
|
||||||
newNodeRowIdx as number
|
|
||||||
][newNodeColIdx as number];
|
|
||||||
|
|
||||||
const nodeType = (site_a as any)[newLevel][newActiveNodeId].type;
|
const nodeType = (site_a as any)[newLevel][newActiveNodeId].type;
|
||||||
|
|
||||||
|
@ -109,14 +84,9 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
return { event: "toggle_pause" };
|
return { event: "toggle_pause" };
|
||||||
}
|
}
|
||||||
|
|
||||||
const newActiveHudId =
|
|
||||||
hudAssocs[`${newNodeRowIdx}${newNodeColIdx}` as keyof typeof hudAssocs];
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
event: event,
|
event: event,
|
||||||
newNodeColIdx: newNodeColIdx,
|
newNodeMatrixIndices: nodeMatrixIndices,
|
||||||
newNodeRowIdx: newNodeRowIdx,
|
|
||||||
newNodeMatIdx: newNodeMatIdx,
|
|
||||||
newSitePosY: newSitePosY,
|
newSitePosY: newSitePosY,
|
||||||
newSiteRotY: newSiteRotY,
|
newSiteRotY: newSiteRotY,
|
||||||
newLevel: newLevel.toString().padStart(2, "0"),
|
newLevel: newLevel.toString().padStart(2, "0"),
|
||||||
|
@ -143,23 +113,14 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
case "X":
|
case "X":
|
||||||
return {
|
return {
|
||||||
event: "level_selection_back",
|
event: "level_selection_back",
|
||||||
newActiveNodeId:
|
newActiveNodeId: getNodeId(gameContext.level, nodeMatrixIndices),
|
||||||
newLevel +
|
newActiveHudId: getNodeHudId(nodeMatrixIndices),
|
||||||
node_matrices[
|
|
||||||
newNodeMatIdx.toString() as keyof typeof node_matrices
|
|
||||||
][newNodeRowIdx as number][newNodeColIdx as number],
|
|
||||||
newActiveHudId:
|
|
||||||
hudAssocs[
|
|
||||||
`${newNodeRowIdx}${newNodeColIdx}` as keyof typeof hudAssocs
|
|
||||||
],
|
|
||||||
newLevel: newLevel,
|
newLevel: newLevel,
|
||||||
};
|
};
|
||||||
case "CIRCLE":
|
case "CIRCLE":
|
||||||
const selectedNodeData = nodeSelector({
|
const selectedNodeData = nodeSelector({
|
||||||
action: "select_level",
|
action: "select_level",
|
||||||
nodeMatIdx: nodeMatIdx,
|
nodeMatrixIndices: nodeMatrixIndices,
|
||||||
nodeColIdx: nodeColIdx,
|
|
||||||
nodeRowIdx: nodeRowIdx,
|
|
||||||
level: selectedLevel,
|
level: selectedLevel,
|
||||||
siteRotY: siteRotY,
|
siteRotY: siteRotY,
|
||||||
sitePosY: sitePosY,
|
sitePosY: sitePosY,
|
||||||
|
@ -167,55 +128,18 @@ const handleMainSceneEvent = (gameContext: any) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (level === selectedLevel) break;
|
if (level === selectedLevel) break;
|
||||||
else if (selectedLevel < level && selectedNodeData) {
|
if (selectedNodeData) {
|
||||||
|
const event =
|
||||||
|
selectedLevel < level ? "select_level_down" : "select_level_up";
|
||||||
return {
|
return {
|
||||||
event: "select_level_down",
|
event: event,
|
||||||
newLevel: selectedLevel.toString().padStart(0, "2"),
|
newLevel: selectedLevel.toString().padStart(2, "0"),
|
||||||
newSitePosY: -selectedNodeData.newSitePosY,
|
|
||||||
newActiveNodeId: selectedNodeData.newActiveNodeId,
|
newActiveNodeId: selectedNodeData.newActiveNodeId,
|
||||||
newNodeMatIdx: selectedNodeData.newNodeMatIdx,
|
newActiveHudId: selectedNodeData.newActiveHudId,
|
||||||
newNodeColIdx: selectedNodeData.newNodeColIdx,
|
newNodeMatrixIndices: selectedNodeData.newNodeMatrixIndices,
|
||||||
newNodeRowIdx: selectedNodeData.newNodeRowIdx,
|
|
||||||
newActiveHudId:
|
|
||||||
hudAssocs[
|
|
||||||
`${selectedNodeData.newNodeRowIdx}${selectedNodeData.newNodeColIdx}` as keyof typeof hudAssocs
|
|
||||||
],
|
|
||||||
};
|
|
||||||
} else if (selectedLevel > level && selectedNodeData) {
|
|
||||||
return {
|
|
||||||
event: "select_level_up",
|
|
||||||
newLevel: selectedLevel.toString().padStart(0, "2"),
|
|
||||||
newSitePosY: -selectedNodeData.newSitePosY,
|
newSitePosY: -selectedNodeData.newSitePosY,
|
||||||
newActiveNodeId: selectedNodeData.newActiveNodeId,
|
|
||||||
newNodeMatIdx: selectedNodeData.newNodeMatIdx,
|
|
||||||
newNodeColIdx: selectedNodeData.newNodeColIdx,
|
|
||||||
newNodeRowIdx: selectedNodeData.newNodeRowIdx,
|
|
||||||
newActiveHudId:
|
|
||||||
hudAssocs[
|
|
||||||
`${selectedNodeData.newNodeRowIdx}${selectedNodeData.newNodeColIdx}` as keyof typeof hudAssocs
|
|
||||||
],
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (oldLevel === newLevel) break;
|
|
||||||
// else if (newLevel < oldLevel) {
|
|
||||||
// return {
|
|
||||||
// event: "select_level_down",
|
|
||||||
// newLevel: newLevel,
|
|
||||||
// newSitePosY:
|
|
||||||
// level_y_values[newLevel as keyof typeof level_y_values],
|
|
||||||
// };
|
|
||||||
// } else {
|
|
||||||
// return {
|
|
||||||
// event: "select_level_up",
|
|
||||||
// newLevel: newLevel,
|
|
||||||
// newSitePosY: -level_y_values[
|
|
||||||
// newLevel as keyof typeof level_y_values
|
|
||||||
// ],
|
|
||||||
// newActiveNodeId: "2022",
|
|
||||||
// newActiveHudId: "fg_hud_1",
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
} else if (subscene === "pause") {
|
} else if (subscene === "pause") {
|
||||||
switch (keyPress) {
|
switch (keyPress) {
|
||||||
|
|
|
@ -6,25 +6,52 @@ import level_y_values from "../resources/level_y_values.json";
|
||||||
|
|
||||||
type NodeSelectorContext = {
|
type NodeSelectorContext = {
|
||||||
action: string;
|
action: string;
|
||||||
nodeMatIdx: number;
|
nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number };
|
||||||
nodeColIdx: number;
|
|
||||||
nodeRowIdx: number;
|
|
||||||
level: number;
|
level: number;
|
||||||
siteRotY: number;
|
siteRotY: number;
|
||||||
sitePosY: number;
|
sitePosY: number;
|
||||||
unlockedNodes: typeof unlocked_nodes;
|
unlockedNodes: typeof unlocked_nodes;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getNodeId = (
|
const hudAssocs = {
|
||||||
|
"00": "fg_hud_1",
|
||||||
|
"10": "fg_hud_2",
|
||||||
|
"20": "fg_hud_3",
|
||||||
|
"01": "bg_hud_1",
|
||||||
|
"11": "bg_hud_2",
|
||||||
|
"21": "bg_hud_3",
|
||||||
|
"02": "bg_hud_4",
|
||||||
|
"12": "bg_hud_5",
|
||||||
|
"22": "bg_hud_6",
|
||||||
|
"03": "fg_hud_4",
|
||||||
|
"13": "fg_hud_5",
|
||||||
|
"23": "fg_hud_6",
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getNodeId = (
|
||||||
level: number,
|
level: number,
|
||||||
nodeMatIdx: number,
|
nodeMatrixIndices: {
|
||||||
nodeRowIdx: number,
|
matrixIdx: number;
|
||||||
nodeColIdx: number
|
rowIdx: number;
|
||||||
) =>
|
colIdx: number;
|
||||||
|
}
|
||||||
|
) => {
|
||||||
|
return (
|
||||||
level.toString().padStart(2, "0") +
|
level.toString().padStart(2, "0") +
|
||||||
node_matrices[nodeMatIdx.toString() as keyof typeof node_matrices][
|
node_matrices[
|
||||||
nodeRowIdx
|
nodeMatrixIndices.matrixIdx.toString() as keyof typeof node_matrices
|
||||||
][nodeColIdx];
|
][nodeMatrixIndices.rowIdx][nodeMatrixIndices.colIdx]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getNodeHudId = (nodeMatrixIndices: {
|
||||||
|
matrixIdx: number;
|
||||||
|
rowIdx: number;
|
||||||
|
colIdx: number;
|
||||||
|
}) =>
|
||||||
|
hudAssocs[
|
||||||
|
`${nodeMatrixIndices.rowIdx}${nodeMatrixIndices.colIdx}` as keyof typeof hudAssocs
|
||||||
|
];
|
||||||
|
|
||||||
const isNodeVisible = (
|
const isNodeVisible = (
|
||||||
nodeId: string,
|
nodeId: string,
|
||||||
|
@ -63,51 +90,39 @@ const tryRow = (row: number, triedRows: number[]) => {
|
||||||
const findNodeAfterLevelSelection = (
|
const findNodeAfterLevelSelection = (
|
||||||
unlockedNodes: typeof unlocked_nodes,
|
unlockedNodes: typeof unlocked_nodes,
|
||||||
targetLevel: number,
|
targetLevel: number,
|
||||||
nodeMatIdx: number,
|
nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number }
|
||||||
nodeRowIdx: number,
|
|
||||||
nodeColIdx: number
|
|
||||||
) => {
|
) => {
|
||||||
let newNodeRowIdx = nodeRowIdx;
|
let newMatIndices = nodeMatrixIndices;
|
||||||
let newNodeMatIdx = nodeMatIdx;
|
|
||||||
let newNodeColIdx = nodeColIdx;
|
|
||||||
|
|
||||||
let triedCols: number[] = [];
|
let triedCols: number[] = [];
|
||||||
|
|
||||||
let newNodeId = getNodeId(
|
let newNodeId = getNodeId(targetLevel, newMatIndices);
|
||||||
targetLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
|
|
||||||
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
||||||
if (triedCols.length < 4) {
|
if (triedCols.length < 4) {
|
||||||
triedCols.push(newNodeColIdx);
|
triedCols.push(newMatIndices.colIdx);
|
||||||
const colToTry = tryCol(newNodeColIdx, triedCols);
|
const colToTry = tryCol(newMatIndices.colIdx, triedCols);
|
||||||
if (colToTry !== undefined) {
|
if (colToTry !== undefined) {
|
||||||
newNodeColIdx = colToTry;
|
newMatIndices.colIdx = colToTry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
newNodeRowIdx++;
|
newMatIndices.rowIdx++;
|
||||||
triedCols = [];
|
triedCols = [];
|
||||||
newNodeColIdx = 0;
|
newMatIndices.colIdx = 0;
|
||||||
}
|
}
|
||||||
newNodeId = getNodeId(
|
newNodeId = getNodeId(targetLevel, newMatIndices);
|
||||||
targetLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const newNodeHudId = getNodeHudId(newMatIndices);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
newLevel: targetLevel,
|
newLevel: targetLevel,
|
||||||
newNodeId: newNodeId,
|
newNodeId: newNodeId,
|
||||||
newNodeRowIdx: newNodeRowIdx,
|
newNodeHudId: newNodeHudId,
|
||||||
newNodeColIdx: newNodeColIdx,
|
newNodeMatrixIndices: newMatIndices,
|
||||||
newSitePosY:
|
newSitePosY:
|
||||||
level_y_values[
|
level_y_values[
|
||||||
targetLevel.toString().padStart(0, "2") as keyof typeof level_y_values
|
targetLevel.toString().padStart(2, "0") as keyof typeof level_y_values
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -116,104 +131,81 @@ const findNodeVertical = (
|
||||||
direction: string,
|
direction: string,
|
||||||
unlockedNodes: typeof unlocked_nodes,
|
unlockedNodes: typeof unlocked_nodes,
|
||||||
level: number,
|
level: number,
|
||||||
nodeMatIdx: number,
|
nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number }
|
||||||
nodeRowIdx: number,
|
|
||||||
nodeColIdx: number
|
|
||||||
) => {
|
) => {
|
||||||
let newNodeId;
|
let newNodeId;
|
||||||
let newLevel = level;
|
let newLevel = level;
|
||||||
let newNodeRowIdx = nodeRowIdx;
|
let newMatIndices = nodeMatrixIndices;
|
||||||
let newNodeMatIdx = nodeMatIdx;
|
|
||||||
let newNodeColIdx = nodeColIdx;
|
|
||||||
|
|
||||||
if (direction === "down") {
|
if (direction === "down") {
|
||||||
newNodeRowIdx++;
|
newMatIndices.rowIdx++;
|
||||||
|
|
||||||
let triedCols: number[] = [];
|
let triedCols: number[] = [];
|
||||||
|
|
||||||
if (newNodeRowIdx > 2) {
|
if (newMatIndices.rowIdx > 2) {
|
||||||
newNodeRowIdx = 0;
|
newMatIndices.rowIdx = 0;
|
||||||
newLevel = level - 1;
|
newLevel = level - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
newNodeId = getNodeId(
|
newNodeId = getNodeId(newLevel, newMatIndices);
|
||||||
newLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
|
|
||||||
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
||||||
if (triedCols.length < 4) {
|
if (triedCols.length < 4) {
|
||||||
triedCols.push(newNodeColIdx);
|
triedCols.push(newMatIndices.colIdx);
|
||||||
const colToTry = tryCol(newNodeColIdx, triedCols);
|
const colToTry = tryCol(newMatIndices.colIdx, triedCols);
|
||||||
if (colToTry !== undefined) {
|
if (colToTry !== undefined) {
|
||||||
newNodeColIdx = colToTry;
|
newMatIndices.colIdx = colToTry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (newNodeRowIdx === 2) {
|
if (newMatIndices.rowIdx === 2) {
|
||||||
newNodeRowIdx = 0;
|
newMatIndices.rowIdx = 0;
|
||||||
newLevel = level - 1;
|
newLevel = level - 1;
|
||||||
} else {
|
} else {
|
||||||
newNodeRowIdx++;
|
newMatIndices.rowIdx++;
|
||||||
|
newMatIndices.colIdx = 0;
|
||||||
triedCols = [];
|
triedCols = [];
|
||||||
newNodeColIdx = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newNodeId = getNodeId(
|
newNodeId = getNodeId(newLevel, newMatIndices);
|
||||||
newLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else if (direction === "up") {
|
} else if (direction === "up") {
|
||||||
newNodeRowIdx--;
|
newMatIndices.rowIdx--;
|
||||||
|
|
||||||
let triedCols: number[] = [];
|
let triedCols: number[] = [];
|
||||||
|
|
||||||
if (newNodeRowIdx < 0) {
|
if (newMatIndices.rowIdx < 0) {
|
||||||
newNodeRowIdx = 2;
|
newMatIndices.rowIdx = 2;
|
||||||
newLevel = level + 1;
|
newLevel = level + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
newNodeId = getNodeId(
|
newNodeId = getNodeId(newLevel, newMatIndices);
|
||||||
newLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
|
|
||||||
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
||||||
if (triedCols.length < 4) {
|
if (triedCols.length < 4) {
|
||||||
triedCols.push(newNodeColIdx);
|
triedCols.push(newMatIndices.colIdx);
|
||||||
const colToTry = tryCol(newNodeColIdx, triedCols);
|
const colToTry = tryCol(newMatIndices.colIdx, triedCols);
|
||||||
if (colToTry !== undefined) {
|
if (colToTry !== undefined) {
|
||||||
newNodeColIdx = colToTry;
|
newMatIndices.colIdx = colToTry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (newNodeRowIdx === 0) {
|
if (newMatIndices.rowIdx === 0) {
|
||||||
newNodeRowIdx = 2;
|
newMatIndices.rowIdx = 2;
|
||||||
newLevel = level + 1;
|
newLevel = level + 1;
|
||||||
} else {
|
} else {
|
||||||
newNodeRowIdx--;
|
newMatIndices.rowIdx--;
|
||||||
|
newMatIndices.colIdx = 0;
|
||||||
triedCols = [];
|
triedCols = [];
|
||||||
newNodeColIdx = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newNodeId = getNodeId(
|
newNodeId = getNodeId(newLevel, newMatIndices);
|
||||||
newLevel,
|
|
||||||
newNodeMatIdx,
|
|
||||||
newNodeRowIdx,
|
|
||||||
newNodeColIdx
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
newNodeId: newNodeId,
|
newNodeId: newNodeId,
|
||||||
|
newNodeHudId: getNodeHudId(newMatIndices),
|
||||||
newLevel: newLevel,
|
newLevel: newLevel,
|
||||||
newNodeRowIdx: newNodeRowIdx,
|
newNodeMatrixIndices: newMatIndices,
|
||||||
newNodeColIdx: newNodeColIdx,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -221,89 +213,92 @@ const findNodeHorizontal = (
|
||||||
direction: string,
|
direction: string,
|
||||||
unlockedNodes: typeof unlocked_nodes,
|
unlockedNodes: typeof unlocked_nodes,
|
||||||
level: number,
|
level: number,
|
||||||
nodeMatIdx: number,
|
nodeMatrixIndices: { matrixIdx: number; rowIdx: number; colIdx: number }
|
||||||
nodeRowIdx: number,
|
|
||||||
nodeColIdx: number
|
|
||||||
) => {
|
) => {
|
||||||
let newNodeId;
|
let newNodeId;
|
||||||
let newNodeRowIdx = nodeRowIdx;
|
let newMatIndices = nodeMatrixIndices;
|
||||||
let newNodeMatIdx = nodeMatIdx;
|
|
||||||
let newNodeColIdx = nodeColIdx;
|
|
||||||
if (direction === "left") {
|
if (direction === "left") {
|
||||||
let didMove = false;
|
let didMove = false;
|
||||||
|
|
||||||
newNodeColIdx--;
|
newMatIndices.colIdx--;
|
||||||
|
|
||||||
let triedRows: number[] = [];
|
let triedRows: number[] = [];
|
||||||
|
|
||||||
if (newNodeColIdx < 0) {
|
if (newMatIndices.colIdx < 0) {
|
||||||
newNodeColIdx = 0;
|
didMove = true;
|
||||||
newNodeMatIdx = nodeMatIdx + 1 > 8 ? 1 : nodeMatIdx + 1;
|
newMatIndices.colIdx = 0;
|
||||||
|
newMatIndices.matrixIdx =
|
||||||
|
newMatIndices.matrixIdx + 1 > 8 ? 1 : newMatIndices.matrixIdx + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
newNodeId = getNodeId(level, newNodeMatIdx, newNodeRowIdx, newNodeColIdx);
|
newNodeId = getNodeId(level, newMatIndices);
|
||||||
|
|
||||||
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
||||||
if (triedRows.length < 3) {
|
if (triedRows.length < 3) {
|
||||||
triedRows.push(newNodeRowIdx);
|
triedRows.push(newMatIndices.rowIdx);
|
||||||
const rowToTry = tryRow(newNodeRowIdx, triedRows);
|
const rowToTry = tryRow(newMatIndices.rowIdx, triedRows);
|
||||||
if (rowToTry !== undefined) {
|
if (rowToTry !== undefined) {
|
||||||
newNodeRowIdx = rowToTry;
|
newMatIndices.rowIdx = rowToTry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (newNodeColIdx < 0) {
|
if (newMatIndices.colIdx < 0) {
|
||||||
didMove = true;
|
didMove = true;
|
||||||
newNodeColIdx = 0;
|
newMatIndices.colIdx = 0;
|
||||||
newNodeMatIdx = nodeMatIdx + 1 > 8 ? 1 : nodeMatIdx + 1;
|
newMatIndices.matrixIdx =
|
||||||
|
newMatIndices.matrixIdx + 1 > 8 ? 1 : newMatIndices.matrixIdx + 1;
|
||||||
} else {
|
} else {
|
||||||
didMove ? newNodeColIdx++ : newNodeColIdx--;
|
didMove ? newMatIndices.colIdx++ : newMatIndices.colIdx--;
|
||||||
triedRows = [];
|
triedRows = [];
|
||||||
newNodeRowIdx = 0;
|
newMatIndices.rowIdx = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newNodeId = getNodeId(level, newNodeMatIdx, newNodeRowIdx, newNodeColIdx);
|
newNodeId = getNodeId(level, newMatIndices);
|
||||||
}
|
}
|
||||||
} else if (direction === "right") {
|
} else if (direction === "right") {
|
||||||
let didMove = false;
|
let didMove = false;
|
||||||
|
|
||||||
newNodeColIdx++;
|
newMatIndices.colIdx++;
|
||||||
|
|
||||||
let triedRows: number[] = [];
|
let triedRows: number[] = [];
|
||||||
|
|
||||||
if (newNodeColIdx > 3) {
|
if (newMatIndices.colIdx > 3) {
|
||||||
newNodeColIdx = 3;
|
newMatIndices.colIdx = 3;
|
||||||
newNodeMatIdx = nodeMatIdx - 1 < 1 ? 8 : nodeMatIdx - 1;
|
newMatIndices.matrixIdx =
|
||||||
|
newMatIndices.matrixIdx - 1 < 1 ? 8 : newMatIndices.matrixIdx - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
newNodeId = getNodeId(level, newNodeMatIdx, newNodeRowIdx, newNodeColIdx);
|
newNodeId = getNodeId(level, newMatIndices);
|
||||||
|
|
||||||
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
while (!isNodeVisible(newNodeId, unlockedNodes)) {
|
||||||
if (triedRows.length < 3) {
|
if (triedRows.length < 3) {
|
||||||
triedRows.push(newNodeRowIdx);
|
triedRows.push(newMatIndices.rowIdx);
|
||||||
const rowToTry = tryRow(newNodeRowIdx, triedRows);
|
const rowToTry = tryRow(newMatIndices.rowIdx, triedRows);
|
||||||
if (rowToTry !== undefined) {
|
if (rowToTry !== undefined) {
|
||||||
newNodeRowIdx = rowToTry;
|
newMatIndices.rowIdx = rowToTry;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (newNodeColIdx > 3) {
|
if (newMatIndices.colIdx > 3) {
|
||||||
didMove = true;
|
didMove = true;
|
||||||
newNodeColIdx = 3;
|
newMatIndices.colIdx = 3;
|
||||||
newNodeMatIdx = nodeMatIdx - 1 < 1 ? 8 : nodeMatIdx - 1;
|
newMatIndices.matrixIdx =
|
||||||
|
newMatIndices.matrixIdx - 1 < 1 ? 8 : newMatIndices.matrixIdx - 1;
|
||||||
} else {
|
} else {
|
||||||
didMove ? newNodeColIdx-- : newNodeColIdx++;
|
didMove ? newMatIndices.colIdx-- : newMatIndices.colIdx++;
|
||||||
triedRows = [];
|
triedRows = [];
|
||||||
newNodeRowIdx = 0;
|
newMatIndices.rowIdx = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newNodeId = getNodeId(level, newNodeMatIdx, newNodeRowIdx, newNodeColIdx);
|
newNodeId = getNodeId(level, newMatIndices);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const newNodeHudId = getNodeHudId(newMatIndices);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
newNodeId: newNodeId,
|
newNodeId: newNodeId,
|
||||||
newNodeMatIdx: newNodeMatIdx,
|
newNodeHudId: newNodeHudId,
|
||||||
newNodeRowIdx: newNodeRowIdx,
|
newNodeMatrixIndices: newMatIndices,
|
||||||
newNodeColIdx: newNodeColIdx,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -319,21 +314,21 @@ const nodeSelector = (context: NodeSelectorContext) => {
|
||||||
move,
|
move,
|
||||||
context.unlockedNodes,
|
context.unlockedNodes,
|
||||||
context.level,
|
context.level,
|
||||||
context.nodeMatIdx,
|
Object.assign({}, context.nodeMatrixIndices)
|
||||||
context.nodeRowIdx,
|
|
||||||
context.nodeColIdx
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (newNodeData) {
|
if (newNodeData) {
|
||||||
const didMove = context.nodeMatIdx !== newNodeData.newNodeMatIdx;
|
const didMove =
|
||||||
|
context.nodeMatrixIndices.matrixIdx !==
|
||||||
|
newNodeData.newNodeMatrixIndices.matrixIdx;
|
||||||
|
|
||||||
const siteRotYModifier = move === "left" ? Math.PI / 4 : -Math.PI / 4;
|
const siteRotYModifier = move === "left" ? Math.PI / 4 : -Math.PI / 4;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
event: didMove ? context.action : "change_node",
|
event: didMove ? context.action : "change_node",
|
||||||
newActiveNodeId: newNodeData.newNodeId,
|
newActiveNodeId: newNodeData.newNodeId,
|
||||||
newNodeMatIdx: newNodeData.newNodeMatIdx,
|
newActiveHudId: newNodeData.newNodeHudId,
|
||||||
newNodeRowIdx: newNodeData.newNodeRowIdx,
|
newNodeMatrixIndices: newNodeData.newNodeMatrixIndices,
|
||||||
newNodeColIdx: newNodeData.newNodeColIdx,
|
|
||||||
newSiteRotY: didMove
|
newSiteRotY: didMove
|
||||||
? context.siteRotY + siteRotYModifier
|
? context.siteRotY + siteRotYModifier
|
||||||
: context.siteRotY,
|
: context.siteRotY,
|
||||||
|
@ -350,9 +345,7 @@ const nodeSelector = (context: NodeSelectorContext) => {
|
||||||
move,
|
move,
|
||||||
context.unlockedNodes,
|
context.unlockedNodes,
|
||||||
context.level,
|
context.level,
|
||||||
context.nodeMatIdx,
|
context.nodeMatrixIndices
|
||||||
context.nodeRowIdx,
|
|
||||||
context.nodeColIdx
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (newNodeData) {
|
if (newNodeData) {
|
||||||
|
@ -361,9 +354,8 @@ const nodeSelector = (context: NodeSelectorContext) => {
|
||||||
return {
|
return {
|
||||||
event: didMove ? context.action : "change_node",
|
event: didMove ? context.action : "change_node",
|
||||||
newActiveNodeId: newNodeData.newNodeId,
|
newActiveNodeId: newNodeData.newNodeId,
|
||||||
newNodeMatIdx: context.nodeMatIdx,
|
newNodeMatrixIndices: newNodeData.newNodeMatrixIndices,
|
||||||
newNodeRowIdx: newNodeData.newNodeRowIdx,
|
newActiveHudId: newNodeData.newNodeHudId,
|
||||||
newNodeColIdx: newNodeData.newNodeColIdx,
|
|
||||||
newSiteRotY: context.siteRotY,
|
newSiteRotY: context.siteRotY,
|
||||||
newSitePosY: didMove
|
newSitePosY: didMove
|
||||||
? context.sitePosY + sitePosYModifier
|
? context.sitePosY + sitePosYModifier
|
||||||
|
@ -376,19 +368,17 @@ const nodeSelector = (context: NodeSelectorContext) => {
|
||||||
newNodeData = findNodeAfterLevelSelection(
|
newNodeData = findNodeAfterLevelSelection(
|
||||||
context.unlockedNodes,
|
context.unlockedNodes,
|
||||||
context.level,
|
context.level,
|
||||||
context.nodeMatIdx,
|
context.nodeMatrixIndices
|
||||||
context.nodeRowIdx,
|
|
||||||
context.nodeColIdx
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (newNodeData) {
|
if (newNodeData) {
|
||||||
return {
|
return {
|
||||||
newActiveNodeId: newNodeData.newNodeId,
|
newActiveNodeId: newNodeData.newNodeId,
|
||||||
newNodeMatIdx: context.nodeMatIdx,
|
newNodeMatrixIndices: newNodeData.newNodeMatrixIndices,
|
||||||
newNodeRowIdx: newNodeData.newNodeRowIdx,
|
newActiveHudId: newNodeData.newNodeHudId,
|
||||||
newNodeColIdx: newNodeData.newNodeColIdx,
|
newSiteRotY: context.siteRotY,
|
||||||
newSitePosY: newNodeData.newSitePosY,
|
|
||||||
newLevel: newNodeData.newLevel,
|
newLevel: newNodeData.newLevel,
|
||||||
|
newSitePosY: newNodeData.newSitePosY,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,7 @@ type MediaWordState = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export type BigTextState = {
|
export type BigTextState = {
|
||||||
|
visible: boolean;
|
||||||
disableTrail: boolean;
|
disableTrail: boolean;
|
||||||
text: string;
|
text: string;
|
||||||
color: string;
|
color: string;
|
||||||
|
@ -162,6 +163,7 @@ type MainSceneState = {
|
||||||
export const useBigTextStore = create(
|
export const useBigTextStore = create(
|
||||||
combine(
|
combine(
|
||||||
{
|
{
|
||||||
|
visible: true,
|
||||||
color: "yellow",
|
color: "yellow",
|
||||||
disableTrail: false,
|
disableTrail: false,
|
||||||
text: "Play",
|
text: "Play",
|
||||||
|
@ -188,6 +190,7 @@ export const useBigTextStore = create(
|
||||||
},
|
},
|
||||||
})),
|
})),
|
||||||
setColor: (to: string) => set(() => ({ color: to })),
|
setColor: (to: string) => set(() => ({ color: to })),
|
||||||
|
setVisible: (to: boolean) => set(() => ({ visible: to })),
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue