void NewGame::onKeyDown(Event::Keyboard* event) { switch (event->keyCode()) { case SDLK_ESCAPE: case SDLK_b: doBack(); break; case SDLK_t: doBeginGame(); break; case SDLK_c: doCreate(); break; case SDLK_m: doEdit(); break; case SDLK_LEFT: doPrev(); break; case SDLK_RIGHT: doNext(); break; } }
int main(void) { init_IO(); init_interrupts(); oledInit(); _delay_ms(200); oledSetCursor(cursX, cursY); putChar(66,1); advanceCursor(6); compose(); initMenu(); while(1) { static uint16_t butCounter = 0; if (butCounter++ > 65000) { //FIXME: Proper button debounce and handling butCounter = 0; uint8_t readButtons = BUT_PIN; if (~readButtons & BUT_LEFT) { ++goLeft; } if (~readButtons & BUT_SEL) { ++goSel; } } if (knobChange) { if (knobChange > 0) { //menuUp(); knobLeft(); } else { //menuDn(); knobRight(); } knobChange = 0; } if (goSel) { //Lookup and execute action doSelect[optionIndex](); goSel = 0; } else if (goLeft) { doBack(); goLeft = 0; } } }
void PlayerEditName::onTextAreaKeyDown(Event::Keyboard* event) { auto sender = dynamic_cast<UI::TextArea*>(event->emitter()); std::string text = sender->text(); if (event->keyCode() == SDLK_BACKSPACE) //backspace { if (text.length() > 0) { text = text.substr(0, text.length() - 1); sender->setText(text.c_str()); return; } return; } if (event->keyCode() == SDLK_RETURN) //enter { doDone(); return; } if (event->keyCode() == SDLK_ESCAPE) { doBack(); return; } if (event->keyCode() == SDLK_LSHIFT || event->keyCode() == SDLK_RSHIFT) return; if (event->keyCode() == SDLK_LCTRL || event->keyCode() == SDLK_RCTRL) return; if (event->keyCode() == SDLK_LALT || event->keyCode() == SDLK_RALT) return; if (text.length() == 11) return; if (_keyCodes.find(event->keyCode()) != _keyCodes.end()) { char chr = _keyCodes.at(event->keyCode()); if (event->shiftPressed()) { text += toupper(chr); } else { text += chr; } sender->setText(text.c_str()); } }
void PlayerEditAge::onKeyDown(Event::Keyboard* event) { switch (event->keyCode()) { case SDLK_RIGHT: doInc(); break; case SDLK_LEFT: doDec(); break; case SDLK_ESCAPE: doBack(); break; case SDLK_RETURN: doDone(); break; } }
void NewGame::onBackButtonClick(Event::Mouse* event) { doBack(); }