2021-02-17 16:21:27 +00:00
|
|
|
import { SsknSceneContext } from "../../store";
|
2021-02-20 14:35:23 +00:00
|
|
|
import { changeSsknComponent, exitSskn, upgradeSskn } from "../eventTemplates";
|
|
|
|
import { GameEvent } from "../handleEvent";
|
2021-02-17 16:21:27 +00:00
|
|
|
|
2021-02-20 14:35:23 +00:00
|
|
|
const handleSsknSceneKeyPress = (
|
|
|
|
ssknSceneContext: SsknSceneContext
|
|
|
|
): GameEvent | undefined => {
|
|
|
|
const {
|
|
|
|
keyPress,
|
|
|
|
activeSsknComponent,
|
|
|
|
activeNode,
|
|
|
|
gameProgress,
|
|
|
|
} = ssknSceneContext;
|
2021-02-17 16:21:27 +00:00
|
|
|
|
|
|
|
switch (keyPress) {
|
|
|
|
case "UP":
|
|
|
|
case "DOWN":
|
2021-02-20 14:35:23 +00:00
|
|
|
const direction = keyPress.toLowerCase();
|
|
|
|
const newComponent = direction === "up" ? "ok" : "cancel";
|
|
|
|
return changeSsknComponent({ activeSsknComponent: newComponent });
|
2021-02-17 16:21:27 +00:00
|
|
|
case "CIRCLE":
|
2021-02-20 14:35:23 +00:00
|
|
|
switch (activeSsknComponent) {
|
|
|
|
case "ok":
|
|
|
|
const newGameProgress = {
|
|
|
|
...gameProgress,
|
|
|
|
[activeNode.node_name]: {
|
|
|
|
is_viewed: 1,
|
|
|
|
is_visible: 0,
|
|
|
|
},
|
2021-02-21 17:34:26 +00:00
|
|
|
sskn_level: gameProgress.sskn_level + 1,
|
2021-02-20 14:35:23 +00:00
|
|
|
};
|
|
|
|
|
2021-02-21 17:34:26 +00:00
|
|
|
return upgradeSskn({ gameProgress: newGameProgress });
|
2021-02-20 14:35:23 +00:00
|
|
|
case "cancel":
|
|
|
|
return exitSskn;
|
2021-02-17 16:21:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
export default handleSsknSceneKeyPress;
|