bool Core::ncurses_wgetch(int in, int & out) { if(!started) { out = in; return true; } if(in >= KEY_F(1) && in <= KEY_F(8)) { int idx = in - KEY_F(1); // FIXME: copypasta, push into a method! Gui * g = getGui(); if(g->hotkeys && g->df_interface && g->df_menu_state) { t_viewscreen * ws = g->GetCurrentScreen(); // FIXME: put hardcoded values into memory.xml if(ws->getClassName() == "viewscreen_dwarfmodest" && *g->df_menu_state == 0x23) { out = in; return true; } else { t_hotkey & hotkey = (*g->hotkeys)[idx]; setHotkeyCmd(hotkey.name); return false; } } } out = in; return true; }
int Core::SDL_Event(SDL::Event* ev, int orig_return) { // do NOT process events before we are ready. if(!started) return orig_return; if(!ev) return orig_return; if(ev && ev->type == SDL::ET_KEYDOWN || ev->type == SDL::ET_KEYUP) { SDL::KeyboardEvent * ke = (SDL::KeyboardEvent *)ev; bool shift = ke->ksym.mod & SDL::KMOD_SHIFT; // consuming F1 .. F8 int idx = ke->ksym.sym - SDL::K_F1; if(idx < 0 || idx > 7) return orig_return; idx += 8*shift; // now we have the real index... if(ke->state == SDL::BTN_PRESSED && !hotkey_states[idx]) { hotkey_states[idx] = 1; Gui * g = getGui(); if(g->hotkeys && g->df_interface && g->df_menu_state) { t_viewscreen * ws = g->GetCurrentScreen(); // FIXME: put hardcoded values into memory.xml if(ws->getClassName() == "viewscreen_dwarfmodest" && *g->df_menu_state == 0x23) return orig_return; else { t_hotkey & hotkey = (*g->hotkeys)[idx]; setHotkeyCmd(hotkey.name); } } } else if(ke->state == SDL::BTN_RELEASED) { hotkey_states[idx] = 0; } } return orig_return; // do stuff with the events... }