lainTSX/src/core/scene-keypress-handlers/handleBootSceneKeyPress.ts

94 lines
2.6 KiB
TypeScript
Raw Normal View History

const handleBootSceneKeyPress = (bootSceneContext: any) => {
const {
keyPress,
subscene,
activeMainMenuComponent,
activePromptComponent,
promptVisible,
authorizeUserLetterIdx,
} = bootSceneContext;
if (promptVisible) {
switch (keyPress) {
case "LEFT":
return { event: "prompt_left" };
case "RIGHT":
return { event: "prompt_right" };
case "CIRCLE":
switch (activePromptComponent) {
case "no":
return { event: "load_data_no" };
case "yes":
return {
event: "load_data_yes",
};
}
}
} else {
switch (subscene) {
case "main_menu":
switch (keyPress) {
case "UP":
case "DOWN":
return { event: `main_menu_${keyPress.toLowerCase()}` };
case "CIRCLE":
return { event: `main_menu_${activeMainMenuComponent}_select` };
}
break;
case "authorize_user":
switch (keyPress) {
case "X":
return { event: "authorize_user_back" };
case "LEFT":
// if utmost left, break
if ([0, 13, 26, 39, 52].includes(authorizeUserLetterIdx)) break;
else {
return {
event: "authorize_user_left",
authorizeUserLetterIdx: authorizeUserLetterIdx - 1,
};
}
case "RIGHT":
// if utmost right, break
if ([12, 25, 38, 51, 64].includes(authorizeUserLetterIdx)) break;
else {
return {
event: "authorize_user_right",
authorizeUserLetterIdx: authorizeUserLetterIdx + 1,
};
}
case "DOWN":
// if utmost down, break
if (
Array.from(new Array(13), (x, i) => i + 52).includes(
authorizeUserLetterIdx
)
)
break;
else {
return {
event: "authorize_user_down",
authorizeUserLetterIdx: authorizeUserLetterIdx + 13,
};
}
case "UP":
// if utmost up, break
if (
Array.from(new Array(13), (x, i) => i).includes(
authorizeUserLetterIdx
)
)
break;
else {
return {
event: "authorize_user_up",
authorizeUserLetterIdx: authorizeUserLetterIdx - 13,
};
}
}
}
}
};
export default handleBootSceneKeyPress;