- some reshuffling on OSD code.

* moved the binding commands to osd.cpp. They were in the global namespace already and this way everything to be tossed out is in the same place when the time comes.
* removed support for the OSDs native CVARs. The only ones left were some internal ones I won't need until this code can be replaced.
* same for the custpmization code the games added. Duke Nukem was the only one anyway to have a decent font for it.
This commit is contained in:
Christoph Oelckers 2019-11-02 14:25:35 +01:00
parent 906e56a2b1
commit e4ecc5d8df
19 changed files with 207 additions and 966 deletions

View file

@ -1231,17 +1231,6 @@ static int32_t check_filename_casing(void)
int app_main() int app_main()
{ {
char buffer[BMAX_PATH];
OSD_SetFunctions(NULL,
NULL,
NULL,
NULL,
NULL,
GAME_clearbackground,
BGetTime,
GAME_onshowosd);
memcpy(&gGameOptions, &gSingleGameOptions, sizeof(GAMEOPTIONS)); memcpy(&gGameOptions, &gSingleGameOptions, sizeof(GAMEOPTIONS));
gGameOptions.nMonsterSettings = userConfig.nomonsters; gGameOptions.nMonsterSettings = userConfig.nomonsters;
bQuickStart = userConfig.nologo; bQuickStart = userConfig.nologo;
@ -1285,8 +1274,7 @@ int app_main()
initprintf("Loading tiles\n"); initprintf("Loading tiles\n");
if (pUserTiles) if (pUserTiles)
{ {
strcpy(buffer,pUserTiles); FStringf buffer("%s%%03i.ART", pUserTiles);
strcat(buffer,"%03i.ART");
if (!tileInit(0,buffer)) if (!tileInit(0,buffer))
ThrowError("User specified ART files not found"); ThrowError("User specified ART files not found");
} }

View file

@ -511,7 +511,6 @@ int32_t registerosdcommands(void)
OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo); OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);
// } // }
// //
OSD_RegisterFunction("bind",R"(bind <key> <string>: associates a keypress with a string of console input. Type "bind showkeys" for a list of keys and "listsymbols" for a list of valid console commands.)", osdcmd_bind);
// OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu); // OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor); OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor);
OSD_RegisterFunction("crosshairreset", "crosshairreset: restores the original crosshair", osdcmd_resetcrosshair); OSD_RegisterFunction("crosshairreset", "crosshairreset: restores the original crosshair", osdcmd_resetcrosshair);
@ -565,8 +564,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("unbind","unbind <key>: unbinds a key", osdcmd_unbind);
OSD_RegisterFunction("unbindall","unbindall: unbinds all keys", osdcmd_unbindall);
OSD_RegisterFunction("unbound", NULL, osdcmd_unbound); 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);
@ -582,23 +579,4 @@ int32_t registerosdcommands(void)
return 0; return 0;
} }
void GAME_onshowosd(int shown)
{
// G_UpdateScreenArea();
mouseLockToWindow((!shown) + 2);
//osdshown = shown;
// XXX: it's weird to fake a keypress like this.
// if (numplayers == 1 && ((shown && !ud.pause_on) || (!shown && ud.pause_on)))
// inputState.SetKeyStatus(sc_Escape, 1);
}
void GAME_clearbackground(int numcols, int numrows)
{
COMMON_clearbackground(numcols, numrows);
}
END_BLD_NS END_BLD_NS

View file

@ -26,9 +26,5 @@ BEGIN_BLD_NS
int32_t registerosdcommands(void); int32_t registerosdcommands(void);
void onvideomodechange(int32_t newmode); void onvideomodechange(int32_t newmode);
void GAME_onshowosd(int32_t shown);
void GAME_clearbackground(int32_t numcols, int32_t numrows);
extern const char *const ConsoleButtons[];
END_BLD_NS END_BLD_NS

View file

@ -232,16 +232,6 @@ void OSD_Cleanup(void);
// sets the file to echo output to // sets the file to echo output to
void OSD_SetLogFile(const char *fn); void OSD_SetLogFile(const char *fn);
// sets the functions the OSD will call to interrogate the environment
void OSD_SetFunctions(void (*drawchar)(int, int, char, int, int),
void (*drawstr)(int, int, const char *, int, int, int),
void (*drawcursor)(int, int, int, int),
int (*colwidth)(int),
int (*rowheight)(int),
void (*clearbg)(int, int),
int32_t (*gtime)(void),
void (*showosd)(int));
// sets the parameters for presenting the text // sets the parameters for presenting the text
void OSD_SetParameters(int promptShade, int promptPal, int editShade, int editPal, int textShade, int textPal, void OSD_SetParameters(int promptShade, int promptPal, int editShade, int editPal, int textShade, int textPal,
char const *errorStr, char const *highlight, uint32_t flags); char const *errorStr, char const *highlight, uint32_t flags);

View file

@ -12,12 +12,19 @@
#include "common.h" #include "common.h"
#include "c_cvars.h" #include "c_cvars.h"
#include "inputstate.h" #include "inputstate.h"
#include "keyboard.h"
#include "control.h"
#include "gamecontrol.h"
#define XXH_STATIC_LINKING_ONLY #define XXH_STATIC_LINKING_ONLY
#include "xxhash.h" #include "xxhash.h"
#include "vfs.h" #include "vfs.h"
int osdcmd_bind(osdcmdptr_t parm);
int osdcmd_unbindall(osdcmdptr_t);
int osdcmd_unbind(osdcmdptr_t parm);
static osdsymbol_t *osd_addsymbol(const char *name); static osdsymbol_t *osd_addsymbol(const char *name);
static osdsymbol_t *osd_findsymbol(const char *pszName, osdsymbol_t *pSymbol); static osdsymbol_t *osd_findsymbol(const char *pszName, osdsymbol_t *pSymbol);
static osdsymbol_t *osd_findexactsymbol(const char *pszName); static osdsymbol_t *osd_findexactsymbol(const char *pszName);
@ -69,65 +76,6 @@ static int32_t (*_getrowheight)(int32_t) = _internal_getrowheight;
static hashtable_t h_cvars = { OSDMAXSYMBOLS >> 1, NULL }; static hashtable_t h_cvars = { OSDMAXSYMBOLS >> 1, NULL };
bool m32_osd_tryscript = false; // whether to try executing m32script on unkown command in the osd bool m32_osd_tryscript = false; // whether to try executing m32script on unkown command in the osd
void OSD_RegisterCvar(osdcvardata_t * const cvar, int (*func)(osdcmdptr_t))
{
if (!osd)
OSD_Init();
osd->cvars = (osdcvar_t *)Xrealloc(osd->cvars, (osd->numcvars + 1) * sizeof(osdcvar_t));
hash_add(&h_cvars, cvar->name, osd->numcvars, 1);
switch (cvar->flags & CVAR_TYPEMASK)
{
case CVAR_FLOAT:
#if defined __POWERPC__ || defined GEKKO
osd->cvars[osd->numcvars].defaultValue.f = *cvar->f;
break;
#endif
case CVAR_BOOL:
case CVAR_INT:
case CVAR_UINT:
osd->cvars[osd->numcvars].defaultValue.u32 = *cvar->u32;
break;
case CVAR_DOUBLE:
osd->cvars[osd->numcvars].defaultValue.d = *cvar->d;
break;
}
osd->cvars[osd->numcvars++].pData = cvar;
OSD_RegisterFunction(cvar->name, cvar->desc, func);
}
static int OSD_CvarModified(const osdcvar_t * const pCvar)
{
if (!osd || !pCvar->pData->ptr)
return 0;
int rv = 0;
switch (pCvar->pData->flags & CVAR_TYPEMASK)
{
case CVAR_FLOAT:
#if defined __POWERPC__ || defined GEKKO
rv = (pCvar->defaultValue.f != *pCvar->pData->f); break;
#endif
case CVAR_BOOL:
case CVAR_INT:
case CVAR_UINT:
rv = (pCvar->defaultValue.u32 != *pCvar->pData->u32); break;
case CVAR_DOUBLE:
rv = (pCvar->defaultValue.d != *pCvar->pData->d); break;
case CVAR_STRING:
rv = 1; break;
default:
EDUKE32_UNREACHABLE_SECTION(break);
}
return rv || ((pCvar->pData->flags & CVAR_MODIFIED) == CVAR_MODIFIED);
}
// color code format is as follows: // color code format is as follows:
// ^## sets a color, where ## is the palette number // ^## sets a color, where ## is the palette number
@ -241,7 +189,7 @@ static inline void swaposdptrs(void)
void OSD_SetTextMode(int mode) void OSD_SetTextMode(int mode)
{ {
osd->draw.mode = (mode != 0); osd->draw.mode = 1;// (mode != 0);
if ((osd->draw.mode && drawosdchar != _internal_drawosdchar) || if ((osd->draw.mode && drawosdchar != _internal_drawosdchar) ||
(!osd->draw.mode && drawosdchar == _internal_drawosdchar)) (!osd->draw.mode && drawosdchar == _internal_drawosdchar))
@ -392,15 +340,16 @@ static int _internal_getrowheight(int w)
return w/8; return w/8;
} }
void COMMON_doclearbackground(int numcols, int height);
static void _internal_clearbackground(int cols, int rows) static void _internal_clearbackground(int cols, int rows)
{ {
UNREFERENCED_PARAMETER(cols); COMMON_doclearbackground(cols, rows);
UNREFERENCED_PARAMETER(rows);
} }
static int32_t _internal_gettime(void) static int32_t _internal_gettime(void)
{ {
return 0; return BGetTime();
} }
static void _internal_onshowosd(int a) static void _internal_onshowosd(int a)
@ -497,59 +446,6 @@ static int osdfunc_unalias(osdcmdptr_t parm)
static int osdfunc_listsymbols(osdcmdptr_t parm) static int osdfunc_listsymbols(osdcmdptr_t parm)
{ {
if (parm->numparms > 1)
return OSDCMD_SHOWHELP;
int maxwidth = 0;
for (auto symb=osd->symbols; symb!=NULL; symb=symb->next)
if (symb->func != OSD_UNALIASED && symb->help != NULL)
maxwidth = max<int>(maxwidth, Bstrlen(symb->name));
if (maxwidth > 0)
{
int width = 0;
int count = 0;
maxwidth += 3;
if (parm->numparms > 0)
OSD_Printf("%sSymbol listing for %s:\n", osd->draw.highlight, parm->parms[0]);
else
OSD_Printf("%sSymbol listing:\n", osd->draw.highlight);
int const parmlen = parm->numparms ? Bstrlen(parm->parms[0]) : 0;
for (auto symb=osd->symbols; symb!=NULL; symb=symb->next)
{
if (symb->func == OSD_UNALIASED || symb->help == NULL || (parm->numparms == 1 && Bstrncmp(parm->parms[0], symb->name, parmlen)))
continue;
int const var = hash_find(&h_cvars, symb->name);
if ((unsigned)var < OSDMAXSYMBOLS && OSD_CvarModified(&osd->cvars[var]))
{
OSD_Printf("%s*", osd->draw.highlight);
OSD_Printf("%-*s", maxwidth-1, symb->name);
}
else
OSD_Printf("%-*s", maxwidth, symb->name);
width += maxwidth;
count++;
if (width > osd->draw.cols - maxwidth)
{
width = 0;
OSD_Printf("\n");
}
}
if (width)
OSD_Printf("\n");
OSD_Printf("%sFound %d symbols\n", osd->draw.highlight, count);
}
return OSDCMD_OK; return OSDCMD_OK;
} }
@ -632,60 +528,6 @@ void OSD_Cleanup(void)
} }
static int osdcmd_cvar_set_osd(osdcmdptr_t parm)
{
int const r = osdcmd_cvar_set(parm);
if (r != OSDCMD_OK)
return r;
if (!Bstrcasecmp(parm->name, "osdrows"))
{
if (osd->draw.rows > osdmaxrows)
osd->draw.rows = osdmaxrows;
if (osdrowscur != -1)
osdrowscur = osd->draw.rows;
}
else if (!Bstrcasecmp(parm->name, "osdtextmode"))
OSD_SetTextMode(osd->draw.mode);
else if (!Bstrcasecmp(parm->name, "osdhistorydepth"))
{
for (auto &i : osd->history.buf)
DO_FREE_AND_NULL(i);
}
return OSDCMD_OK;
}
static int osdfunc_toggle(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_SHOWHELP;
int i = hash_find(&h_cvars, parm->parms[0]);
if (i == -1)
{
for (i = osd->numcvars-1; i>=0; i--)
{
if (!Bstrcasecmp(parm->parms[0], osd->cvars[i].pData->name))
break;
}
}
if (i == -1 || (osd->cvars[i].pData->flags & CVAR_TYPEMASK) != CVAR_BOOL)
{
OSD_Printf("Bad cvar name or cvar not boolean\n");
return OSDCMD_OK;
}
*osd->cvars[i].pData->i32 = 1 - *osd->cvars[i].pData->i32;
osd->cvars[i].pData->flags |= CVAR_MODIFIED;
return OSDCMD_OK;
}
// //
// OSD_Init() -- Initializes the on-screen display // OSD_Init() -- Initializes the on-screen display
// //
@ -714,29 +556,12 @@ void OSD_Init(void)
osd->draw.rows = OSDDEFAULTROWS; osd->draw.rows = OSDDEFAULTROWS;
osd->draw.cols = OSDDEFAULTCOLS; osd->draw.cols = OSDDEFAULTCOLS;
osd->log.cutoff = OSDLOGCUTOFF; osd->log.cutoff = OSDLOGCUTOFF;
OSD_SetTextMode(1);
osd->history.maxlines = OSDMINHISTORYDEPTH; osd->history.maxlines = OSDMINHISTORYDEPTH;
hash_init(&h_osd); hash_init(&h_osd);
hash_init(&h_cvars); hash_init(&h_cvars);
static osdcvardata_t cvars_osd [] =
{
{ "osdeditpal", "sets the palette of the OSD input text", (void *) &osd->draw.editpal, CVAR_INT, 0, MAXPALOOKUPS-1 },
{ "osdpromptpal", "sets the palette of the OSD prompt", (void *) &osd->draw.promptpal, CVAR_INT, 0, MAXPALOOKUPS-1 },
{ "osdtextpal", "sets the palette of the OSD text", (void *) &osd->draw.textpal, CVAR_INT, 0, MAXPALOOKUPS-1 },
{ "osdeditshade", "sets the shade of the OSD input text", (void *) &osd->draw.editshade, CVAR_INT, 0, 7 },
{ "osdtextshade", "sets the shade of the OSD text", (void *) &osd->draw.textshade, CVAR_INT, 0, 7 },
{ "osdpromptshade", "sets the shade of the OSD prompt", (void *) &osd->draw.promptshade, CVAR_INT, INT8_MIN, INT8_MAX },
{ "osdrows", "sets the number of visible lines of the OSD", (void *) &osd->draw.rows, CVAR_INT|CVAR_FUNCPTR, 1, 400 },
{ "osdtextmode", "set OSD text mode (0:graphical, 1:fast)", (void *) &osd->draw.mode, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
{ "osdlogcutoff", "sets the maximal line count of the log file", (void *) &osd->log.cutoff, CVAR_INT, 0, 262144 },
{ "osdhistorydepth", "sets the history depth, in lines", (void *) &osd->history.maxlines, CVAR_INT|CVAR_FUNCPTR, OSDMINHISTORYDEPTH, OSDMAXHISTORYDEPTH },
};
for (auto & i : cvars_osd)
OSD_RegisterCvar(&i, (i.flags & CVAR_FUNCPTR) ? osdcmd_cvar_set_osd : osdcmd_cvar_set);
OSD_RegisterFunction("alias", "alias: creates an alias for calling multiple commands", osdfunc_alias); OSD_RegisterFunction("alias", "alias: creates an alias for calling multiple commands", osdfunc_alias);
OSD_RegisterFunction("clear", "clear: clears the console text buffer", osdfunc_clear); OSD_RegisterFunction("clear", "clear: clears the console text buffer", osdfunc_clear);
OSD_RegisterFunction("echo", "echo [text]: echoes text to the console", osdfunc_echo); OSD_RegisterFunction("echo", "echo [text]: echoes text to the console", osdfunc_echo);
@ -745,8 +570,10 @@ void OSD_Init(void)
OSD_RegisterFunction("help", "help: displays help for a cvar or command; \"listsymbols\" to show all commands", osdfunc_help); OSD_RegisterFunction("help", "help: displays help for a cvar or command; \"listsymbols\" to show all commands", osdfunc_help);
OSD_RegisterFunction("history", "history: displays the console command history", osdfunc_history); OSD_RegisterFunction("history", "history: displays the console command history", osdfunc_history);
OSD_RegisterFunction("listsymbols", "listsymbols: lists all registered functions, cvars and aliases", osdfunc_listsymbols); OSD_RegisterFunction("listsymbols", "listsymbols: lists all registered functions, cvars and aliases", osdfunc_listsymbols);
OSD_RegisterFunction("toggle", "toggle: toggles the value of a boolean cvar", osdfunc_toggle);
OSD_RegisterFunction("unalias", "unalias: removes a command alias", osdfunc_unalias); OSD_RegisterFunction("unalias", "unalias: removes a command alias", osdfunc_unalias);
OSD_RegisterFunction("bind", R"(bind <key> <string>: associates a keypress with a string of console input. Type "bind showkeys" for a list of keys and "listsymbols" for a list of valid console commands.)", osdcmd_bind);
OSD_RegisterFunction("unbind", "unbind <key>: unbinds a key", osdcmd_unbind);
OSD_RegisterFunction("unbindall", "unbindall: unbinds all keys", osdcmd_unbindall);
// atexit(OSD_Cleanup); // atexit(OSD_Cleanup);
} }
@ -773,30 +600,6 @@ void OSD_SetLogFile(const char *fn)
} }
} }
//
// OSD_SetFunctions() -- Sets some callbacks which the OSD uses to understand its world
//
void OSD_SetFunctions(void (*drawchar)(int, int, char, int, int),
void (*drawstr)(int, int, const char *, int, int, int),
void (*drawcursor)(int, int, int, int),
int (*colwidth)(int),
int (*rowheight)(int),
void (*clearbg)(int, int),
int32_t (*gtime)(void),
void (*showosd)(int))
{
drawosdchar = drawchar ? drawchar : _internal_drawosdchar;
drawosdstr = drawstr ? drawstr : _internal_drawosdstr;
drawosdcursor = drawcursor ? drawcursor : _internal_drawosdcursor;
getcolumnwidth = colwidth ? colwidth : _internal_getcolumnwidth;
getrowheight = rowheight ? rowheight : _internal_getrowheight;
clearbackground = clearbg ? clearbg : _internal_clearbackground;
gettime = gtime ? gtime : _internal_gettime;
onshowosd = showosd ? showosd : _internal_onshowosd;
}
// //
// OSD_SetParameters() -- Sets the parameters for presenting the text // OSD_SetParameters() -- Sets the parameters for presenting the text
// //
@ -2078,138 +1881,207 @@ static osdsymbol_t * osd_findexactsymbol(const char *pszName)
return (symbolNum >= 0) ? osd->symbptrs[symbolNum] : NULL; return (symbolNum >= 0) ? osd->symbptrs[symbolNum] : NULL;
} }
int osdcmd_cvar_set(osdcmdptr_t parm) const char* const ConsoleButtons[] =
{ {
int const printValue = (parm->numparms == 0); "mouse1", "mouse2", "mouse3", "mouse4", "mwheelup",
int const cvaridx = hash_findcase(&h_cvars, parm->name); "mwheeldn", "mouse5", "mouse6", "mouse7", "mouse8"
};
#if 0
if (i < 0)
for (i = osd->numcvars-1; i >= 0; i--)
if (!Bstrcasecmp(parm->name, pData.name)) break;
#endif
Bassert(cvaridx >= 0); int osdcmd_bind(osdcmdptr_t parm)
{
char tempbuf[256];
auto pData = *osd->cvars[cvaridx].pData; if (parm->numparms == 1 && !Bstrcasecmp(parm->parms[0], "showkeys"))
if (pData.flags & CVAR_READONLY)
{ {
OSD_Printf("Cvar \"%s\" is read only.\n", pData.name); for (auto& s : sctokeylut)
OSD_Printf("%s\n", s.key);
for (auto ConsoleButton : ConsoleButtons)
OSD_Printf("%s\n", ConsoleButton);
return OSDCMD_OK; return OSDCMD_OK;
} }
switch (pData.flags & CVAR_TYPEMASK) if (parm->numparms == 0)
{ {
case CVAR_FLOAT: int j = 0;
OSD_Printf("Current key bindings:\n");
for (int i = 0; i < NUMKEYS + MAXMOUSEBUTTONS; i++)
if (CONTROL_KeyIsBound(i))
{ {
if (printValue) j++;
{ OSD_Printf("%-9s %s\"%s\"\n", CONTROL_KeyBinds[i].key, CONTROL_KeyBinds[i].repeat ? "" : "norepeat ",
OSD_Printf("\"%s\" is \"%f\"\n%s: %s\n", pData.name, *pData.f, pData.name, pData.desc); CONTROL_KeyBinds[i].cmdstr);
}
if (j == 0)
OSD_Printf("No binds found.\n");
return OSDCMD_OK; return OSDCMD_OK;
} }
Bsscanf(parm->parms[0], "%f", pData.f); int i, j, repeat;
*pData.f = clamp(*pData.f, pData.min, pData.max);
pData.flags |= CVAR_MODIFIED;
if (!OSD_ParsingScript()) for (i = 0; i < ARRAY_SSIZE(sctokeylut); i++)
OSD_Printf("%s %f",pData.name, *pData.f); {
} if (!Bstrcasecmp(parm->parms[0], sctokeylut[i].key))
break; break;
case CVAR_DOUBLE: }
// didn't find the key
if (i == ARRAY_SSIZE(sctokeylut))
{ {
if (printValue) for (i = 0; i < MAXMOUSEBUTTONS; i++)
if (!Bstrcasecmp(parm->parms[0], ConsoleButtons[i]))
break;
if (i >= MAXMOUSEBUTTONS)
return OSDCMD_SHOWHELP;
if (parm->numparms < 2)
{ {
OSD_Printf("\"%s\" is \"%f\"\n%s: %s\n", pData.name, *pData.d, pData.name, pData.desc); if (CONTROL_KeyBinds[NUMKEYS + i].cmdstr && CONTROL_KeyBinds[NUMKEYS + i].key)
OSD_Printf("%-9s %s\"%s\"\n", ConsoleButtons[i], CONTROL_KeyBinds[NUMKEYS + i].repeat ? "" : "norepeat ",
CONTROL_KeyBinds[NUMKEYS + i].cmdstr);
else OSD_Printf("%s is unbound\n", ConsoleButtons[i]);
return OSDCMD_OK; return OSDCMD_OK;
} }
Bsscanf(parm->parms[0], "%lf", pData.d); j = 1;
*pData.d = clamp(*pData.d, pData.min, pData.max);
pData.flags |= CVAR_MODIFIED; repeat = 1;
if (!Bstrcasecmp(parm->parms[j], "norepeat"))
{
repeat = 0;
j++;
}
Bstrcpy(tempbuf, parm->parms[j++]);
for (; j < parm->numparms; j++)
{
Bstrcat(tempbuf, " ");
Bstrcat(tempbuf, parm->parms[j++]);
}
CONTROL_BindMouse(i, tempbuf, repeat, ConsoleButtons[i]);
if (!OSD_ParsingScript()) if (!OSD_ParsingScript())
OSD_Printf("%s %f",pData.name, *pData.d); OSD_Printf("%s\n", parm->raw);
}
break;
case CVAR_INT:
case CVAR_BOOL:
{
if (printValue)
{
OSD_Printf("\"%s\" is \"%d\"\n%s: %s\n", pData.name, *pData.i32, pData.name, pData.desc);
return OSDCMD_OK; return OSDCMD_OK;
} }
*pData.i32 = clamp(Batoi(parm->parms[0]), pData.min, pData.max); if (parm->numparms < 2)
if ((pData.flags & CVAR_TYPEMASK) == CVAR_BOOL)
*pData.i32 = (*pData.i32 != 0);
pData.flags |= CVAR_MODIFIED;
if (!OSD_ParsingScript())
OSD_Printf("%s %d",pData.name, *pData.i32);
}
break;
case CVAR_UINT:
{ {
if (printValue) if (CONTROL_KeyIsBound(sctokeylut[i].sc))
{ OSD_Printf("%-9s %s\"%s\"\n", sctokeylut[i].key, CONTROL_KeyBinds[sctokeylut[i].sc].repeat ? "" : "norepeat ",
OSD_Printf("\"%s\" is \"%u\"\n%s: %s\n", pData.name, *pData.u32, pData.name, pData.desc); CONTROL_KeyBinds[sctokeylut[i].sc].cmdstr);
else OSD_Printf("%s is unbound\n", sctokeylut[i].key);
return OSDCMD_OK; return OSDCMD_OK;
} }
*pData.u32 = clamp(Bstrtoul(parm->parms[0], NULL, 0), pData.min, pData.max); j = 1;
pData.flags |= CVAR_MODIFIED;
repeat = 1;
if (!Bstrcasecmp(parm->parms[j], "norepeat"))
{
repeat = 0;
j++;
}
Bstrcpy(tempbuf, parm->parms[j++]);
for (; j < parm->numparms; j++)
{
Bstrcat(tempbuf, " ");
Bstrcat(tempbuf, parm->parms[j++]);
}
CONTROL_BindKey(sctokeylut[i].sc, tempbuf, repeat, sctokeylut[i].key);
char* cp = tempbuf;
// Populate the keyboard config menu based on the bind.
// Take care of processing one-to-many bindings properly, too.
static char const s_gamefunc_[] = "gamefunc_";
int constexpr strlen_gamefunc_ = ARRAY_SIZE(s_gamefunc_) - 1;
while ((cp = Bstrstr(cp, s_gamefunc_)))
{
cp += strlen_gamefunc_;
char* semi = Bstrchr(cp, ';');
if (semi)
*semi = 0;
j = CONFIG_FunctionNameToNum(cp);
if (semi)
cp = semi + 1;
if (j != -1)
{
KeyboardKeys[j][1] = KeyboardKeys[j][0];
KeyboardKeys[j][0] = sctokeylut[i].sc;
// CONTROL_MapKey(j, sctokeylut[i].sc, KeyboardKeys[j][0]);
if (j == gamefunc_Show_Console)
OSD_CaptureKey(sctokeylut[i].sc);
}
}
if (!OSD_ParsingScript()) if (!OSD_ParsingScript())
OSD_Printf("%s %d", pData.name, *pData.u32); OSD_Printf("%s\n", parm->raw);
}
break;
case CVAR_STRING:
{
if (printValue)
{
OSD_Printf("\"%s\" is \"%s\"\n%s: %s\n", pData.name, pData.string, pData.name, pData.desc);
return OSDCMD_OK;
}
Bstrncpy(pData.string, parm->parms[0], pData.max-1);
(pData.string)[pData.max-1] = 0;
pData.flags |= CVAR_MODIFIED;
if (!OSD_ParsingScript())
OSD_Printf("%s %s",pData.name, pData.string);
}
break;
default:
EDUKE32_UNREACHABLE_SECTION(break);
}
#ifdef USE_OPENGL
if (!OSD_ParsingScript())
{
switch (pData.flags & (CVAR_RESTARTVID|CVAR_INVALIDATEALL|CVAR_INVALIDATEART))
{
case CVAR_RESTARTVID:
//osdcmd_restartvid(NULL);
break;
case CVAR_INVALIDATEALL:
TileFiles.ClearTextureCache(false);
break;
case CVAR_INVALIDATEART:
TileFiles.ClearTextureCache(true);
break;
}
}
#endif
if (!OSD_ParsingScript())
OSD_Printf("\n");
return OSDCMD_OK; return OSDCMD_OK;
} }
int osdcmd_unbindall(osdcmdptr_t UNUSED(parm))
{
UNREFERENCED_CONST_PARAMETER(parm);
for (int i = 0; i < NUMKEYS; ++i)
CONTROL_FreeKeyBind(i);
for (int i = 0; i < MAXMOUSEBUTTONS; ++i)
CONTROL_FreeMouseBind(i);
for (auto& KeyboardKey : KeyboardKeys)
KeyboardKey[0] = KeyboardKey[1] = 0xff;
if (!OSD_ParsingScript())
OSD_Printf("unbound all controls\n");
return OSDCMD_OK;
}
int osdcmd_unbind(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_SHOWHELP;
for (auto& ConsoleKey : sctokeylut)
{
if (ConsoleKey.key && !Bstrcasecmp(parm->parms[0], ConsoleKey.key))
{
CONTROL_FreeKeyBind(ConsoleKey.sc);
OSD_Printf("unbound key %s\n", ConsoleKey.key);
return OSDCMD_OK;
}
}
for (int i = 0; i < MAXMOUSEBUTTONS; i++)
{
if (!Bstrcasecmp(parm->parms[0], ConsoleButtons[i]))
{
CONTROL_FreeMouseBind(i);
OSD_Printf("unbound %s\n", ConsoleButtons[i]);
return OSDCMD_OK;
}
}
return OSDCMD_SHOWHELP;
}

View file

@ -467,6 +467,7 @@ void FGameConfigFile::ArchiveGameData (const char *gamename)
} }
} }
#if 0 // This somehow does not work. The Build console sucks.
strncpy(subsection, "ConsoleAliases", sublen); strncpy(subsection, "ConsoleAliases", sublen);
if (SetSection(section, true)) if (SetSection(section, true))
{ {
@ -480,6 +481,7 @@ void FGameConfigFile::ArchiveGameData (const char *gamename)
} }
} }
#endif #endif
#endif
} }
void FGameConfigFile::ArchiveGlobalData () void FGameConfigFile::ArchiveGlobalData ()

View file

@ -361,6 +361,7 @@ int CONFIG_Init()
{ {
return 1; return 1;
} }
userConfig.ProcessOptions(); userConfig.ProcessOptions();
G_LoadConfig(); G_LoadConfig();
@ -1456,208 +1457,3 @@ void CONFIG_WriteControllerSettings()
} }
} }
} }
const char* const ConsoleButtons[] =
{
"mouse1", "mouse2", "mouse3", "mouse4", "mwheelup",
"mwheeldn", "mouse5", "mouse6", "mouse7", "mouse8"
};
int osdcmd_bind(osdcmdptr_t parm)
{
char tempbuf[256];
if (parm->numparms == 1 && !Bstrcasecmp(parm->parms[0], "showkeys"))
{
for (auto& s : sctokeylut)
OSD_Printf("%s\n", s.key);
for (auto ConsoleButton : ConsoleButtons)
OSD_Printf("%s\n", ConsoleButton);
return OSDCMD_OK;
}
if (parm->numparms == 0)
{
int j = 0;
OSD_Printf("Current key bindings:\n");
for (int i = 0; i < NUMKEYS + MAXMOUSEBUTTONS; i++)
if (CONTROL_KeyIsBound(i))
{
j++;
OSD_Printf("%-9s %s\"%s\"\n", CONTROL_KeyBinds[i].key, CONTROL_KeyBinds[i].repeat ? "" : "norepeat ",
CONTROL_KeyBinds[i].cmdstr);
}
if (j == 0)
OSD_Printf("No binds found.\n");
return OSDCMD_OK;
}
int i, j, repeat;
for (i = 0; i < ARRAY_SSIZE(sctokeylut); i++)
{
if (!Bstrcasecmp(parm->parms[0], sctokeylut[i].key))
break;
}
// didn't find the key
if (i == ARRAY_SSIZE(sctokeylut))
{
for (i = 0; i < MAXMOUSEBUTTONS; i++)
if (!Bstrcasecmp(parm->parms[0], ConsoleButtons[i]))
break;
if (i >= MAXMOUSEBUTTONS)
return OSDCMD_SHOWHELP;
if (parm->numparms < 2)
{
if (CONTROL_KeyBinds[NUMKEYS + i].cmdstr && CONTROL_KeyBinds[NUMKEYS + i].key)
OSD_Printf("%-9s %s\"%s\"\n", ConsoleButtons[i], CONTROL_KeyBinds[NUMKEYS + i].repeat ? "" : "norepeat ",
CONTROL_KeyBinds[NUMKEYS + i].cmdstr);
else OSD_Printf("%s is unbound\n", ConsoleButtons[i]);
return OSDCMD_OK;
}
j = 1;
repeat = 1;
if (!Bstrcasecmp(parm->parms[j], "norepeat"))
{
repeat = 0;
j++;
}
Bstrcpy(tempbuf, parm->parms[j++]);
for (; j < parm->numparms; j++)
{
Bstrcat(tempbuf, " ");
Bstrcat(tempbuf, parm->parms[j++]);
}
CONTROL_BindMouse(i, tempbuf, repeat, ConsoleButtons[i]);
if (!OSD_ParsingScript())
OSD_Printf("%s\n", parm->raw);
return OSDCMD_OK;
}
if (parm->numparms < 2)
{
if (CONTROL_KeyIsBound(sctokeylut[i].sc))
OSD_Printf("%-9s %s\"%s\"\n", sctokeylut[i].key, CONTROL_KeyBinds[sctokeylut[i].sc].repeat ? "" : "norepeat ",
CONTROL_KeyBinds[sctokeylut[i].sc].cmdstr);
else OSD_Printf("%s is unbound\n", sctokeylut[i].key);
return OSDCMD_OK;
}
j = 1;
repeat = 1;
if (!Bstrcasecmp(parm->parms[j], "norepeat"))
{
repeat = 0;
j++;
}
Bstrcpy(tempbuf, parm->parms[j++]);
for (; j < parm->numparms; j++)
{
Bstrcat(tempbuf, " ");
Bstrcat(tempbuf, parm->parms[j++]);
}
CONTROL_BindKey(sctokeylut[i].sc, tempbuf, repeat, sctokeylut[i].key);
char* cp = tempbuf;
// Populate the keyboard config menu based on the bind.
// Take care of processing one-to-many bindings properly, too.
static char const s_gamefunc_[] = "gamefunc_";
int constexpr strlen_gamefunc_ = ARRAY_SIZE(s_gamefunc_) - 1;
while ((cp = Bstrstr(cp, s_gamefunc_)))
{
cp += strlen_gamefunc_;
char* semi = Bstrchr(cp, ';');
if (semi)
*semi = 0;
j = CONFIG_FunctionNameToNum(cp);
if (semi)
cp = semi + 1;
if (j != -1)
{
KeyboardKeys[j][1] = KeyboardKeys[j][0];
KeyboardKeys[j][0] = sctokeylut[i].sc;
// CONTROL_MapKey(j, sctokeylut[i].sc, KeyboardKeys[j][0]);
if (j == gamefunc_Show_Console)
OSD_CaptureKey(sctokeylut[i].sc);
}
}
if (!OSD_ParsingScript())
OSD_Printf("%s\n", parm->raw);
return OSDCMD_OK;
}
int osdcmd_unbindall(osdcmdptr_t UNUSED(parm))
{
UNREFERENCED_CONST_PARAMETER(parm);
for (int i = 0; i < NUMKEYS; ++i)
CONTROL_FreeKeyBind(i);
for (int i = 0; i < MAXMOUSEBUTTONS; ++i)
CONTROL_FreeMouseBind(i);
for (auto& KeyboardKey : KeyboardKeys)
KeyboardKey[0] = KeyboardKey[1] = 0xff;
if (!OSD_ParsingScript())
OSD_Printf("unbound all controls\n");
return OSDCMD_OK;
}
int osdcmd_unbind(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_SHOWHELP;
for (auto& ConsoleKey : sctokeylut)
{
if (ConsoleKey.key && !Bstrcasecmp(parm->parms[0], ConsoleKey.key))
{
CONTROL_FreeKeyBind(ConsoleKey.sc);
OSD_Printf("unbound key %s\n", ConsoleKey.key);
return OSDCMD_OK;
}
}
for (int i = 0; i < MAXMOUSEBUTTONS; i++)
{
if (!Bstrcasecmp(parm->parms[0], ConsoleButtons[i]))
{
CONTROL_FreeMouseBind(i);
OSD_Printf("unbound %s\n", ConsoleButtons[i]);
return OSDCMD_OK;
}
}
return OSDCMD_SHOWHELP;
}

View file

@ -65,11 +65,6 @@ void CONFIG_SetGameControllerDefaultsClear();
FString CONFIG_GetBoundKeyForLastInput(int gameFunc); FString CONFIG_GetBoundKeyForLastInput(int gameFunc);
int osdcmd_bind(osdcmdptr_t parm);
int osdcmd_unbindall(osdcmdptr_t);
int osdcmd_unbind(osdcmdptr_t parm);
extern FStringCVar* const CombatMacros[]; extern FStringCVar* const CombatMacros[];
void CONFIG_ReadCombatMacros(); void CONFIG_ReadCombatMacros();

View file

@ -50,7 +50,6 @@ set( PCH_SOURCES
src/namesdyn.cpp src/namesdyn.cpp
src/network.cpp src/network.cpp
src/osdcmds.cpp src/osdcmds.cpp
src/osdfuncs.cpp
src/player.cpp src/player.cpp
src/premap.cpp src/premap.cpp
src/savegame.cpp src/savegame.cpp

View file

@ -27,7 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "duke3d.h" #include "duke3d.h"
#include "compat.h" #include "compat.h"
#include "renderlayer.h" #include "renderlayer.h"
#include "osdfuncs.h"
#include "osdcmds.h" #include "osdcmds.h"
#include "crc32_.h" #include "crc32_.h"
#include "network.h" #include "network.h"
@ -6131,15 +6130,6 @@ EDUKE32_STATIC_ASSERT(sizeof(DukePlayer_t)%4 == 0);
int app_main() int app_main()
{ {
OSD_SetFunctions(GAME_drawosdchar,
GAME_drawosdstr,
GAME_drawosdcursor,
GAME_getcolumnwidth,
GAME_getrowheight,
GAME_clearbackground,
BGetTime,
GAME_onshowosd);
g_skillCnt = 4; g_skillCnt = 4;
ud.multimode = 1; ud.multimode = 1;
ud.m_monsters_off = userConfig.nomonsters; ud.m_monsters_off = userConfig.nomonsters;

View file

@ -29,7 +29,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "demo.h" // g_firstDemoFile[] #include "demo.h" // g_firstDemoFile[]
#include "duke3d.h" #include "duke3d.h"
#include "menus.h" #include "menus.h"
#include "osdfuncs.h"
#include "savegame.h" #include "savegame.h"
#include "sbar.h" #include "sbar.h"
@ -1153,7 +1152,6 @@ int32_t registerosdcommands(void)
OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo); OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);
} }
OSD_RegisterFunction("bind",R"(bind <key> <string>: associates a keypress with a string of console input. Type "bind showkeys" for a list of keys and "listsymbols" for a list of valid console commands.)", osdcmd_bind);
OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu); OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor); OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor);
@ -1193,8 +1191,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("unbind","unbind <key>: unbinds a key", osdcmd_unbind);
OSD_RegisterFunction("unbindall","unbindall: unbinds all keys", osdcmd_unbindall);
OSD_RegisterFunction("unbound", NULL, osdcmd_unbound); 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);

View file

@ -1,128 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 2010 EDuke32 developers and contributors
This file is part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#include "ns.h" // Must come before everything else!
#include "compat.h"
#include "duke3d.h"
#include "build.h"
#include "namesdyn.h"
#include "osdfuncs.h"
#include "premap.h"
BEGIN_DUKE_NS
int osdshown = 0;
float osdscale = 2.f, osdrscale = 0.5f;
#define OSD_SCALE(x) (osdscale != 1.f ? Blrintf(osdscale*(float)(x)) : (x))
#define OSD_SCALEDIV(x) Blrintf((float)(x) * osdrscale)
#define OSDCHAR_WIDTH (tilesiz[STARTALPHANUM + 'A' - '!'].x)
#define OSDCHAR_HEIGHT (tilesiz[STARTALPHANUM + 'A' - '!'].y + 1)
static inline CONSTEXPR int GAME_isspace(int ch)
{
return (ch==32 || ch==9);
}
static inline int GAME_getchartile(int ch)
{
const int ac = ch-'!'+STARTALPHANUM;
return (ac < STARTALPHANUM || ac > ENDALPHANUM) ? -1 : ac;
}
void GAME_drawosdchar(int x, int y, char ch, int shade, int pal)
{
int ac;
if (GAME_isspace(ch)) return;
if ((ac = GAME_getchartile(ch)) == -1)
return;
rotatesprite_fs(OSD_SCALE((OSDCHAR_WIDTH*x)<<16),
OSD_SCALE((y*OSDCHAR_HEIGHT)<<16),
OSD_SCALE(65536.f), 0, ac, shade, pal, 8|16);
}
void GAME_drawosdstr(int x, int y, const char *ch, int len, int shade, int pal)
{
int ac;
x *= OSDCHAR_WIDTH;
do
{
if (!GAME_isspace(*ch))
if ((ac = GAME_getchartile(*ch)) >= 0)
{
OSD_GetShadePal(ch, &shade, &pal);
rotatesprite_fs(OSD_SCALE(x<<16), OSD_SCALE((y*OSDCHAR_HEIGHT)<<16),
OSD_SCALE(65536.f), 0, ac, shade, pal, 8|16);
}
x += OSDCHAR_WIDTH;
ch++;
}
while (--len);
}
void GAME_drawosdcursor(int x, int y, int type, int32_t lastkeypress)
{
int ac = (type) ? SMALLFNTCURSOR : '_' - '!' + STARTALPHANUM;
if (((BGetTime()-lastkeypress) & 0x40)==0)
rotatesprite_fs(OSD_SCALE((OSDCHAR_WIDTH*x)<<16),
OSD_SCALE(((y*OSDCHAR_HEIGHT)+(type?-1:2))<<16),
OSD_SCALE(65536.f), 0, ac, 0, 8, 8|16);
}
int GAME_getcolumnwidth(int w)
{
return OSD_SCALEDIV(w/OSDCHAR_WIDTH);
}
int GAME_getrowheight(int h)
{
return OSD_SCALEDIV(h/OSDCHAR_HEIGHT);
}
void GAME_onshowosd(int shown)
{
G_UpdateScreenArea();
mouseLockToWindow((!shown) + 2);
osdshown = shown;
}
void GAME_clearbackground(int numcols, int numrows)
{
void COMMON_doclearbackground(int numcols, int numrows);
int const i8n8 = OSD_SCALE(OSDCHAR_HEIGHT * numrows);
COMMON_doclearbackground(numcols, i8n8 + OSDCHAR_HEIGHT);
}
#undef OSD_SCALE
END_DUKE_NS

View file

@ -1,36 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 2010 EDuke32 developers and contributors
This file is part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
BEGIN_DUKE_NS
void GAME_drawosdchar(int32_t x, int32_t y, char ch, int32_t shade, int32_t pal);
void GAME_drawosdstr(int32_t x, int32_t y, const char *ch, int32_t len, int32_t shade, int32_t pal);
void GAME_drawosdcursor(int32_t x, int32_t y, int32_t type, int32_t lastkeypress);
int32_t GAME_getcolumnwidth(int32_t w);
int32_t GAME_getrowheight(int32_t h);
void GAME_onshowosd(int32_t shown);
void GAME_clearbackground(int32_t numcols, int32_t numrows);
extern int osdshown;
extern float osdscale, osdrscale;
END_DUKE_NS

View file

@ -47,7 +47,6 @@ set( PCH_SOURCES
src/namesdyn.cpp src/namesdyn.cpp
src/net.cpp src/net.cpp
src/osdcmds.cpp src/osdcmds.cpp
src/osdfuncs.cpp
src/player.cpp src/player.cpp
src/premap.cpp src/premap.cpp
src/savegame.cpp src/savegame.cpp

View file

@ -27,7 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "duke3d.h" #include "duke3d.h"
#include "compat.h" #include "compat.h"
#include "renderlayer.h" #include "renderlayer.h"
#include "osdfuncs.h"
#include "osdcmds.h" #include "osdcmds.h"
#include "crc32_.h" #include "crc32_.h"
#include "net.h" #include "net.h"
@ -7539,15 +7538,6 @@ EDUKE32_STATIC_ASSERT(sizeof(DukePlayer_t)%4 == 0);
int app_main() int app_main()
{ {
playing_rr = 1; playing_rr = 1;
OSD_SetFunctions(GAME_drawosdchar,
GAME_drawosdstr,
GAME_drawosdcursor,
GAME_getcolumnwidth,
GAME_getrowheight,
GAME_clearbackground,
BGetTime,
GAME_onshowosd);
g_skillCnt = 4; g_skillCnt = 4;
ud.multimode = 1; ud.multimode = 1;
ud.m_monsters_off = userConfig.nomonsters; ud.m_monsters_off = userConfig.nomonsters;
@ -7575,8 +7565,6 @@ int app_main()
if (RR) if (RR)
{ {
osdscale2 *= 0.5f;
osdrscale2 = 1.f / osdscale2;
g_cdTrack = -1; g_cdTrack = -1;
} }

View file

@ -27,7 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "duke3d.h" #include "duke3d.h"
#include "menus.h" #include "menus.h"
#include "osdcmds.h" #include "osdcmds.h"
#include "osdfuncs.h"
#include "savegame.h" #include "savegame.h"
#include "sbar.h" #include "sbar.h"
@ -933,7 +932,6 @@ int32_t registerosdcommands(void)
OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo); OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);
} }
OSD_RegisterFunction("bind",R"(bind <key> <string>: associates a keypress with a string of console input. Type "bind showkeys" for a list of keys and "listsymbols" for a list of valid console commands.)", osdcmd_bind);
OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu); OSD_RegisterFunction("cmenu","cmenu <#>: jumps to menu", osdcmd_cmenu);
OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor); OSD_RegisterFunction("crosshaircolor","crosshaircolor: changes the crosshair color", osdcmd_crosshaircolor);
@ -980,9 +978,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("unbind","unbind <key>: unbinds a key", osdcmd_unbind);
OSD_RegisterFunction("unbindall","unbindall: unbinds all keys", osdcmd_unbindall);
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

@ -1,141 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 2010 EDuke32 developers and contributors
This file is part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#include "ns.h" // Must come before everything else!
#include "compat.h"
#include "duke3d.h"
#include "build.h"
#include "namesdyn.h"
#include "osdfuncs.h"
#include "premap.h"
BEGIN_RR_NS
int32_t osdshown = 0;
float osdscale = 2.f, osdrscale = 0.5f;
float osdscale2 = 1.f, osdrscale2 = 1.f;
template<class valtype>
int32_t OSD_SCALE(valtype x)
{
return (int32_t)Blrintf(osdscale * osdscale2 * (float)(x));
}
template<class valtype>
int32_t OSD_SCALEDIV(valtype x)
{
return (int32_t)Blrintf((float)(x)* osdrscale * osdrscale2);
}
#define OSDCHAR_WIDTH (tilesiz[STARTALPHANUM + 'W' - '!'].x)
#define OSDCHAR_HEIGHT (tilesiz[STARTALPHANUM + 'W' - '!'].y + 1)
static inline int32_t GAME_isspace(int32_t ch)
{
return (ch==32 || ch==9);
}
static inline int32_t GAME_getchartile(int32_t ch)
{
const int32_t ac = ch-'!'+STARTALPHANUM;
return (ac < STARTALPHANUM || ac > ENDALPHANUM) ? -1 : ac;
}
void GAME_drawosdchar(int32_t x, int32_t y, char ch, int32_t shade, int32_t pal)
{
int16_t ac;
if (GAME_isspace(ch)) return;
if ((ac = GAME_getchartile(ch)) == -1)
return;
rotatesprite_fs(OSD_SCALE((OSDCHAR_WIDTH*x)<<16),
OSD_SCALE((y*OSDCHAR_HEIGHT)<<16),
OSD_SCALE(65536.f), 0, ac, shade, pal, 8|16);
}
void GAME_drawosdstr(int32_t x, int32_t y, const char *ch, int32_t len, int32_t shade, int32_t pal)
{
int16_t ac;
x *= OSDCHAR_WIDTH;
do
{
if (!GAME_isspace(*ch))
if ((ac = GAME_getchartile(*ch)) >= 0)
{
OSD_GetShadePal(ch, &shade, &pal);
rotatesprite_fs(OSD_SCALE(x<<16), OSD_SCALE((y*OSDCHAR_HEIGHT)<<16),
OSD_SCALE(65536.f), 0, ac, shade, pal, 8|16);
}
x += OSDCHAR_WIDTH;
ch++;
}
while (--len);
}
void GAME_drawosdcursor(int32_t x, int32_t y, int32_t type, int32_t lastkeypress)
{
int16_t ac;
if (type) ac = SMALLFNTCURSOR;
else ac = '_'-'!'+STARTALPHANUM;
if (((BGetTime()-lastkeypress) & 0x40)==0)
rotatesprite_fs(OSD_SCALE((OSDCHAR_WIDTH*x)<<16),
OSD_SCALE(((y*OSDCHAR_HEIGHT)+(type?-1:2))<<16),
OSD_SCALE(65536.f), 0, ac, 0, 8, 8|16);
}
int32_t GAME_getcolumnwidth(int32_t w)
{
return OSD_SCALEDIV(w/OSDCHAR_WIDTH);
}
int32_t GAME_getrowheight(int32_t h)
{
return OSD_SCALEDIV(h/OSDCHAR_HEIGHT);
}
void GAME_onshowosd(int32_t shown)
{
G_UpdateScreenArea();
mouseLockToWindow((!shown) + 2);
osdshown = shown;
}
void GAME_clearbackground(int numcols, int numrows)
{
void COMMON_doclearbackground(int numcols, int numrows);
int const i8n8 = OSD_SCALE(OSDCHAR_HEIGHT * numrows);
COMMON_doclearbackground(numcols, i8n8 + OSDCHAR_HEIGHT);
}
#undef OSD_SCALE
END_RR_NS

View file

@ -1,37 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 2010 EDuke32 developers and contributors
This file is part of EDuke32.
EDuke32 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
BEGIN_RR_NS
void GAME_drawosdchar(int32_t x, int32_t y, char ch, int32_t shade, int32_t pal);
void GAME_drawosdstr(int32_t x, int32_t y, const char *ch, int32_t len, int32_t shade, int32_t pal);
void GAME_drawosdcursor(int32_t x, int32_t y, int32_t type, int32_t lastkeypress);
int32_t GAME_getcolumnwidth(int32_t w);
int32_t GAME_getrowheight(int32_t h);
void GAME_onshowosd(int32_t shown);
void GAME_clearbackground(int32_t numcols, int32_t numrows);
extern int32_t osdshown;
extern float osdscale, osdrscale;
extern float osdscale2, osdrscale2;
END_RR_NS

View file

@ -29,7 +29,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "anim.h" #include "anim.h"
#include "sbar.h" #include "sbar.h"
#include "menus.h" #include "menus.h"
#include "osdfuncs.h"
#include "demo.h" #include "demo.h"
#include "mdsprite.h" #include "mdsprite.h"
#include "gamecvars.h" #include "gamecvars.h"