Mario: teleport to hardcoded level

This commit is contained in:
2022-11-13 19:52:39 +01:00
parent 41ba43ed93
commit c5283000c7
14 changed files with 171 additions and 54 deletions
+17 -42
View File
@@ -291,7 +291,9 @@ void toolMoveUpdateButtons(Button *left, Button *right, int &cur_page,
}
void updateToolSelection(int prev_index, ToolType::Value type) {
unsetToolColor();
if(global_vars.tool.type == type) {
unsetToolColor();
}
int cur_page = 0;
size_t multiplier = 0;
std::vector<std::shared_ptr<MarioBlock>> *tool_vec = nullptr;
@@ -340,60 +342,33 @@ void updateToolSelection(int prev_index, ToolType::Value type) {
i++) {
tool_vec->at(i)->setHidden(false);
}
if (global_vars.tool.index / multiplier == static_cast<size_t>(cur_page)) {
if (global_vars.tool.type == type && global_vars.tool.index / multiplier == static_cast<size_t>(cur_page)) {
setToolColor();
}
}
void moveToolsLeft(ToolType::Value type) {
switch (type) {
case ToolType::BLOCK:
global_vars.tool.cur_page_tools--;
updateToolSelection(global_vars.tool.cur_page_tools + 1, type);
break;
case ToolType::MOD:
global_vars.tool.cur_page_mods--;
updateToolSelection(global_vars.tool.cur_page_mods + 1, type);
break;
case ToolType::CHARACTER:
global_vars.tool.cur_page_characters--;
updateToolSelection(global_vars.tool.cur_page_characters + 1, type);
default:
break;
}
}
void moveToolsRight(ToolType::Value type) {
switch (type) {
case ToolType::BLOCK:
global_vars.tool.cur_page_tools++;
updateToolSelection(global_vars.tool.cur_page_tools - 1, type);
break;
case ToolType::MOD:
global_vars.tool.cur_page_mods++;
updateToolSelection(global_vars.tool.cur_page_mods - 1, type);
break;
case ToolType::CHARACTER:
global_vars.tool.cur_page_characters++;
updateToolSelection(global_vars.tool.cur_page_characters - 1, type);
default:
break;
}
}
void updateToolIndex(uint64_t new_index, ToolType::Value new_type) {
int multiplier = 0;
int *page = nullptr;
switch (new_type) {
case ToolType::BLOCK:
if(new_index >= global_vars.tools.size()) {
return;
}
multiplier = 2 * TOOLS_WIDTH;
page = &global_vars.tool.cur_page_tools;
break;
case ToolType::MOD:
if(new_index >= global_vars.mods.size()) {
return;
}
multiplier = 2 * MOD_WIDTH;
page = &global_vars.tool.cur_page_mods;
break;
case ToolType::CHARACTER:
if(new_index >= global_vars.characters.size()) {
return;
}
multiplier = 2 * CHARACTER_WIDTH;
page = &global_vars.tool.cur_page_characters;
default:
@@ -659,7 +634,7 @@ void moveModsLeft(void *input, Button *caller) {
toolMoveLeft(caller, actual_input->other_button.get(),
global_vars.tool.cur_page_mods, global_vars.tool.max_page_mods,
false);
updateToolSelection(global_vars.tool.cur_page_tools + 1, ToolType::MOD);
updateToolSelection(global_vars.tool.cur_page_mods + 1, ToolType::MOD);
}
void moveModsRight(void *input, Button *caller) {
@@ -667,7 +642,7 @@ void moveModsRight(void *input, Button *caller) {
toolMoveRight(actual_input->other_button.get(), caller,
global_vars.tool.cur_page_mods,
global_vars.tool.max_page_mods, false);
updateToolSelection(global_vars.tool.cur_page_tools - 1, ToolType::MOD);
updateToolSelection(global_vars.tool.cur_page_mods - 1, ToolType::MOD);
}
void moveCharsLeft(void *input, Button *caller) {
@@ -675,7 +650,7 @@ void moveCharsLeft(void *input, Button *caller) {
toolMoveLeft(caller, actual_input->other_button.get(),
global_vars.tool.cur_page_characters,
global_vars.tool.max_page_characters, false);
updateToolSelection(global_vars.tool.cur_page_tools + 1,
updateToolSelection(global_vars.tool.cur_page_characters + 1,
ToolType::CHARACTER);
}
@@ -684,7 +659,7 @@ void moveCharsRight(void *input, Button *caller) {
toolMoveRight(actual_input->other_button.get(), caller,
global_vars.tool.cur_page_characters,
global_vars.tool.max_page_characters, false);
updateToolSelection(global_vars.tool.cur_page_tools - 1,
updateToolSelection(global_vars.tool.cur_page_characters - 1,
ToolType::CHARACTER);
}