// // 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; }
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; }
// // 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); } }