Beispiel #1
0
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;
}
Beispiel #2
0
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...
}