/** * Translate this key to symbol, compare with borrowed buttons. * @return symbol or SYM_NONE for unknown key */ char Unit::mySymbolBorrowed(SDLKey key, const KeyControl &buttons) const { if (key == buttons.getLeft()) { return m_symbols.getLeft(); } if (key == buttons.getRight()) { return m_symbols.getRight(); } if (key == buttons.getUp()) { return m_symbols.getUp(); } if (key == buttons.getDown()) { return m_symbols.getDown(); } return ControlSym::SYM_NONE; }
/** * Test keys and try move, use borrowed controls. * @return a symbol when unit has moved or SYM_NONE */ char Unit::driveBorrowed(const InputProvider *input, const KeyControl &buttons) { if (canDrive()) { if (input->isPressed(buttons.getLeft())) { return goLeft(); } if (input->isPressed(buttons.getRight())) { return goRight(); } if (input->isPressed(buttons.getUp())) { return goUp(); } if (input->isPressed(buttons.getDown())) { return goDown(); } } return ControlSym::SYM_NONE; }
void SetKeyWindow::MessageReceived(BMessage* msg){ switch(msg->what){ case SET: key = control1->GetKey(); mod = control1->GetMod(); key2 = control2->GetKey(); mod2 = control2->GetMod(); KeyBind.Install(menu, KeyBind.GetID(index), key, mod, key2, mod2, message); parent->LockLooper(); parent->Pulse(); parent->UnlockLooper(); Quit(); break; case CLEAR1: mod = key = 0; control1->SetBinding(key,mod); break; case CLEAR2: mod2 = key2 = 0; control2->SetBinding(key2,mod2); break; default: BWindow::MessageReceived(msg); } }
void SetKeyWindow::MessageReceived(BMessage* msg) { switch(msg->what) { case SET: { KeyBind* key = new KeyBind(); key->key = control1->GetKey(); key->mod = control1->GetMod(); key->label = FaberShortcut::KeyBindAt(index)->label; key->message = FaberShortcut::KeyBindAt(index)->message; key->itemType = FaberShortcut::KeyBindAt(index)->itemType; FaberShortcut::AddKeyBind(key); if (parent->LockLooper()) { parent->Pulse(); parent->UnlockLooper(); } Quit(); break; } case CLEAR1: mod = key = 0; control1->SetBinding(key,mod); break; case CLEAR2: mod2 = key2 = 0; control2->SetBinding(key2,mod2); break; default: BWindow::MessageReceived(msg); } }
void SetKeyWindow::MessageReceived(BMessage* msg) { switch(msg->what) { case SET: { KeyBind* key = new KeyBind(); key->key = control1->GetKey(); key->mod = control1->GetMod(); key->altKey = control2->GetKey(); key->altMod = control2->GetMod(); key->label = gKeyBind->GetLabel(index); key->message = MessageBuilder(message); key->isMenuItem = menu; gKeyBind->AddKeyBind(key); if (parent->LockLooper()) { parent->Pulse(); parent->UnlockLooper(); } Quit(); break; } case CLEAR1: mod = key = 0; control1->SetBinding(key,mod); break; case CLEAR2: mod2 = key2 = 0; control2->SetBinding(key2,mod2); break; default: BWindow::MessageReceived(msg); } }
/** * Create unit for driveable fish. * @param kind kind of item (e.g. "fish_big", "item_light", ...) * @return new unit or NULL */ Unit * ModelFactory::createUnit(const std::string &kind) { Unit *result = NULL; if ("fish_small" == kind) { KeyControl smallfish; smallfish.setUp(SDLK_l); smallfish.setDown(SDLK_k); smallfish.setLeft(SDLK_i); smallfish.setRight(SDLK_m); result = new Unit(smallfish, ControlSym('u', 'd', 'l', 'r'), true); } else if ("fish_big" == kind) { KeyControl bigfish; bigfish.setUp(SDLK_f); bigfish.setDown(SDLK_d); bigfish.setLeft(SDLK_e); bigfish.setRight(SDLK_x); result = new Unit(bigfish, ControlSym('U', 'D', 'L', 'R')); } else if (StringTool::startsWith(kind, "fish_extra") || StringTool::startsWith(kind, "fish_EXTRA")) { KeyControl extrafish; extrafish.setUp(SDLK_LAST); extrafish.setDown(SDLK_LAST); extrafish.setLeft(SDLK_LAST); extrafish.setRight(SDLK_LAST); result = new Unit(extrafish, parseExtraControlSym(kind)); } return result; }