| 228 | } |
| 229 | |
| 230 | void updateKeyConfigChooser() { |
| 231 | bool redraw = false; |
| 232 | |
| 233 | int& option = keyConfigChooser_option; |
| 234 | KeyConfig* config = &keyConfigs[selectedKeyConfig]; |
| 235 | |
| 236 | if (keyJustPressed(KEY_B)) { |
| 237 | // Don't allow exiting if nothing is assigned to opening the menu |
| 238 | |
| 239 | if (!checkKeyAssignedToMenu(config)) { |
| 240 | keyConfigChooser_printMenuWarning = true; |
| 241 | redrawKeyConfigChooser(); |
| 242 | } |
| 243 | else { |
| 244 | loadKeyConfig(); |
| 245 | closeSubMenu(); |
| 246 | } |
| 247 | } |
| 248 | else if (keyJustPressed(KEY_X)) { |
| 249 | keyConfigs.push_back(KeyConfig(*config)); |
| 250 | selectedKeyConfig = keyConfigs.size()-1; |
| 251 | char name[32]; |
| 252 | siprintf(name, "Custom %d", keyConfigs.size()-1); |
| 253 | strcpy(keyConfigs.back().name, name); |
| 254 | option = -1; |
| 255 | redraw = true; |
| 256 | } |
| 257 | else if (keyJustPressed(KEY_Y)) { |
| 258 | if (selectedKeyConfig != 0) /* can't erase the default */ { |
| 259 | keyConfigs.erase(keyConfigs.begin() + selectedKeyConfig); |
| 260 | if (selectedKeyConfig >= keyConfigs.size()) |
| 261 | selectedKeyConfig = keyConfigs.size() - 1; |
| 262 | redraw = true; |
| 263 | } |
| 264 | } |
| 265 | else if (keyPressedAutoRepeat(KEY_DOWN)) { |
| 266 | if (option == NUM_DS_KEYS-1) |
| 267 | option = -1; |
| 268 | else |
| 269 | option++; |
| 270 | redraw = true; |
| 271 | } |
| 272 | else if (keyPressedAutoRepeat(KEY_UP)) { |
| 273 | if (option == -1) |
| 274 | option = NUM_DS_KEYS-1; |
| 275 | else |
| 276 | option--; |
| 277 | redraw = true; |
| 278 | } |
| 279 | else if (keyPressedAutoRepeat(KEY_LEFT)) { |
| 280 | if (option == -1) { |
| 281 | if (selectedKeyConfig == 0) |
| 282 | selectedKeyConfig = keyConfigs.size()-1; |
| 283 | else |
| 284 | selectedKeyConfig--; |
| 285 | } |
| 286 | else { |
| 287 | config->gbKeys[option]--; |
nothing calls this directly
no test coverage detected