Esempio n. 1
0
//
// Change a keybinding option
//
boolean FE_SetKeybinding(femenuitem_t *item, int key)
{
    const char *keyname;
    boolean res = false;
    boolean cleared = false;
    int curkey = M_GetIntVariable(item->verb);

    if(!key)
        return false;

    if(curkey && key == curkey) // clear binding
    {
        res = M_SetVariable(item->verb, "");
        cleared = true;
    }
    else
    {
        // try to find name for key
        keyname = GetNameForKey(key);
        if(!keyname)
            return false;

        res = M_SetVariable(item->verb, keyname);
    }

    if(res)
    {
        S_StartSound(NULL, sfx_swtchn);
        if(merchantOn)
            FE_MerchantSetState(!cleared ? S_MRYS_00 : S_MRNO_00);
    }

    return res;
}
Esempio n. 2
0
const char *FE_GetKeyName(const char *varname)
{
    int i;
    int val = M_GetIntVariable(varname);
    const char *text = GetNameForKey(val);

    if(!val || !text)
        text = "None";

    for(i = 0; i < arrlen(keyNameRepls); i++)
    {
        if(val == keyNameRepls[i].key)
        {
            text = keyNameRepls[i].altName;
            break;
        }
    }

    return text;
}
Esempio n. 3
0
//
// haleyjd 20141022: [SVE] Alternate waiting on Steam clients
//
void NET_WaitForSteamLaunch(void)
{
    boolean isServer = (net_SteamNodeType == NET_STEAM_SERVER);
    const char *strConn = "Connecting Netgame";
    char numConn[64];
    char pressStr[64];
    char pressStr2[64];
    int strConnWidth, pressStrWidth, pressStrX, numConnWidth;
    const char *keyActivateName = GetNameForKey(key_menu_activate);
    const char *keyForwardName  = GetNameForKey(key_menu_forward);

    if(!keyActivateName)
        keyActivateName = "key_menu_activate";
    if(!keyForwardName)
        keyForwardName  = "key_menu_forward";

    M_snprintf(pressStr, sizeof(pressStr), "(Press %s to cancel%c",
               keyActivateName, isServer ? ',' : ')');
    if(isServer)
    {
        M_snprintf(pressStr2, sizeof(pressStr2), "%s to start now)",
                   keyForwardName);
    }
    strConnWidth  = V_BigFontStringWidth(strConn);
    pressStrWidth = M_StringWidth(pressStr);
    pressStrX     = (SCREENWIDTH - pressStrWidth) / 2;

    expected_nodes = net_SteamNumNodes;

    while(net_waiting_for_launch)
    {
        event_t *ev;

        CheckAutoLaunch();

        I_StartTic();
        
        while((ev = D_PopEvent()))
        {
            switch(ev->type)
            {
            case ev_keydown:
                if(ev->data1 == key_menu_activate)
                    I_Quit();
                if(ev->data1 == key_menu_forward && isServer)
                    StartGame(NULL, NULL);
                break;
            default:
                break;
            }
        }

        if(use3drenderer)
            RB_ClearBuffer(GLCB_COLOR);

        M_snprintf(numConn, sizeof(numConn), "%d of %d nodes connected",
                   NumConnected(), net_SteamNumNodes);
        numConnWidth = M_StringWidth(numConn);

        V_DrawFilledBox(0, 0, SCREENWIDTH, SCREENHEIGHT, 0);
        V_WriteBigText(strConn, (SCREENWIDTH - strConnWidth)/2, 60);
        M_WriteText((SCREENWIDTH - numConnWidth)/2, 100, numConn);
        M_WriteText(pressStrX, 112, pressStr);
        if(isServer)
            M_WriteText(pressStrX+12, 124, pressStr2);

        NET_CL_Run();
        NET_SV_Run();

        if(!net_client_connected)
            I_Error("Lost connection to server");

        I_FinishUpdate();
        I_Sleep(100);        
    }
}