void OnKeyUpPick(SDL_KeyboardEvent *e) { Disconnect(); m_binding.type = KeyBindings::KEYBOARD_KEY; m_binding.u.keyboard.key = e->keysym.sym; // get rid of number lock, caps lock, etc m_binding.u.keyboard.mod = SDLMod(e->keysym.mod & (KMOD_CTRL | KMOD_ALT | KMOD_META | KMOD_SHIFT)); Close(); }
void TCOD_noteye_check() { if(!tnoteye.mode) return; TCOD_noteye_init(); if(delayed) TCOD_noteye_sendscreen(tbuffer); int i; for(i=0; i < MAXCLIENT; i++) if(client[i] == NULL) break; if(i < MAXCLIENT && i < tnoteye.maxClients) { TCPsocket skt = SDLNet_TCP_Accept(server->socket); if(skt) { client[i] = new NTCPStream(skt); client[i]->writeStr("NotEye stream"); client[i]->writeInt(NOTEYEVER); client[i]->writeStr(tnoteye.name); if(scr) { TCOD_noteye_render(); client[i]->writeInt(nepScreen); client[i]->writeScr(scr); client[i]->flush(); } } } for(int i=0; i < tnoteye.maxClients; i++) while(client[i] && client[i]->ready()) { if(client[i]->eof()) { delete client[i]; client[i] = NULL; } else { int nep = client[i]->readInt(); if(nep == nepKey) { SDL_Event ev; SDL_KeyboardEvent& kev(ev.key); kev.keysym.sym = SDLKey(client[i]->readInt()); kev.keysym.mod = SDLMod(client[i]->readInt()); ev.type = client[i]->readInt() == evKeyDown ? SDL_KEYDOWN : SDL_KEYUP; kev.keysym.unicode = client[i]->readInt(); SDL_PushEvent(&ev); } else if(nep == nepMouse) { tnoteye.x = client[i]->readInt(); tnoteye.y = client[i]->readInt(); tnoteye.state = client[i]->readInt(); tnoteye.active = true; } else if(nep == nepMessage) { string s = client[i]->readStr(); TCOD_noteye_writestr(s.c_str()); } else fprintf(stderr, "Unknown NEP: %d\n", nep); } } }
/** * Exampe strings: * Key55 * Joy0Button2 * Joy0Hat0Dir3 */ bool KeyBindingFromString(const std::string &str, KeyBinding *kb) { const char *digits = "1234567890"; const char *p = str.c_str(); if (strncmp(p, "Key", 3) == 0) { kb->type = KEYBOARD_KEY; p += 3; kb->u.keyboard.key = SDLKey(atoi(p)); p += strspn(p, digits); if (strncmp(p, "Mod", 3) == 0) { p += 3; kb->u.keyboard.mod = SDLMod(atoi(p)); } else kb->u.keyboard.mod = KMOD_NONE; return true; } else if (strncmp(p, "Joy", 3) == 0) { p += 3; int joy = atoi(p); p += strspn(p, digits); if (strncmp(p, "Button", 6) == 0) { p += 6; kb->type = JOYSTICK_BUTTON; kb->u.joystickButton.joystick = joy; kb->u.joystickButton.button = atoi(p); return true; } else if (strncmp(p, "Hat", 3) == 0) { p += 3; kb->type = JOYSTICK_HAT; kb->u.joystickHat.joystick = joy; kb->u.joystickHat.hat = atoi(p); p += strspn(p, digits); if (strncmp(p, "Dir", 3) != 0) return false; p += 3; kb->u.joystickHat.direction = atoi(p); return true; } return false; } return false; }
void play_scenario::play() { // We have to first append a "event" that collects end poisition end_pos_.reset(new end_position_collector(current_time_++)); end_position_collector* end = static_cast<end_position_collector*>(end_pos_.get()); source_.add_event(end_pos_); source_.type_key(current_time_++, SDLK_COLON, SDLMod(KMOD_LSHIFT | KMOD_SHIFT) ); source_.type_key(current_time_++, SDLK_q); source_.type_key(current_time_++, SDLK_EXCLAIM); source_.type_key(current_time_++, SDLK_RETURN); game_state& state = end->get_state(); state.classification().campaign_type = "test"; state.carryover_sides_start["next_scenario"] = id_; play_game(get_fake_display(1024, 768), state, game_config_); }
IOController::IOController() { //XXX: For now we hardcode the specific actions SDLMod item_mod = SDLMod(KMOD_LSHIFT | KMOD_RSHIFT); char action_key = 'j'; // Spell choice bind_key_events(event_bindings, "yuiop", IOEvent::ACTIVATE_SPELL_N, KMOD_NONE, item_mod/*rejected*/, true); // bind_key_events(event_bindings, "12345", IOEvent::ACTIVATE_SPELL_N, // KMOD_NONE, item_mod/*rejected*/, true); // // Item choice // bind_key_events(event_bindings, "yuiop67890", IOEvent::USE_ITEM_N, item_mod, // KMOD_NONE, false); bind_key_events(event_bindings, "1234567890", IOEvent::USE_ITEM_N, KMOD_NONE, KMOD_NONE, false); /*Scroll spell up*/ { IOEvent event(IOEvent::TOGGLE_ACTION_UP); IOEventTrigger trigger1(event, IOEventTrigger::MOUSE_WHEEL_UP, SDLKey(0), KMOD_NONE, KMOD_NONE, true); IOEventTrigger trigger2(event, IOEventTrigger::NONE, SDLKey('e'), KMOD_NONE, KMOD_NONE); IOEventTrigger trigger3(event, IOEventTrigger::NONE, SDLKey('.'), KMOD_NONE, KMOD_NONE); event_bindings.push_back(trigger1); event_bindings.push_back(trigger2); event_bindings.push_back(trigger3); } /*Scroll spell down*/ { IOEvent event(IOEvent::TOGGLE_ACTION_DOWN); IOEventTrigger trigger1(event, IOEventTrigger::MOUSE_WHEEL_DOWN, SDLKey(0), KMOD_NONE, KMOD_NONE, true); IOEventTrigger trigger2(event, IOEventTrigger::NONE, SDLKey('q'), KMOD_NONE, KMOD_NONE); IOEventTrigger trigger3(event, IOEventTrigger::NONE, SDLKey(','), KMOD_NONE, KMOD_NONE); event_bindings.push_back(trigger1); event_bindings.push_back(trigger2); event_bindings.push_back(trigger3); } /*Use weapon*/ { IOEvent event(IOEvent::USE_WEAPON); IOEventTrigger trigger1(event, IOEventTrigger::MOUSE_MIDDLE_CLICK, SDLKey(0), KMOD_NONE, KMOD_NONE, true); IOEventTrigger trigger2(event, IOEventTrigger::NONE, SDLKey('h'), KMOD_NONE, KMOD_NONE, true); event_bindings.push_back(trigger1); event_bindings.push_back(trigger2); } /*Do autotarget action */ { IOEvent event(IOEvent::AUTOTARGET_CURRENT_ACTION); IOEventTrigger trigger1(event, IOEventTrigger::NONE, SDLKey(action_key), KMOD_NONE, KMOD_NONE, true); IOEventTrigger trigger2(event, IOEventTrigger::NONE, SDLK_SPACE, KMOD_NONE, KMOD_NONE, true); event_bindings.push_back(trigger1); event_bindings.push_back(trigger2); } /*Do targetted action */{ IOEvent event(IOEvent::MOUSETARGET_CURRENT_ACTION); IOEventTrigger trigger(event, IOEventTrigger::MOUSE_LEFT_CLICK, SDLKey(0), KMOD_NONE, KMOD_NONE, true); event_bindings.push_back(trigger); } }