[HL25] Backport changes from October 2nd 2024
This commit is contained in:
parent
af9952e3da
commit
e760b9f988
7 changed files with 56 additions and 45 deletions
|
@ -9,6 +9,10 @@
|
|||
* Added missing client side event for `func_vehicle` sounds
|
||||
* Link Linux binaries with `-Wl` and `--no-undefined` flags to avoid situations where something was referenced but wasn't added in the build (Thanks a1batross)
|
||||
|
||||
### Features
|
||||
|
||||
* [HL25] Backported changes from October 2nd 2024 update
|
||||
|
||||
## Changes in V1.1.0
|
||||
|
||||
### Bug Fixes
|
||||
|
|
|
@ -76,6 +76,8 @@ inline struct cvar_s* CVAR_CREATE(const char* cv, const char* val, const int fla
|
|||
|
||||
#define XRES(x) ((x) * ((float)ScreenWidth / 640))
|
||||
#define YRES(y) ((y) * ((float)ScreenHeight / 480))
|
||||
#define XRES_HD(x) ((x) * V_max(1, (float)ScreenWidth / 1280))
|
||||
#define YRES_HD(y) ((y) * V_max(1, (float)ScreenHeight / 720))
|
||||
|
||||
#define GetScreenInfo (*gEngfuncs.pfnGetScreenInfo)
|
||||
#define ServerCmd (*gEngfuncs.pfnServerCmd)
|
||||
|
|
|
@ -108,6 +108,11 @@ bool CHudDeathNotice::Draw(float flTime)
|
|||
Rect sprite = gHUD.GetSpriteRect(m_HUD_d_skull);
|
||||
gap = sprite.bottom - sprite.top;
|
||||
|
||||
SCREENINFO screenInfo;
|
||||
screenInfo.iSize = sizeof(SCREENINFO);
|
||||
gEngfuncs.pfnGetScreenInfo(&screenInfo);
|
||||
gap = V_max(gap, screenInfo.iCharHeight);
|
||||
|
||||
for (int i = 0; i < MAX_DEATHNOTICES; i++)
|
||||
{
|
||||
if (rgDeathNoticeList[i].iId == 0)
|
||||
|
|
|
@ -652,10 +652,10 @@ bool CHudSpectator::Draw(float flTime)
|
|||
// check if name would be in inset window
|
||||
if (m_pip->value != INSET_OFF)
|
||||
{
|
||||
if (m_vPlayerPos[i][0] > XRES(m_OverviewData.insetWindowX) &&
|
||||
m_vPlayerPos[i][1] > YRES(m_OverviewData.insetWindowY) &&
|
||||
m_vPlayerPos[i][0] < XRES(m_OverviewData.insetWindowX + m_OverviewData.insetWindowWidth) &&
|
||||
m_vPlayerPos[i][1] < YRES(m_OverviewData.insetWindowY + m_OverviewData.insetWindowHeight))
|
||||
if (m_vPlayerPos[i][0] > XRES_HD(m_OverviewData.insetWindowX) &&
|
||||
m_vPlayerPos[i][1] > YRES_HD(m_OverviewData.insetWindowY) &&
|
||||
m_vPlayerPos[i][0] < XRES_HD(m_OverviewData.insetWindowX + m_OverviewData.insetWindowWidth) &&
|
||||
m_vPlayerPos[i][1] < YRES_HD(m_OverviewData.insetWindowY + m_OverviewData.insetWindowHeight))
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,11 +30,11 @@ void DLLEXPORT HUD_ChatInputPosition(int* x, int* y)
|
|||
{
|
||||
if (gHUD.m_Spectator.m_pip->value == INSET_OFF)
|
||||
{
|
||||
*y = YRES(PANEL_HEIGHT);
|
||||
*y = YRES_HD(PANEL_HEIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
*y = YRES(gHUD.m_Spectator.m_OverviewData.insetWindowHeight + 5);
|
||||
*y = YRES_HD(gHUD.m_Spectator.m_OverviewData.insetWindowHeight + 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -105,15 +105,15 @@ void SpectatorPanel::Initialize()
|
|||
|
||||
SchemeHandle_t hSmallScheme = pSchemes->getSchemeHandle("Team Info Text");
|
||||
|
||||
m_TopBorder = new CTransparentPanel(64, 0, 0, ScreenWidth, PANEL_HEIGHT);
|
||||
m_TopBorder = new CTransparentPanel(64, 0, 0, ScreenWidth, YRES_HD(PANEL_HEIGHT));
|
||||
m_TopBorder->setParent(this);
|
||||
|
||||
m_BottomBorder = new CTransparentPanel(64, 0, ScreenHeight - PANEL_HEIGHT, ScreenWidth, PANEL_HEIGHT);
|
||||
m_BottomBorder = new CTransparentPanel(64, 0, ScreenHeight - YRES_HD(PANEL_HEIGHT), ScreenWidth, YRES_HD(PANEL_HEIGHT));
|
||||
m_BottomBorder->setParent(this);
|
||||
|
||||
setPaintBackgroundEnabled(false);
|
||||
|
||||
m_ExtraInfo = new Label("Extra Info", 0, 0, wide, PANEL_HEIGHT);
|
||||
m_ExtraInfo = new Label("Extra Info", 0, 0, wide, YRES_HD(PANEL_HEIGHT));
|
||||
m_ExtraInfo->setParent(m_TopBorder);
|
||||
m_ExtraInfo->setFont(pSchemes->getFont(hSmallScheme));
|
||||
|
||||
|
@ -126,24 +126,24 @@ void SpectatorPanel::Initialize()
|
|||
m_TimerImage = new CImageLabel("timer", 0, 0, 14, 14);
|
||||
m_TimerImage->setParent(m_TopBorder);
|
||||
|
||||
m_TopBanner = new CImageLabel("banner", 0, 0, XRES(BANNER_WIDTH), YRES(BANNER_HEIGHT));
|
||||
m_TopBanner = new CImageLabel("banner", 0, 0, XRES_HD(BANNER_WIDTH), YRES_HD(BANNER_HEIGHT));
|
||||
m_TopBanner->setParent(this);
|
||||
|
||||
m_CurrentTime = new Label("00:00", 0, 0, wide, PANEL_HEIGHT);
|
||||
m_CurrentTime = new Label("00:00", 0, 0, wide, YRES_HD(PANEL_HEIGHT));
|
||||
m_CurrentTime->setParent(m_TopBorder);
|
||||
m_CurrentTime->setFont(pSchemes->getFont(hSmallScheme));
|
||||
m_CurrentTime->setPaintBackgroundEnabled(false);
|
||||
m_CurrentTime->setFgColor(143, 143, 54, 0);
|
||||
m_CurrentTime->setContentAlignment(vgui::Label::a_west);
|
||||
|
||||
m_Separator = new Panel(0, 0, XRES(64), YRES(96));
|
||||
m_Separator = new Panel(0, 0, XRES_HD(64), YRES_HD(96));
|
||||
m_Separator->setParent(m_TopBorder);
|
||||
m_Separator->setFgColor(59, 58, 34, 48);
|
||||
m_Separator->setBgColor(59, 58, 34, 48);
|
||||
|
||||
for (int j = 0; j < TEAM_NUMBER; j++)
|
||||
{
|
||||
m_TeamScores[j] = new Label(" ", 0, 0, wide, PANEL_HEIGHT);
|
||||
m_TeamScores[j] = new Label(" ", 0, 0, wide, YRES_HD(PANEL_HEIGHT));
|
||||
m_TeamScores[j]->setParent(m_TopBorder);
|
||||
m_TeamScores[j]->setFont(pSchemes->getFont(hSmallScheme));
|
||||
m_TeamScores[j]->setPaintBackgroundEnabled(false);
|
||||
|
@ -154,8 +154,8 @@ void SpectatorPanel::Initialize()
|
|||
|
||||
|
||||
// Initialize command buttons.
|
||||
// m_OptionButton = new ColorButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES(15), YRES(6), XRES(OPTIONS_BUTTON_X), YRES(20), false, false );
|
||||
m_OptionButton = new DropDownButton(CHudTextMessage::BufferedLocaliseTextString("#SPECT_OPTIONS"), XRES(15), YRES(6), XRES(OPTIONS_BUTTON_X), YRES(20), false, false);
|
||||
// m_OptionButton = new ColorButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES_HD(15), YRES_HD(6), XRES_HD(OPTIONS_BUTTON_X), YRES_HD(20), false, false );
|
||||
m_OptionButton = new DropDownButton(CHudTextMessage::BufferedLocaliseTextString("#SPECT_OPTIONS"), XRES_HD(15), YRES_HD(6), XRES_HD(OPTIONS_BUTTON_X), YRES_HD(20), false, false);
|
||||
m_OptionButton->setParent(m_BottomBorder);
|
||||
m_OptionButton->setContentAlignment(vgui::Label::a_center);
|
||||
m_OptionButton->setBoundKey((char)255); // special no bound to avoid leading spaces in name
|
||||
|
@ -165,7 +165,7 @@ void SpectatorPanel::Initialize()
|
|||
m_OptionButton->setUnArmedColor(143, 143, 54, 0);
|
||||
m_OptionButton->setArmedColor(194, 202, 54, 0);
|
||||
|
||||
m_CamButton = new DropDownButton(CHudTextMessage::BufferedLocaliseTextString("#CAM_OPTIONS"), ScreenWidth - (XRES(CAMOPTIONS_BUTTON_X) + 15), YRES(6), XRES(CAMOPTIONS_BUTTON_X), YRES(20), false, false);
|
||||
m_CamButton = new DropDownButton(CHudTextMessage::BufferedLocaliseTextString("#CAM_OPTIONS"), ScreenWidth - XRES_HD(CAMOPTIONS_BUTTON_X + 15), YRES_HD(6), XRES_HD(CAMOPTIONS_BUTTON_X), YRES_HD(20), false, false);
|
||||
m_CamButton->setParent(m_BottomBorder);
|
||||
m_CamButton->setContentAlignment(vgui::Label::a_center);
|
||||
m_CamButton->setBoundKey((char)255); // special no bound to avoid leading spaces in name
|
||||
|
@ -175,8 +175,8 @@ void SpectatorPanel::Initialize()
|
|||
m_CamButton->setUnArmedColor(143, 143, 54, 0);
|
||||
m_CamButton->setArmedColor(194, 202, 54, 0);
|
||||
|
||||
// m_PrevPlayerButton= new ColorButton("<", XRES( 15 + OPTIONS_BUTTON_X + 15 ), YRES(6), XRES(24), YRES(20), false, false );
|
||||
m_PrevPlayerButton = new CImageButton("arrowleft", XRES(15 + OPTIONS_BUTTON_X + 15), YRES(6), XRES(24), YRES(20), false, false);
|
||||
// m_PrevPlayerButton= new ColorButton("<", XRES_HD( 15 + OPTIONS_BUTTON_X + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20), false, false );
|
||||
m_PrevPlayerButton = new CImageButton("arrowleft", XRES_HD(15 + OPTIONS_BUTTON_X + 15), YRES_HD(6), XRES_HD(24), YRES_HD(20), false, false);
|
||||
m_PrevPlayerButton->setParent(m_BottomBorder);
|
||||
m_PrevPlayerButton->setContentAlignment(vgui::Label::a_center);
|
||||
m_PrevPlayerButton->setBoundKey((char)255); // special no bound to avoid leading spaces in name
|
||||
|
@ -186,8 +186,8 @@ void SpectatorPanel::Initialize()
|
|||
m_PrevPlayerButton->setUnArmedColor(143, 143, 54, 0);
|
||||
m_PrevPlayerButton->setArmedColor(194, 202, 54, 0);
|
||||
|
||||
// m_NextPlayerButton= new ColorButton(">", (ScreenWidth - (XRES ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES ( 24 + 15 ), YRES(6), XRES(24), YRES(20),false, false );
|
||||
m_NextPlayerButton = new CImageButton("arrowright", (ScreenWidth - (XRES(CAMOPTIONS_BUTTON_X) + 15)) - XRES(24 + 15), YRES(6), XRES(24), YRES(20), false, false);
|
||||
// m_NextPlayerButton= new ColorButton(">", (ScreenWidth - (XRES_HD ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES_HD ( 24 + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20),false, false );
|
||||
m_NextPlayerButton = new CImageButton("arrowright", ScreenWidth - XRES_HD(CAMOPTIONS_BUTTON_X + 15) - XRES_HD(24 + 15), YRES_HD(6), XRES_HD(24), YRES_HD(20), false, false);
|
||||
m_NextPlayerButton->setParent(m_BottomBorder);
|
||||
m_NextPlayerButton->setContentAlignment(vgui::Label::a_center);
|
||||
m_NextPlayerButton->setBoundKey((char)255); // special no bound to avoid leading spaces in name
|
||||
|
@ -199,10 +199,10 @@ void SpectatorPanel::Initialize()
|
|||
|
||||
// Initialize the bottom title.
|
||||
|
||||
float flLabelSize = ((ScreenWidth - (XRES(CAMOPTIONS_BUTTON_X) + 15)) - XRES(24 + 15)) - XRES((15 + OPTIONS_BUTTON_X + 15) + 38);
|
||||
float flLabelSize = ScreenWidth - XRES_HD(CAMOPTIONS_BUTTON_X + 15) - XRES_HD(24 + 15) - XRES_HD((15 + OPTIONS_BUTTON_X + 15) + 38);
|
||||
|
||||
m_BottomMainButton = new DropDownButton("Spectator Bottom",
|
||||
XRES((15 + OPTIONS_BUTTON_X + 15) + 31), YRES(6), flLabelSize, YRES(20),
|
||||
XRES_HD((15 + OPTIONS_BUTTON_X + 15) + 31), YRES_HD(6), flLabelSize, YRES_HD(20),
|
||||
false, false);
|
||||
|
||||
m_BottomMainButton->setParent(m_BottomBorder);
|
||||
|
@ -219,7 +219,7 @@ void SpectatorPanel::Initialize()
|
|||
|
||||
|
||||
m_BottomMainLabel = new Label("Spectator Bottom",
|
||||
XRES((15 + OPTIONS_BUTTON_X + 15) + 31), YRES(6), flLabelSize, YRES(20));
|
||||
XRES_HD((15 + OPTIONS_BUTTON_X + 15) + 31), YRES_HD(6), flLabelSize, YRES_HD(20));
|
||||
|
||||
m_BottomMainLabel->setParent(m_BottomBorder);
|
||||
m_BottomMainLabel->setPaintBackgroundEnabled(false);
|
||||
|
@ -228,7 +228,7 @@ void SpectatorPanel::Initialize()
|
|||
m_BottomMainLabel->setBorder(NULL);
|
||||
m_BottomMainLabel->setVisible(false);
|
||||
|
||||
m_InsetViewButton = new ColorButton("", XRES(2), YRES(2), XRES(240), YRES(180), false, false);
|
||||
m_InsetViewButton = new ColorButton("", XRES_HD(2), YRES_HD(2), XRES_HD(240), YRES_HD(180), false, false);
|
||||
m_InsetViewButton->setParent(this);
|
||||
m_InsetViewButton->setBoundKey((char)255);
|
||||
m_InsetViewButton->addActionSignal(new CSpectatorHandler_Command(this, SPECTATOR_PANEL_CMD_TOGGLE_INSET));
|
||||
|
@ -270,11 +270,11 @@ void SpectatorPanel::ShowMenu(bool isVisible)
|
|||
m_BottomMainButton->setVisible(false);
|
||||
|
||||
m_BottomMainLabel->getSize(iLabelSizeX, iLabelSizeY);
|
||||
m_BottomMainLabel->setPos((ScreenWidth / 2) - (iLabelSizeX / 2), YRES(6));
|
||||
m_BottomMainLabel->setPos((ScreenWidth / 2) - (iLabelSizeX / 2), YRES_HD(6));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_BottomMainButton->setPos(XRES((15 + OPTIONS_BUTTON_X + 15) + 31), YRES(6));
|
||||
m_BottomMainButton->setPos(XRES_HD((15 + OPTIONS_BUTTON_X + 15) + 31), YRES_HD(6));
|
||||
m_BottomMainLabel->setVisible(false);
|
||||
m_BottomMainButton->setVisible(true);
|
||||
}
|
||||
|
@ -342,18 +342,18 @@ void SpectatorPanel::EnableInsetView(bool isEnabled)
|
|||
if (isEnabled)
|
||||
{
|
||||
// short black bar to see full inset
|
||||
m_TopBorder->setBounds(XRES(offset), 0, XRES(640 - offset), PANEL_HEIGHT);
|
||||
m_TopBorder->setBounds(XRES_HD(offset), 0, ScreenWidth - XRES_HD(offset), YRES_HD(PANEL_HEIGHT));
|
||||
|
||||
if (0 != gEngfuncs.IsSpectateOnly())
|
||||
{
|
||||
m_TopBanner->setVisible(true);
|
||||
m_TopBanner->setPos(XRES(offset), 0);
|
||||
m_TopBanner->setPos(XRES_HD(offset), 0);
|
||||
}
|
||||
else
|
||||
m_TopBanner->setVisible(false);
|
||||
|
||||
m_InsetViewButton->setBounds(XRES(x - 1), YRES(y),
|
||||
XRES(wide + 2), YRES(tall));
|
||||
m_InsetViewButton->setBounds(XRES_HD(x - 1), YRES_HD(y),
|
||||
XRES_HD(wide + 2), YRES_HD(tall));
|
||||
m_InsetViewButton->setVisible(true);
|
||||
}
|
||||
else
|
||||
|
@ -368,7 +368,7 @@ void SpectatorPanel::EnableInsetView(bool isEnabled)
|
|||
else
|
||||
m_TopBanner->setVisible(false);
|
||||
|
||||
m_TopBorder->setBounds(0, 0, ScreenWidth, PANEL_HEIGHT);
|
||||
m_TopBorder->setBounds(0, 0, ScreenWidth, YRES_HD(PANEL_HEIGHT));
|
||||
|
||||
m_InsetViewButton->setVisible(false);
|
||||
}
|
||||
|
@ -410,28 +410,28 @@ void SpectatorPanel::Update()
|
|||
m_ExtraInfo->getTextSize(iTextWidth, iTextHeight);
|
||||
m_CurrentTime->getTextSize(iTimeWidth, iTimeHeight);
|
||||
|
||||
iTimeWidth += XRES(SEPERATOR_WIDTH * 2 + 1); // +timer icon
|
||||
iTimeWidth += (SEPERATOR_WIDTH - (iTimeWidth % SEPERATOR_WIDTH));
|
||||
iTimeWidth += XRES_HD(SEPERATOR_WIDTH * 2 + 1); // +timer icon
|
||||
iTimeWidth += (XRES_HD(SEPERATOR_WIDTH) - (iTimeWidth % (int)XRES_HD(SEPERATOR_WIDTH)));
|
||||
|
||||
if (iTimeWidth > iTextWidth)
|
||||
iTextWidth = iTimeWidth;
|
||||
|
||||
int xPos = ScreenWidth - (iTextWidth + XRES(SEPERATOR_WIDTH + offset));
|
||||
int xPos = ScreenWidth - (iTextWidth + XRES_HD(SEPERATOR_WIDTH + offset));
|
||||
|
||||
m_ExtraInfo->setBounds(xPos, YRES(SEPERATOR_HEIGHT), iTextWidth, iTextHeight);
|
||||
m_ExtraInfo->setBounds(xPos, SEPERATOR_HEIGHT, iTextWidth, iTextHeight);
|
||||
|
||||
m_TimerImage->setBounds(xPos, YRES(SEPERATOR_HEIGHT) + iTextHeight, XRES(SEPERATOR_WIDTH * 2 + 1), YRES(SEPERATOR_HEIGHT + 1));
|
||||
m_TimerImage->setBounds(xPos, SEPERATOR_HEIGHT + iTextHeight, XRES_HD(SEPERATOR_WIDTH * 2 + 1), SEPERATOR_HEIGHT + 1);
|
||||
|
||||
m_CurrentTime->setBounds(xPos + XRES(SEPERATOR_WIDTH * 2 + 1), YRES(SEPERATOR_HEIGHT) + iTextHeight, iTimeWidth, iTimeHeight);
|
||||
m_CurrentTime->setBounds(xPos + XRES_HD(SEPERATOR_WIDTH * 2 + 1), SEPERATOR_HEIGHT + iTextHeight, iTimeWidth, iTimeHeight);
|
||||
|
||||
m_Separator->setPos(ScreenWidth - (iTextWidth + XRES(2 * SEPERATOR_WIDTH + SEPERATOR_WIDTH / 2 + offset)), YRES(5));
|
||||
m_Separator->setSize(XRES(1), PANEL_HEIGHT - 10);
|
||||
m_Separator->setPos(ScreenWidth - (iTextWidth + XRES_HD(2 * SEPERATOR_WIDTH + SEPERATOR_WIDTH / 2 + offset)), YRES_HD(5));
|
||||
m_Separator->setSize(XRES_HD(1), YRES_HD(PANEL_HEIGHT - 10));
|
||||
|
||||
for (j = 0; j < TEAM_NUMBER; j++)
|
||||
{
|
||||
int iwidth, iheight;
|
||||
|
||||
m_TeamScores[j]->getTextSize(iwidth, iheight);
|
||||
m_TeamScores[j]->setBounds(ScreenWidth - (iTextWidth + XRES(2 * SEPERATOR_WIDTH + 2 * SEPERATOR_WIDTH / 2 + offset) + iwidth), YRES(SEPERATOR_HEIGHT) + (iheight * j), iwidth, iheight);
|
||||
m_TeamScores[j]->setBounds(ScreenWidth - (iTextWidth + XRES_HD(2 * SEPERATOR_WIDTH + 2 * SEPERATOR_WIDTH / 2 + offset) + iwidth), SEPERATOR_HEIGHT + (iheight * j), iwidth, iheight);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1583,10 +1583,10 @@ void V_CalcSpectatorRefdef(struct ref_params_s* pparams)
|
|||
// second renderer cycle, inset window
|
||||
|
||||
// set inset parameters
|
||||
pparams->viewport[0] = XRES(gHUD.m_Spectator.m_OverviewData.insetWindowX); // change viewport to inset window
|
||||
pparams->viewport[1] = YRES(gHUD.m_Spectator.m_OverviewData.insetWindowY);
|
||||
pparams->viewport[2] = XRES(gHUD.m_Spectator.m_OverviewData.insetWindowWidth);
|
||||
pparams->viewport[3] = YRES(gHUD.m_Spectator.m_OverviewData.insetWindowHeight);
|
||||
pparams->viewport[0] = XRES_HD(gHUD.m_Spectator.m_OverviewData.insetWindowX); // change viewport to inset window
|
||||
pparams->viewport[1] = YRES_HD(gHUD.m_Spectator.m_OverviewData.insetWindowY);
|
||||
pparams->viewport[2] = XRES_HD(gHUD.m_Spectator.m_OverviewData.insetWindowWidth);
|
||||
pparams->viewport[3] = YRES_HD(gHUD.m_Spectator.m_OverviewData.insetWindowHeight);
|
||||
pparams->nextView = 0; // on further view
|
||||
|
||||
// override some settings in certain modes
|
||||
|
|
|
@ -735,7 +735,7 @@ void CBasePlayer::PackDeadPlayerItems()
|
|||
|
||||
if (iAmmoRules == GR_PLR_DROP_AMMO_ACTIVE && iWeaponRules == GR_PLR_DROP_GUN_ACTIVE)
|
||||
{
|
||||
if (FClassnameIs(rgpPackWeapons[0]->pev, "weapon_satchel") && (iPackAmmo[0] == -1 || (m_rgAmmo[iPackAmmo[0]] == 0)))
|
||||
if (rgpPackWeapons[0] && FClassnameIs(rgpPackWeapons[0]->pev, "weapon_satchel") && (iPackAmmo[0] == -1 || (m_rgAmmo[iPackAmmo[0]] == 0)))
|
||||
{
|
||||
bPackItems = false;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue