Merge branch 'next' into accelerometer

This commit is contained in:
minenice55 2026-03-03 22:02:59 -05:00
commit 6825f64203
13 changed files with 166 additions and 39 deletions

View file

@ -212,6 +212,8 @@ static textcmdtic_t *textcmds[TEXTCMD_HASH_SIZE] = {NULL};
consvar_t cv_showjoinaddress = CVAR_INIT ("showjoinaddress", "Off", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_shownodeip = CVAR_INIT ("showipinnodelist", "Off", CV_SAVE, CV_OnOff, NULL);
static CV_PossibleValue_t playbackspeed_cons_t[] = {{1, "MIN"}, {10, "MAX"}, {0, NULL}};
consvar_t cv_playbackspeed = CVAR_INIT ("playbackspeed", "1", 0, playbackspeed_cons_t, NULL);
@ -2918,7 +2920,7 @@ static void Command_Nodes(void)
if (playernode[i] != UINT8_MAX)
{
CONS_Printf(" - node %.2d", playernode[i]);
if (I_GetNodeAddress && (address = I_GetNodeAddress(playernode[i])) != NULL)
if ((I_GetNodeAddress && (address = I_GetNodeAddress(playernode[i])) != NULL) && (cv_shownodeip.value))
CONS_Printf(" - %s", address);
}
@ -2933,6 +2935,102 @@ static void Command_Nodes(void)
}
}
static void Command_Listplayers(void)
{
const char *address;
int width = 0;
boolean admin;
boolean spectator;
/*
Mode of player status for an individual player (admin, spectator).
1 for admin
2 for spectator
4 for both
*/
int mode = 0;
INT32 totalplayers = 0;
const char *cc;
char pcc[2];
INT32 i;
int n;
for (i = 0; i < MAXPLAYERS; ++i)
if (playeringame[i])
{
n = strlen(player_names[i]);
if (n > width)
width = n;
if (mode != 7)
{
admin = IsPlayerAdmin(i);
spectator = players[i].spectator;
if (admin)
mode |= 1;
if (spectator)
mode |= 2;
if (admin && spectator)
mode |= 4;
}
}
for (i = 0; i < MAXPLAYERS; ++i)
if (playeringame[i])
{
admin = IsPlayerAdmin(i);
spectator = players[i].spectator;
if (admin)
cc = "\x85";/* red */
else if (spectator)
cc = "\x86";/* gray */
else
cc = "";
UINT16 chatcolor = skincolors[players[i].skincolor].chatcolor;
if (chatcolor > V_TANMAP)
{
sprintf(pcc, "%c", '\x80');
}
else
{
sprintf(pcc, "%c", '\x80' + (chatcolor >> V_CHARCOLORSHIFT));
}
CONS_Printf("%.2d: ""%s""%-*s""\x80", i, pcc,width, player_names[i]);
if ((I_GetNodeAddress && (address = I_GetNodeAddress(playernode[i])) != NULL) && (cv_shownodeip.value))
CONS_Printf(" -- %s", address);
else/* print spacer */
{
/* ...but not if there's a crammed status and were admin */
if (mode != 7 || !admin)
CONS_Printf(" -- ");/* -- self */
}
if (admin)
CONS_Printf(M_GetText("%s"" (admin)"),cc);
if (spectator)
CONS_Printf(M_GetText("%s"" (spectator)"),cc);
CONS_Printf("\n");
totalplayers++;
}
if (totalplayers == 1)
CONS_Printf("\nThere is 1 player in the game.\n");
else
CONS_Printf("\nThere are %d players in the game.\n", totalplayers);
}
static void Command_Ban(void)
{
if (COM_Argc() < 2)
@ -3542,6 +3640,7 @@ void D_ClientServerInit(void)
COM_AddCommand("reloadbans", Command_ReloadBan);
COM_AddCommand("connect", Command_connect);
COM_AddCommand("nodes", Command_Nodes);
COM_AddCommand("listplayers", Command_Listplayers);
#ifdef HAVE_CURL
COM_AddCommand("set_http_login", Command_set_http_login);
COM_AddCommand("list_http_logins", Command_list_http_logins);

View file

@ -437,6 +437,7 @@ extern consvar_t cv_httpsource;
extern consvar_t cv_kicktime;
extern consvar_t cv_showjoinaddress;
extern consvar_t cv_shownodeip;
extern consvar_t cv_playbackspeed;
extern consvar_t cv_connectawaittime;

View file

@ -1132,6 +1132,7 @@ void D_RegisterServerCommands(void)
CV_RegisterVar(&cv_joinnextround);
#endif
CV_RegisterVar(&cv_showjoinaddress);
CV_RegisterVar(&cv_shownodeip);
CV_RegisterVar(&cv_blamecfail);
COM_AddCommand("ping", Command_Ping_f);

View file

@ -1027,6 +1027,11 @@ struct int_const_s const INT_CONST[] = {
{"RF_DROPSHADOW",RF_DROPSHADOW},
{"RF_ABSOLUTELIGHTLEVEL",RF_ABSOLUTELIGHTLEVEL},
{"RF_HIDEINSKYBOX",RF_HIDEINSKYBOX},
#ifdef HWRENDER
{"RF_NOMODEL",RF_NOMODEL},
#else
{"RF_NOMODEL",0},
#endif
{"RF_DONTDRAW",RF_DONTDRAW},
{"RF_DONTDRAWP1",RF_DONTDRAWP1},
{"RF_DONTDRAWP2",RF_DONTDRAWP2},

View file

@ -929,6 +929,7 @@ const char *blancredits[] = {
"\"Superstarxalien\"", // Horncode
"\"Freaky Mutant Man\"", // Color profiles menu
"\"blondedradio\"", // Screen-tracking item roulette, lifted near-directly from RadioRacers
"\"Antoine De Grandpré\"", // Zero Deadzone fix
"",
"\1Item Design",
"\"NepDisk\"",

View file

@ -1291,7 +1291,7 @@ retrygetcontrol:
value = gamekeydown[deviceID][key];
if (value >= deadzone)
if (value > deadzone)
{
return value;
}
@ -1704,8 +1704,17 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
return;
}
fixed_t deadZoneY = cv_deadzoney[forplayer].value;
const double deadZoneYDecimal = (double) deadZoneY / FRACUNIT;
joystickvector.xaxis = G_PlayerInputAnalog(forplayer, gc_turnright, false, DEADZONE_X) - G_PlayerInputAnalog(forplayer, gc_turnleft, false, DEADZONE_X);
joystickvector.yaxis = 0;
if (deadZoneYDecimal <= 0)
{
joystickvector.yaxis = G_PlayerInputAnalog(forplayer, gc_aimbackward, false, DEADZONE_Y) - G_PlayerInputAnalog(forplayer, gc_aimforward, false, DEADZONE_Y);
}
else
{
joystickvector.yaxis = 0;
}
G_HandleAxisDeadZone(forplayer, &joystickvector);
if (joystickvector.xaxis != 0)
@ -1727,7 +1736,12 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
// use it for aiming to throw items forward/backward and the vote screen
// This mean that the turn axis will still be gradient but up/down will be 0
// until the stick is pushed far enough
joystickvector.yaxis = G_PlayerInputAnalog(forplayer, gc_aimbackward, false, DEADZONE_Y) - G_PlayerInputAnalog(forplayer, gc_aimforward, false, DEADZONE_Y);
//
// When the deadzone is set to 0 or lower, the aim axis returns to analog to avoid breaking the chasecam and freecam controls
if (deadZoneYDecimal > 0)
{
joystickvector.yaxis = G_PlayerInputAnalog(forplayer, gc_aimbackward, false, DEADZONE_Y) - G_PlayerInputAnalog(forplayer, gc_aimforward, false, DEADZONE_Y);
}
if (encoremode)
{

View file

@ -239,7 +239,7 @@ void HWR_DrawStretchyFixedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t p
blendmode++; // realign to constants
if ((alphalevel = ((option & V_ALPHAMASK) >> V_ALPHASHIFT)) || blendmode)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
Surf.PolyColor.s.red = Surf.PolyColor.s.green = Surf.PolyColor.s.blue = 0xff;
flags |= HWR_GetBlendModeFlag(blendmode);
@ -364,7 +364,7 @@ void HWR_DrawAffinePatch(patch_t *gpatch, fixed_t x, fixed_t y, const affine_t *
blendmode++; // realign to constants
if (alphalevel || blendmode)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
Surf.PolyColor.s.red = Surf.PolyColor.s.green = Surf.PolyColor.s.blue = 0xff;
flags |= HWR_GetBlendModeFlag(blendmode);
@ -516,7 +516,7 @@ void HWR_DrawCroppedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscale,
blendmode++; // realign to constants
if ((alphalevel = ((option & V_ALPHAMASK) >> V_ALPHASHIFT)) || blendmode)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
Surf.PolyColor.s.red = Surf.PolyColor.s.green = Surf.PolyColor.s.blue = 0xff;
flags |= HWR_GetBlendModeFlag(blendmode);
@ -636,7 +636,7 @@ void HWR_DrawFlatFill(INT32 x, INT32 y, INT32 w, INT32 h, lumpnum_t flatlumpnum)
void HWR_FadeScreenMenuBack(UINT16 color, UINT8 strength)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
v[0].x = v[3].x = -1.0f;
v[2].x = v[1].x = 1.0f;
@ -682,7 +682,7 @@ void HWR_FadeScreenMenuBack(UINT16 color, UINT8 strength)
void HWR_DrawFadeFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT16 actualcolor, UINT8 strength)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float fx, fy, fw, fh;
// 3--2
@ -762,7 +762,7 @@ void HWR_DrawFadeFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT16 ac
void HWR_DrawConsoleBack(UINT32 color, INT32 height)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
// setup some neat-o translucency effect
if (!height) //cool hack 0 height is full height
@ -788,7 +788,7 @@ void HWR_DrawConsoleBack(UINT32 color, INT32 height)
void HWR_EncoreInvertScreen(void)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
v[0].x = v[3].x = -1.0f;
v[2].x = v[1].x = 1.0f;
@ -810,7 +810,7 @@ void HWR_EncoreInvertScreen(void)
void HWR_DrawTutorialBack(UINT32 color, INT32 boxheight)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
INT32 height;
if (boxheight < 0)
height = -boxheight;
@ -867,7 +867,7 @@ void HWR_drawAMline(const fline_t *fl, INT32 color)
void HWR_DrawDiag(INT32 x, INT32 y, INT32 wh, INT32 color)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float fx, fy, fw, fh, fwait = 0;
if (wh < 0)
@ -961,7 +961,7 @@ void HWR_DrawDiag(INT32 x, INT32 y, INT32 wh, INT32 color)
void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT32 actualcolor)
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float fx, fy, fw, fh;
// 3--2
@ -1041,7 +1041,7 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
{
FOutVector v[4];
FBITFIELD flags;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float fx, fy, fw, fh;
UINT8 alphalevel = ((color & V_ALPHAMASK) >> V_ALPHASHIFT);
UINT8 blendmode = ((color & V_BLENDMASK) >> V_BLENDSHIFT);

View file

@ -816,7 +816,7 @@ void HWR_WallLighting(FOutVector *wlVerts)
for (j = 0; j < dynlights->nb; j++)
{
FVector inter;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float dist_p2d, d[4], s;
if (!dynlights->mo[j])
@ -904,7 +904,7 @@ void HWR_PlaneLighting(FOutVector *clVerts, int nrClipVerts)
for (j = 0; j < dynlights->nb; j++)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float dist_p2d, s;
if (!dynlights->mo[j])
@ -979,7 +979,7 @@ void HWR_DoCoronasLighting(FOutVector *outVerts, gl_vissprite_t *spr)
if (cv_glcoronas.value && (p_lspr->type & CORONA_SPR))
{ // it's an object which emits light
FOutVector light[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float cx = 0.0f, cy = 0.0f, cz = 0.0f; // gravity center
float size;
UINT8 i;
@ -1065,7 +1065,7 @@ void HWR_DrawCoronas(void)
for (j = 0;j < dynlights->nb;j++)
{
FOutVector light[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
float cx = LIGHT_POS(j).x;
float cy = LIGHT_POS(j).y;
float cz = LIGHT_POS(j).z; // gravity center

View file

@ -1076,7 +1076,7 @@ static void HWR_ProcessSeg(void) // Sort of like GLWall::Process in GZDoom
FUINT lightnum = 255;
extracolormap_t *colormap = gl_frontsector->extra_colormap;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
Surf.PolyColor.s.alpha = 255;
tripwire = P_IsLineTripWire(gl_linedef);
@ -2427,7 +2427,7 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
FBITFIELD blendmode, UINT8 lightlevel, levelflat_t *levelflat, sector_t *FOFsector,
UINT8 alpha, extracolormap_t *planecolormap)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
FOutVector *v3d;
INT32 shader = SHADER_NONE;
@ -2576,9 +2576,8 @@ static void HWR_AddPolyObjectPlanes(void)
light = R_GetPlaneLight(gl_frontsector, polyobjsector->floorheight, true);
if (po_ptrs[i]->translucency > 0)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
FBITFIELD blendmode;
memset(&Surf, 0x00, sizeof(Surf));
blendmode = HWR_TranstableToAlpha(po_ptrs[i]->translucency, &Surf);
HWR_AddTransparentPolyobjectFloor(&levelflats[polyobjsector->floorpic], po_ptrs[i], false, polyobjsector->floorheight,
(light == -1 ? gl_frontsector->lightlevel : *gl_frontsector->lightlist[light].lightlevel), Surf.PolyColor.s.alpha, polyobjsector, blendmode, (light == -1 ? gl_frontsector->extra_colormap : *gl_frontsector->lightlist[light].extra_colormap));
@ -2599,9 +2598,8 @@ static void HWR_AddPolyObjectPlanes(void)
light = R_GetPlaneLight(gl_frontsector, polyobjsector->ceilingheight, true);
if (po_ptrs[i]->translucency > 0)
{
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
FBITFIELD blendmode;
memset(&Surf, 0x00, sizeof(Surf));
blendmode = HWR_TranstableToAlpha(po_ptrs[i]->translucency, &Surf);
HWR_AddTransparentPolyobjectFloor(&levelflats[polyobjsector->ceilingpic], po_ptrs[i], true, polyobjsector->ceilingheight,
(light == -1 ? gl_frontsector->lightlevel : *gl_frontsector->lightlist[light].lightlevel), Surf.PolyColor.s.alpha, polyobjsector, blendmode, (light == -1 ? gl_frontsector->extra_colormap : *gl_frontsector->lightlist[light].extra_colormap));
@ -3126,7 +3124,7 @@ static void HWR_LinkDrawHackAdd(FOutVector *verts, gl_vissprite_t *spr)
static void HWR_LinkDrawHackFinish(void)
{
UINT32 i;
FSurfaceInfo surf;
FSurfaceInfo surf = {};
surf.PolyColor.rgba = 0xFFFFFFFF;
surf.TintColor.rgba = 0xFFFFFFFF;
surf.FadeColor.rgba = 0xFFFFFFFF;
@ -3191,7 +3189,7 @@ static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale)
patch_t *gpatch = NULL;
GLPatch_t *hwrpatch;
FOutVector shadowVerts[4];
FSurfaceInfo sSurf;
FSurfaceInfo sSurf = {};
float fscale; float fx; float fy; float offset;
extracolormap_t *colormap = NULL;
FBITFIELD blendmode = PF_ReverseSubtract;
@ -3395,7 +3393,7 @@ static void HWR_SplitSprite(gl_vissprite_t *spr)
FOutVector baseWallVerts[4]; // This is what the verts should end up as
patch_t *gpatch;
GLPatch_t *hwrpatch;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
extracolormap_t *colormap = NULL;
INT32 lightlevel;
boolean lightset = true;
@ -3747,7 +3745,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr)
FOutVector wallVerts[4];
patch_t *gpatch;
GLPatch_t *hwrpatch;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
const boolean splat = R_ThingIsFloorSprite(spr->mobj);
if (!spr->mobj || !spr->mobj->subsector)
@ -4080,7 +4078,7 @@ static inline void HWR_DrawPrecipitationSprite(gl_vissprite_t *spr)
FOutVector wallVerts[4];
patch_t *gpatch;
GLPatch_t *hwrpatch;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
if (!spr->mobj || !spr->mobj->subsector)
return;
@ -4661,7 +4659,7 @@ static void HWR_DrawSprites(void)
if (spr->mobj && spr->mobj->skin && spr->mobj->sprite == SPR_PLAY)
{
if (LIKELY(!cv_glmodels.value || md2_playermodels[(skin_t*)spr->mobj->skin-skins].notfound || md2_playermodels[(skin_t*)spr->mobj->skin-skins].scale < 0.0f))
if (LIKELY(!cv_glmodels.value || md2_playermodels[(skin_t*)spr->mobj->skin-skins].notfound || md2_playermodels[(skin_t*)spr->mobj->skin-skins].scale < 0.0f || (spr->renderflags & RF_NOMODEL)))
HWR_DrawSprite(spr);
else
{
@ -4671,7 +4669,7 @@ static void HWR_DrawSprites(void)
}
else
{
if (LIKELY(!cv_glmodels.value || md2_models[spr->mobj->sprite].notfound || md2_models[spr->mobj->sprite].scale < 0.0f))
if (LIKELY(!cv_glmodels.value || md2_models[spr->mobj->sprite].notfound || md2_models[spr->mobj->sprite].scale < 0.0f || (spr->renderflags & RF_NOMODEL)))
HWR_DrawSprite(spr);
else
{
@ -6634,7 +6632,7 @@ void HWR_DoPostProcessor(player_t *player)
if (player->flashcount && !HWR_ShouldUsePaletteRendering())
{
FOutVector v[4];
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
v[0].x = v[2].y = v[3].x = v[3].y = -4.0f;
v[0].y = v[1].x = v[1].y = v[2].x = 4.0f;

View file

@ -1342,7 +1342,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
INT32 nextFrame = -1;
UINT8 spr2 = 0;
FTransform p;
FSurfaceInfo Surf;
FSurfaceInfo Surf = {};
if (!cv_glmodels.value || spr->precip)
return false;

View file

@ -60,7 +60,7 @@ set_shiftxy
(R_PointToAngle2(0, 0, dx, dy) - a->angle);
const fixed_t adj = FixedMul(
abs(FCOS(AbsAngle(th - ANGLE_90))),
FCOS(AbsAngle(th - ANGLE_90)),
FixedHypot(dx, dy)) / 2;
vector2_t *xy = &player->loop.shift;

View file

@ -1001,6 +1001,9 @@ typedef enum
RF_ABSOLUTELIGHTLEVEL = 0x00010000, // mobj_t.lightlevel is absolute instead of relative
RF_HIDEINSKYBOX = 0x00020000, // do not render in skybox
#ifdef HWRENDER
RF_NOMODEL = 0x00040000, // do not draw a model for this mobj in opengl, use its sprite instead
#endif
RF_HIDESHIFT = (20),
RF_DONTDRAW = 0x0F << RF_HIDESHIFT, // --Don't generate a vissprite

View file

@ -349,8 +349,8 @@ void I_StartupSound(void)
const char *vendor = alGetString(AL_VENDOR);
const char *renderer = alGetString(AL_RENDERER);
CONS_Printf("OpenAL Vendor: %s\n", vendor);
CONS_Printf("OpenAL Renderer: %s\n", renderer);
I_OutputMsg("OpenAL Vendor: %s\n", vendor);
I_OutputMsg("OpenAL Renderer: %s\n", renderer);
if (!fastcmp("OpenAL Soft", renderer))
@ -409,8 +409,13 @@ void I_StartupSound(void)
music_volume = sfx_volume = 0.f;
#ifdef HAVE_OPENMPT
CONS_Printf("libopenmpt version: %s\n", openmpt_get_string("library_version"));
CONS_Printf("libopenmpt build date: %s\n", openmpt_get_string("build"));
const char *openmptstr;
openmptstr = openmpt_get_string("library_version");
I_OutputMsg("libopenmpt version: %s\n", openmptstr);
openmpt_free_string(openmptstr);
openmptstr = openmpt_get_string("build");
I_OutputMsg("libopenmpt build date: %s\n", openmptstr);
openmpt_free_string(openmptstr);
#endif
#ifdef HAVE_THREADS