- removed more backing data for the old keybinding code.

Unfortunately this means that the keybinding menus in all games except Blood are shot to shit right now because of how they passed the data on to its destination.
These menus are not fixable, this will have to wait until the replacement is up.
This commit is contained in:
Christoph Oelckers 2019-11-03 20:58:10 +01:00
parent eb049abc3a
commit 1b958a7f9f
9 changed files with 27 additions and 79 deletions

View file

@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "qav.h" #include "qav.h"
#include "resource.h" #include "resource.h"
#include "view.h" #include "view.h"
#include "c_bind.h"
BEGIN_BLD_NS BEGIN_BLD_NS
@ -1129,7 +1130,7 @@ void CGameMenuItemKeyList::Scan(void)
void CGameMenuItemKeyList::Draw(void) void CGameMenuItemKeyList::Draw(void)
{ {
char buffer[40], buffer2[40]; char buffer[40];
int width, height; int width, height;
int shade; int shade;
gMenuTextMgr.GetFontInfo(m_nFont, NULL, NULL, &height); gMenuTextMgr.GetFontInfo(m_nFont, NULL, NULL, &height);
@ -1139,21 +1140,9 @@ void CGameMenuItemKeyList::Draw(void)
bool bClick = false; bool bClick = false;
for (int i = 0; i < nRows; i++, y += height, k++) for (int i = 0; i < nRows; i++, y += height, k++)
{ {
char key1, key2; auto keys = Bindings.GetKeysForCommand(CONFIG_FunctionNumToName(k));
key1 = KeyboardKeys[k][0]; FString text = C_NameKeys(keys.Data(), std::min(keys.Size(), 2u));
key2 = KeyboardKeys[k][1];
const char *sKey1 = key1 == sc_Tilde ? "Tilde" : KB_ScanCodeToString(key1);
const char *sKey2 = key2 == sc_Tilde ? "Tilde" : KB_ScanCodeToString(key2);
sprintf(buffer, "%s", CONFIG_FunctionNumToName(k)); sprintf(buffer, "%s", CONFIG_FunctionNumToName(k));
if (key2 == 0 || key2 == 0xff)
{
if (key1 == 0 || key1 == 0xff)
sprintf(buffer2, "????");
else
sprintf(buffer2, "%s", sKey1);
}
else
sprintf(buffer2, "%s or %s", sKey1, sKey2);
if (k == nFocus) if (k == nFocus)
{ {
@ -1165,15 +1154,15 @@ void CGameMenuItemKeyList::Draw(void)
if (bScan && ((int)totalclock & 32)) if (bScan && ((int)totalclock & 32))
sVal = "____"; sVal = "____";
else else
sVal = buffer2; sVal = text;
gMenuTextMgr.GetFontInfo(m_nFont, sVal, &width, 0); gMenuTextMgr.GetFontInfo(m_nFont, sVal, &width, 0);
viewDrawText(m_nFont, sVal, m_nX+m_nWidth-1-width, y, shade, 0, 0, false); viewDrawText(m_nFont, sVal, m_nX+m_nWidth-1-width, y, shade, 0, 0, false);
} }
else else
{ {
viewDrawText(3, buffer, m_nX, y, 24, 0, 0, false); viewDrawText(3, buffer, m_nX, y, 24, 0, 0, false);
gMenuTextMgr.GetFontInfo(m_nFont, buffer2, &width, 0); gMenuTextMgr.GetFontInfo(m_nFont, text, &width, 0);
viewDrawText(m_nFont, buffer2, m_nX+m_nWidth-1-width, y, 24, 0, 0, false); viewDrawText(m_nFont, text, m_nX+m_nWidth-1-width, y, 24, 0, 0, false);
} }
int mx = m_nX<<16; int mx = m_nX<<16;
int my = y<<16; int my = y<<16;

View file

@ -53,16 +53,10 @@ void sub_5A928(void)
inputState.ClearButton(i); inputState.ClearButton(i);
} }
void sub_5A944(char key) void sub_5A944(int key)
{ {
for (int i = 0; i < NUMGAMEFUNCTIONS-1; i++) auto binding = Bindings.GetBind(key);
{ #pragma message("todo: reset the bound button here")
char key1, key2;
key1 = KeyboardKeys[i][0];
key2 = KeyboardKeys[i][1];
if (key1 == key || key2 == key)
inputState.ClearButton(i);
}
} }
void SetGodMode(bool god) void SetGodMode(bool god)
@ -592,7 +586,7 @@ void CPlayerMsg::Send(void)
void CPlayerMsg::ProcessKeys(void) void CPlayerMsg::ProcessKeys(void)
{ {
int key = keyGetScan(); int key = keyGetScan();
char ch; int ch;
if (key != 0) if (key != 0)
{ {
bool ctrl = (inputState.CtrlPressed()); bool ctrl = (inputState.CtrlPressed());

View file

@ -424,19 +424,6 @@ void onvideomodechange(int32_t newmode)
UpdateDacs(gLastPal, false); UpdateDacs(gLastPal, false);
} }
static int osdcmd_unbound(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_OK;
int const gameFunc = CONFIG_FunctionNameToNum(parm->parms[0]);
if (gameFunc != -1)
KeyboardKeys[gameFunc][0] = 0;
return OSDCMD_OK;
}
static int osdcmd_quicksave(osdcmdptr_t UNUSED(parm)) static int osdcmd_quicksave(osdcmdptr_t UNUSED(parm))
{ {
UNREFERENCED_CONST_PARAMETER(parm); UNREFERENCED_CONST_PARAMETER(parm);
@ -513,7 +500,6 @@ int32_t registerosdcommands(void)
OSD_RegisterFunction("restartsound","restartsound: reinitializes the sound system",osdcmd_restartsound); OSD_RegisterFunction("restartsound","restartsound: reinitializes the sound system",osdcmd_restartsound);
OSD_RegisterFunction("restartvid","restartvid: reinitializes the video mode",osdcmd_restartvid); OSD_RegisterFunction("restartvid","restartvid: reinitializes the video mode",osdcmd_restartvid);
OSD_RegisterFunction("screenshot","screenshot [format]: takes a screenshot.", osdcmd_screenshot); OSD_RegisterFunction("screenshot","screenshot [format]: takes a screenshot.", osdcmd_screenshot);
OSD_RegisterFunction("unbound", NULL, osdcmd_unbound);
OSD_RegisterFunction("vidmode","vidmode <xdim> <ydim> <bpp> <fullscreen>: change the video mode",osdcmd_vidmode); OSD_RegisterFunction("vidmode","vidmode <xdim> <ydim> <bpp> <fullscreen>: change the video mode",osdcmd_vidmode);
#ifdef USE_OPENGL #ifdef USE_OPENGL

View file

@ -16,8 +16,6 @@ class FArgs;
void D_AddWildFile(TArray<FString>& wadfiles, const char* value); void D_AddWildFile(TArray<FString>& wadfiles, const char* value);
extern uint8_t KeyboardKeys[NUMGAMEFUNCTIONS][2];
int CONFIG_Init(); int CONFIG_Init();
void CONFIG_SetDefaultKeys(const char *defbinds); void CONFIG_SetDefaultKeys(const char *defbinds);
int32_t CONFIG_FunctionNameToNum(const char* func); int32_t CONFIG_FunctionNameToNum(const char* func);
@ -25,7 +23,6 @@ const char* CONFIG_FunctionNumToName(int32_t func);
const char* CONFIG_FunctionNumToRealName(int32_t func); const char* CONFIG_FunctionNumToRealName(int32_t func);
void CONFIG_ReplaceButtonName(int num, const char* text); void CONFIG_ReplaceButtonName(int num, const char* text);
void CONFIG_DeleteButtonName(int num); void CONFIG_DeleteButtonName(int num);
void CONFIG_MapKey(int which, kb_scancode key1, kb_scancode oldkey1, kb_scancode key2, kb_scancode oldkey2);
// I am not sure if anything below will survive for long... // I am not sure if anything below will survive for long...

View file

@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "superfasthash.h" #include "superfasthash.h"
#include "gamecvars.h" #include "gamecvars.h"
#include "gamecontrol.h" #include "gamecontrol.h"
#include "c_bind.h"
#include "../../glbackend/glbackend.h" #include "../../glbackend/glbackend.h"
BEGIN_DUKE_NS BEGIN_DUKE_NS
@ -768,7 +769,7 @@ static MenuEntry_t *MEL_DISPLAYSETUP_GL_POLYMER[] = {
static char const *MenuKeyNone = " -"; static char const *MenuKeyNone = " -";
static char const *MEOSN_Keys[NUMKEYS]; static char const *MEOSN_Keys[NUMKEYS];
static MenuCustom2Col_t MEO_KEYBOARDSETUPFUNCS_TEMPLATE = { { NULL, NULL, }, MEOSN_Keys, &MF_Minifont, NUMKEYS, 54<<16, 0 }; static MenuCustom2Col_t MEO_KEYBOARDSETUPFUNCS_TEMPLATE = { 0, &MF_Minifont, NUMKEYS, 54<<16, 0 };
static MenuCustom2Col_t MEO_KEYBOARDSETUPFUNCS[NUMGAMEFUNCTIONS]; static MenuCustom2Col_t MEO_KEYBOARDSETUPFUNCS[NUMGAMEFUNCTIONS];
static MenuEntry_t ME_KEYBOARDSETUPFUNCS_TEMPLATE = MAKE_MENUENTRY( NULL, &MF_Minifont, &MEF_KBFuncList, &MEO_KEYBOARDSETUPFUNCS_TEMPLATE, Custom2Col ); static MenuEntry_t ME_KEYBOARDSETUPFUNCS_TEMPLATE = MAKE_MENUENTRY( NULL, &MF_Minifont, &MEF_KBFuncList, &MEO_KEYBOARDSETUPFUNCS_TEMPLATE, Custom2Col );
static MenuEntry_t ME_KEYBOARDSETUPFUNCS[NUMGAMEFUNCTIONS]; static MenuEntry_t ME_KEYBOARDSETUPFUNCS[NUMGAMEFUNCTIONS];
@ -1826,8 +1827,6 @@ void Menu_Init(void)
ME_KEYBOARDSETUPFUNCS[i].name = MenuGameFuncs[i]; ME_KEYBOARDSETUPFUNCS[i].name = MenuGameFuncs[i];
ME_KEYBOARDSETUPFUNCS[i].entry = &MEO_KEYBOARDSETUPFUNCS[i]; ME_KEYBOARDSETUPFUNCS[i].entry = &MEO_KEYBOARDSETUPFUNCS[i];
MEO_KEYBOARDSETUPFUNCS[i] = MEO_KEYBOARDSETUPFUNCS_TEMPLATE; MEO_KEYBOARDSETUPFUNCS[i] = MEO_KEYBOARDSETUPFUNCS_TEMPLATE;
MEO_KEYBOARDSETUPFUNCS[i].column[0] = &KeyboardKeys[i][0];
MEO_KEYBOARDSETUPFUNCS[i].column[1] = &KeyboardKeys[i][1];
} }
M_KEYBOARDKEYS.numEntries = NUMGAMEFUNCTIONS; M_KEYBOARDKEYS.numEntries = NUMGAMEFUNCTIONS;
for (i = 0; i < MENUMOUSEFUNCTIONS; ++i) for (i = 0; i < MENUMOUSEFUNCTIONS; ++i)
@ -2921,7 +2920,6 @@ static int32_t Menu_PreCustom2ColScreen(MenuEntry_t *entry)
if (sc != sc_None) if (sc != sc_None)
{ {
S_PlaySound(PISTOL_BODYHIT); S_PlaySound(PISTOL_BODYHIT);
*column->column[M_KEYBOARDKEYS.currentColumn] = sc;
Bindings.SetBind(sc, CONFIG_FunctionNumToName(M_KEYBOARDKEYS.currentEntry)); Bindings.SetBind(sc, CONFIG_FunctionNumToName(M_KEYBOARDKEYS.currentEntry));
KB_ClearKeyDown(sc); KB_ClearKeyDown(sc);
@ -4885,8 +4883,14 @@ static int32_t M_RunMenu_Menu(Menu_t *cm, MenuMenu_t *menu, MenuEntry_t *current
int32_t columnx[2] = { origin.x + x - ((status & MT_XRight) ? object->columnWidth : 0), origin.x + x + ((status & MT_XRight) ? 0 : object->columnWidth) }; int32_t columnx[2] = { origin.x + x - ((status & MT_XRight) ? object->columnWidth : 0), origin.x + x + ((status & MT_XRight) ? 0 : object->columnWidth) };
const int32_t columny = origin.y + y_upper + y - menu->scrollPos; const int32_t columny = origin.y + y_upper + y - menu->scrollPos;
const vec2_t column0textsize = Menu_Text(columnx[0], columny + ((height>>17)<<16), object->font, object->key[*object->column[0]], menu->currentColumn == 0 ? status : (status & ~MT_Selected), ydim_upper, ydim_lower); // Beware of hack job!
const vec2_t column1textsize = Menu_Text(columnx[1], columny + ((height>>17)<<16), object->font, object->key[*object->column[1]], menu->currentColumn == 1 ? status : (status & ~MT_Selected), ydim_upper, ydim_lower); auto keys = Bindings.GetKeysForCommand(CONFIG_FunctionNumToName(object->buttonindex));
FString text1;
FString text2;
if (keys.Size() > 0) text1 = C_NameKeys(&keys[0], 1);
if (keys.Size() > 1) text2 = C_NameKeys(&keys[1], 1);
const vec2_t column0textsize = Menu_Text(columnx[0], columny + ((height >> 17) << 16), object->font, text1, menu->currentColumn == 0 ? status : (status & ~MT_Selected), ydim_upper, ydim_lower);
const vec2_t column1textsize = Menu_Text(columnx[1], columny + ((height>>17)<<16), object->font, text2, menu->currentColumn == 1 ? status : (status & ~MT_Selected), ydim_upper, ydim_lower);
if (entry->format->width > 0) if (entry->format->width > 0)
mousewidth += object->columnWidth + column1textsize.x; mousewidth += object->columnWidth + column1textsize.x;

View file

@ -214,9 +214,7 @@ typedef struct MenuOption_t
} MenuOption_t; } MenuOption_t;
typedef struct MenuCustom2Col_t typedef struct MenuCustom2Col_t
{ {
// effect int buttonindex;
uint8_t *column[2];
char const **key;
// appearance // appearance
MenuFont_t *font; MenuFont_t *font;

View file

@ -803,19 +803,6 @@ void onvideomodechange(int32_t newmode)
g_crosshairSum = -1; g_crosshairSum = -1;
} }
static int osdcmd_unbound(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_OK;
int const gameFunc = CONFIG_FunctionNameToNum(parm->parms[0]);
if (gameFunc != -1)
KeyboardKeys[gameFunc][0] = 0;
return OSDCMD_OK;
}
static int osdcmd_quicksave(osdcmdptr_t UNUSED(parm)) static int osdcmd_quicksave(osdcmdptr_t UNUSED(parm))
{ {
UNREFERENCED_CONST_PARAMETER(parm); UNREFERENCED_CONST_PARAMETER(parm);
@ -1174,8 +1161,6 @@ int32_t registerosdcommands(void)
OSD_RegisterFunction("spawn","spawn <picnum> [palnum] [cstat] [ang] [x y z]: spawns a sprite with the given properties",osdcmd_spawn); OSD_RegisterFunction("spawn","spawn <picnum> [palnum] [cstat] [ang] [x y z]: spawns a sprite with the given properties",osdcmd_spawn);
OSD_RegisterFunction("unbound", NULL, osdcmd_unbound);
OSD_RegisterFunction("vidmode","vidmode <xdim> <ydim> <bpp> <fullscreen>: change the video mode",osdcmd_vidmode); OSD_RegisterFunction("vidmode","vidmode <xdim> <ydim> <bpp> <fullscreen>: change the video mode",osdcmd_vidmode);
#ifdef USE_OPENGL #ifdef USE_OPENGL
baselayer_osdcmd_vidmode_func = osdcmd_vidmode; baselayer_osdcmd_vidmode_func = osdcmd_vidmode;

View file

@ -1720,8 +1720,6 @@ void Menu_Init(void)
ME_KEYBOARDSETUPFUNCS[i].name = MenuGameFuncs[i]; ME_KEYBOARDSETUPFUNCS[i].name = MenuGameFuncs[i];
ME_KEYBOARDSETUPFUNCS[i].entry = &MEO_KEYBOARDSETUPFUNCS[i]; ME_KEYBOARDSETUPFUNCS[i].entry = &MEO_KEYBOARDSETUPFUNCS[i];
MEO_KEYBOARDSETUPFUNCS[i] = MEO_KEYBOARDSETUPFUNCS_TEMPLATE; MEO_KEYBOARDSETUPFUNCS[i] = MEO_KEYBOARDSETUPFUNCS_TEMPLATE;
MEO_KEYBOARDSETUPFUNCS[i].column[0] = &KeyboardKeys[i][0];
MEO_KEYBOARDSETUPFUNCS[i].column[1] = &KeyboardKeys[i][1];
} }
M_KEYBOARDKEYS.numEntries = NUMGAMEFUNCTIONS; M_KEYBOARDKEYS.numEntries = NUMGAMEFUNCTIONS;
for (i = 0; i < MENUMOUSEFUNCTIONS; ++i) for (i = 0; i < MENUMOUSEFUNCTIONS; ++i)

View file

@ -681,7 +681,7 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item)
{ {
KB_ClearKeyDown(KB_GetLastScanCode()); KB_ClearKeyDown(KB_GetLastScanCode());
KeyboardKeys[currentkey][currentcol] = KB_GetLastScanCode(); //KeyboardKeys[currentkey][currentcol] = KB_GetLastScanCode();
if (currentkey != gamefunc_Show_Console) if (currentkey != gamefunc_Show_Console)
{ {
#if 0 // [JM] Re-do this shit !CHECKME! #if 0 // [JM] Re-do this shit !CHECKME!
@ -738,13 +738,8 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item)
KB_ClearKeyDown(sc_Delete); KB_ClearKeyDown(sc_Delete);
if (currentkey != gamefunc_Show_Console) if (currentkey != gamefunc_Show_Console)
{ {
KeyboardKeys[currentkey][currentcol] = 0xff; //Bindings.UnbindACommand(CONFIG_FunctionNumToName(M_KEYBOARDKEYS.currentEntry));
#if 0 // [JM] Re-do this shit !CHECKME! }
CONTROL_MapKey(currentkey,
KeyboardKeys[currentkey][0],
KeyboardKeys[currentkey][1]);
#endif
}
} }
else if (KB_KeyPressed(sc_Home)) else if (KB_KeyPressed(sc_Home))
{ {
@ -810,6 +805,7 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item)
} }
ds[j] = 0; ds[j] = 0;
#if 0
j = OPT_LINE(0)+(i-topitem)*8; j = OPT_LINE(0)+(i-topitem)*8;
MNU_DrawSmallString(OPT_XS, j, ds, (i==currentkey) ? 0 : 12, 16); MNU_DrawSmallString(OPT_XS, j, ds, (i==currentkey) ? 0 : 12, 16);
@ -824,6 +820,7 @@ SWBOOL MNU_KeySetupCustom(UserCall call, MenuItem *item)
if (!p || KeyboardKeys[i][1]==0xff) p = " -"; if (!p || KeyboardKeys[i][1]==0xff) p = " -";
MNU_DrawSmallString(OPT_XSIDE + 4*14, j, p, (i==currentkey) ? -5 : 12, MNU_DrawSmallString(OPT_XSIDE + 4*14, j, p, (i==currentkey) ? -5 : 12,
(i==currentkey && currentcol==1) ? 14 : 16); (i==currentkey && currentcol==1) ? 14 : 16);
#endif
} }
{ {