Skip to content

Commit ed04dd5

Browse files
committed
visual changes and fixes
glow should be more consistent between different types now also actually stage menu vars for f82af0a wow amazing
1 parent 0e607a1 commit ed04dd5

33 files changed

Lines changed: 359 additions & 191 deletions

Amalgam/Amalgam.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,7 @@
10551055
<ClCompile Include="src\Hooks\NotificationQueue_Add.cpp" />
10561056
<ClCompile Include="src\Hooks\RecvProxy_SimulationTime.cpp" />
10571057
<ClCompile Include="src\Hooks\R_DrawSkyBox.cpp" />
1058+
<ClCompile Include="src\Hooks\CTFPlayer_InSameDisguisedTeam.cpp" />
10581059
<ClCompile Include="src\Hooks\TF_IsHolidayActive.cpp" />
10591060
<ClCompile Include="src\Hooks\VGuiMenuBuilder_AddMenuItem.cpp" />
10601061
<ClCompile Include="src\SDK\Definitions\Main\CBaseAnimating.cpp" />
@@ -1255,6 +1256,7 @@
12551256
<ClInclude Include="src\SDK\Definitions\Interfaces\CTFGameRules.h" />
12561257
<ClInclude Include="src\SDK\Definitions\Interfaces\CTFGCClientSystem.h" />
12571258
<ClInclude Include="src\SDK\Definitions\Interfaces\CHLClient.h" />
1259+
<ClInclude Include="src\SDK\Definitions\Interfaces\CThirdPersonManager.h" />
12581260
<ClInclude Include="src\SDK\Definitions\Interfaces\IFileSystem.h" />
12591261
<ClInclude Include="src\SDK\Definitions\Interfaces\IGameMovement.h" />
12601262
<ClInclude Include="src\SDK\Definitions\Interfaces\IInput.h" />

Amalgam/Amalgam.vcxproj.filters

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@
200200
<ClCompile Include="src\Hooks\CBasePlayer_CalcObserverView.cpp" />
201201
<ClCompile Include="src\Hooks\CTFPlayerShared_ShouldSuppressPrediction.cpp" />
202202
<ClCompile Include="src\Hooks\CHLTVCamera_CalcView.cpp" />
203+
<ClCompile Include="src\Hooks\CTFPlayer_InSameDisguisedTeam.cpp" />
203204
</ItemGroup>
204205
<ItemGroup>
205206
<ClInclude Include="src\Utils\UtlVector\UtlVector.h" />
@@ -585,6 +586,7 @@
585586
<ClInclude Include="src\SDK\Definitions\Interfaces\IMemAlloc.h" />
586587
<ClInclude Include="src\SDK\Definitions\Main\CPredictionCopy.h" />
587588
<ClInclude Include="src\SDK\Definitions\Interfaces\CHLTVCamera.h" />
589+
<ClInclude Include="src\SDK\Definitions\Interfaces\CThirdPersonManager.h" />
588590
</ItemGroup>
589591
<ItemGroup>
590592
<None Include="cpp.hint" />

Amalgam/src/Features/ImGui/Menu/Menu.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,9 @@ void CMenu::MenuAimbot(int iTab)
318318
FSlider(Vars::Aimbot::Projectile::SplashNormalSkip, FSliderEnum::Right);
319319
FDropdown(Vars::Aimbot::Projectile::SplashMode, FDropdownEnum::Left);
320320
FDropdown(Vars::Aimbot::Projectile::RocketSplashMode, FDropdownEnum::Right, 0, &Hovered); FTooltip("Special splash type for rockets, more expensive", Hovered);
321-
FToggle(Vars::Aimbot::Projectile::SplashGrates, FSliderEnum::Left);
322-
FSlider(Vars::Aimbot::Projectile::Out2NormalCheck, FSliderEnum::Right);
321+
FToggle(Vars::Aimbot::Projectile::SplashGrates);
322+
FSlider(Vars::Aimbot::Projectile::Out2NormalMin, FSliderEnum::Left);
323+
FSlider(Vars::Aimbot::Projectile::Out2NormalMax, FSliderEnum::Right);
323324

324325
Divider();
325326
FText("Misc");
@@ -1100,7 +1101,7 @@ void CMenu::MenuMisc(int iTab)
11001101
if (Section("Queueing"))
11011102
{
11021103
FDropdown(Vars::Misc::Queueing::ForceRegions);
1103-
FToggle(Vars::Misc::Queueing::FreezeQueue, FToggleEnum::Left);
1104+
FToggle(Vars::Misc::Queueing::ExtendQueue, FToggleEnum::Left);
11041105
FToggle(Vars::Misc::Queueing::AutoCasualQueue, FToggleEnum::Right);
11051106
} EndSection();
11061107
if (Section("Sound"))
@@ -1312,13 +1313,13 @@ void CMenu::MenuLogs(int iTab)
13121313

13131314
// text + icons
13141315
int lOffset = H::Draw.Scale(10);
1315-
if (tPlayer.m_bLocal || F::Spectate.m_iIntendedTarget == tPlayer.m_iUserID || tPlayer.m_bFriend || tPlayer.m_bParty)
1316+
if (tPlayer.m_bLocal || F::Spectate.GetTarget(true) == tPlayer.m_iUserID || tPlayer.m_bFriend || tPlayer.m_bParty)
13161317
{
13171318
lOffset += H::Draw.Scale(19);
13181319
SetCursorPos({ vOriginalPos.x + H::Draw.Scale(7), vOriginalPos.y + H::Draw.Scale(6) });
13191320
if (tPlayer.m_bLocal)
13201321
IconImage(ICON_MD_PERSON);
1321-
else if (F::Spectate.m_iIntendedTarget == tPlayer.m_iUserID)
1322+
else if (F::Spectate.GetTarget(true) == tPlayer.m_iUserID)
13221323
IconImage(ICON_MD_VISIBILITY);
13231324
else if (tPlayer.m_bFriend)
13241325
IconImage(ICON_MD_GROUP);
@@ -1412,7 +1413,7 @@ void CMenu::MenuLogs(int iTab)
14121413
I::SteamFriends->ActivateGameOverlayToWebPage(std::format("https://steamhistory.net/id/{}", CSteamID(tPlayer.m_uAccountID, k_EUniversePublic, k_EAccountTypeIndividual).ConvertToUint64()).c_str());
14131414
}
14141415

1415-
if (FSelectable(F::Spectate.m_iIntendedTarget == tPlayer.m_iUserID ? "Unspectate" : "Spectate"))
1416+
if (FSelectable(F::Spectate.GetTarget(true) == tPlayer.m_iUserID ? "Unspectate" : "Spectate"))
14161417
F::Spectate.SetTarget(tPlayer.m_iUserID);
14171418

14181419
if (!I::EngineClient->IsPlayingDemo() && FBeginMenu("Votekick"))

Amalgam/src/Features/Players/PlayerUtils.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,17 +382,17 @@ const char* CPlayerlistUtils::GetPlayerName(int iIndex, const char* sDefault, in
382382
switch (iType)
383383
{
384384
case NameTypeEnum::Local:
385-
return "Local";
385+
return LOCAL;
386386
case NameTypeEnum::Friend:
387-
return "Friend";
387+
return FRIEND;
388388
case NameTypeEnum::Party:
389-
return "Party";
389+
return PARTY;
390390
case NameTypeEnum::Player:
391391
if (auto pTag = GetSignificantTag(iIndex, 0))
392392
return pTag->m_sName.c_str();
393393
else if (auto pResource = H::Entities.GetResource(); pResource && pResource->m_bValid(iIndex))
394-
return pResource->m_iTeam(I::EngineClient->GetLocalPlayer()) != pResource->m_iTeam(iIndex) ? "Enemy" : "Teammate";
395-
return "Player";
394+
return pResource->m_iTeam(I::EngineClient->GetLocalPlayer()) != pResource->m_iTeam(iIndex) ? ENEMY : TEAMMATE;
395+
return PLAYER;
396396
case NameTypeEnum::Custom:
397397
if (auto sAlias = GetPlayerAlias(GetAccountID(iIndex)))
398398
return sAlias->c_str();
@@ -408,17 +408,17 @@ const char* CPlayerlistUtils::GetPlayerName(uint32_t uAccountID, const char* sDe
408408
switch (iType)
409409
{
410410
case NameTypeEnum::Local:
411-
return "Local";
411+
return LOCAL;
412412
case NameTypeEnum::Friend:
413-
return "Friend";
413+
return FRIEND;
414414
case NameTypeEnum::Party:
415-
return "Party";
415+
return PARTY;
416416
case NameTypeEnum::Player:
417417
if (auto pTag = GetSignificantTag(uAccountID, 0))
418418
return pTag->m_sName.c_str();
419419
else if (auto pResource = H::Entities.GetResource(); (iType = GetIndex(uAccountID)) && pResource && pResource->m_bValid(iType))
420-
return pResource->m_iTeam(I::EngineClient->GetLocalPlayer()) != pResource->m_iTeam(iType) ? "Enemy" : "Teammate";
421-
return "Player";
420+
return pResource->m_iTeam(I::EngineClient->GetLocalPlayer()) != pResource->m_iTeam(iType) ? ENEMY : TEAMMATE;
421+
return PLAYER;
422422
case NameTypeEnum::Custom:
423423
if (auto sAlias = GetPlayerAlias(uAccountID))
424424
return sAlias->c_str();

Amalgam/src/Features/Players/PlayerUtils.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@
99
#define F2P_TAG (PARTY_TAG-1)
1010
#define TAG_COUNT (-F2P_TAG)
1111

12+
#define LOCAL "Local"
13+
#define FRIEND "Friend"
14+
#define PARTY "Party"
15+
#define ENEMY "Enemy"
16+
#define TEAMMATE "Teammate"
17+
#define PLAYER "Player"
18+
1219
struct ListPlayer
1320
{
1421
std::string m_sName;

Amalgam/src/Features/Simulation/ProjectileSimulation/ProjectileSimulation.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
bool CProjectileSimulation::GetInfoMain(CTFPlayer* pPlayer, CTFWeaponBase* pWeapon, Vec3 vAngles, ProjectileInfo& tProjInfo, int iFlags, float flAutoCharge)
88
{
9-
if (!pPlayer || !pPlayer->IsAlive() || pPlayer->IsAGhost() || pPlayer->IsTaunting() || !pWeapon)
9+
if (!pWeapon || !pPlayer->IsAlive() || pPlayer->IsAGhost() || pPlayer->IsTaunting())
1010
return false;
1111

1212
static auto sv_gravity = H::ConVars.FindVar("sv_gravity");
@@ -287,11 +287,17 @@ bool CProjectileSimulation::GetInfo(CTFPlayer* pPlayer, CTFWeaponBase* pWeapon,
287287
{
288288
bool bInitCheck = iFlags & ProjSimEnum::InitCheck;
289289
bool bInterp = iFlags & ProjSimEnum::Interp;
290+
bool bReturn = false;
290291

291-
const float flOldCurrentTime = I::GlobalVars->curtime;
292-
I::GlobalVars->curtime = TICKS_TO_TIME(pPlayer->m_nTickBase());
293-
bool bReturn = GetInfoMain(pPlayer, pWeapon, vAngles, tProjInfo, iFlags, flAutoCharge);
294-
I::GlobalVars->curtime = flOldCurrentTime;
292+
if (auto pLocal = bInterp ? H::Entities.GetLocal() : nullptr)
293+
{
294+
const float flOldCurrentTime = I::GlobalVars->curtime;
295+
I::GlobalVars->curtime = TICKS_TO_TIME(pLocal->m_nTickBase());
296+
bReturn = GetInfoMain(pPlayer, pWeapon, vAngles, tProjInfo, iFlags, flAutoCharge);
297+
I::GlobalVars->curtime = flOldCurrentTime;
298+
}
299+
else
300+
bReturn = GetInfoMain(pPlayer, pWeapon, vAngles, tProjInfo, iFlags, flAutoCharge);
295301
tProjInfo.m_iFlags = iFlags;
296302

297303
if (!bReturn || !bInitCheck)
@@ -627,6 +633,9 @@ Vec3 CProjectileSimulation::GetVelocity()
627633

628634
float CProjectileSimulation::GetDesync()
629635
{
636+
if (I::EngineClient->IsPlayingDemo())
637+
return 0.f;
638+
630639
return I::GlobalVars->curtime - TICKS_TO_TIME(I::ClientState->m_ClockDriftMgr.m_nServerTick) - F::Backtrack.GetReal();
631640
}
632641

Amalgam/src/Features/Spectate/Spectate.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
#include "Spectate.h"
22

3+
void CSpectate::Reset()
4+
{
5+
m_iIntendedTarget = m_iTarget = -1;
6+
}
7+
38
void CSpectate::NetUpdateEnd(CTFPlayer* pLocal)
49
{
510
if (!pLocal)
@@ -39,9 +44,6 @@ void CSpectate::NetUpdateEnd(CTFPlayer* pLocal)
3944
}
4045
pLocal->m_iObserverMode() = Vars::Visuals::Thirdperson::Enabled.Value ? OBS_MODE_THIRDPERSON : OBS_MODE_FIRSTPERSON;
4146
Vars::Visuals::Thirdperson::Enabled.Value ? I::Input->CAM_ToThirdPerson() : I::Input->CAM_ToFirstPerson();
42-
43-
m_hTargetTarget = pLocal->m_hObserverTarget();
44-
m_iTargetMode = pLocal->m_iObserverMode();
4547
}
4648

4749
void CSpectate::NetUpdateStart(CTFPlayer* pLocal)
@@ -75,4 +77,9 @@ void CSpectate::CreateMove(CUserCmd* pCmd)
7577
void CSpectate::SetTarget(int iTarget)
7678
{
7779
m_iIntendedTarget = m_iIntendedTarget == iTarget ? -1 : iTarget;
80+
}
81+
82+
int CSpectate::GetTarget(bool bIntended)
83+
{
84+
return bIntended ? m_iIntendedTarget : m_iTarget;
7885
}

Amalgam/src/Features/Spectate/Spectate.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,24 @@
33

44
class CSpectate
55
{
6+
private:
7+
int m_iTarget = -1;
8+
int m_iIntendedTarget = -1;
9+
610
public:
711
void NetUpdateEnd(CTFPlayer* pLocal);
812
void NetUpdateStart(CTFPlayer* pLocal);
913
void CreateMove(CUserCmd* pCmd);
10-
void SetTarget(int iTarget);
11-
12-
inline bool HasTarget() { return m_iTarget != -1; }
14+
void Reset();
1315

14-
int m_iTarget = -1;
15-
int m_iIntendedTarget = -1;
16-
Vec3 m_vOldView = {}; // don't let spectating change viewangles
16+
void SetTarget(int iTarget);
17+
int GetTarget(bool bIntended = false);
18+
inline bool HasTarget(bool bIntended = false) { return (bIntended ? m_iIntendedTarget : m_iTarget) != -1; }
1719

1820
EHANDLE m_hOriginalTarget;
1921
int m_iOriginalMode = OBS_MODE_NONE;
20-
EHANDLE m_hTargetTarget;
21-
int m_iTargetMode = OBS_MODE_NONE;
22+
23+
Vec3 m_vOldView = {}; // don't let spectating change viewangles
2224
};
2325

2426
ADD_FEATURE(CSpectate, Spectate);

Amalgam/src/Features/Visuals/Chams/Chams.cpp

Lines changed: 22 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,25 @@
55
#include "../FakeAngle/FakeAngle.h"
66
#include "../../Backtrack/Backtrack.h"
77

8-
void CChams::DrawModel(CBaseEntity* pEntity, Chams_t& tChams, IMatRenderContext* pRenderContext, bool bTwoModels)
8+
void CChams::Begin()
99
{
10-
const auto& vVisibleMaterials = !tChams.Visible.empty() ? tChams.Visible : std::vector<std::pair<std::string, Color_t>> { { "None", {} } };
11-
const auto& vOccludedMaterials = !tChams.Occluded.empty() ? tChams.Occluded : std::vector<std::pair<std::string, Color_t>> { { "None", {} } };
12-
1310
m_tOriginalColor = I::RenderView->GetColorModulation();
1411
m_flOriginalBlend = I::RenderView->GetBlend();
1512
I::ModelRender->GetMaterialOverride(&m_pOriginalMaterial, &m_iOriginalOverride);
13+
}
14+
void CChams::End()
15+
{
16+
I::RenderView->SetColorModulation(m_tOriginalColor);
17+
I::RenderView->SetBlend(m_flOriginalBlend);
18+
I::ModelRender->ForcedMaterialOverride(m_pOriginalMaterial, m_iOriginalOverride);
19+
}
1620

21+
void CChams::DrawModel(CBaseEntity* pEntity, Chams_t& tChams, IMatRenderContext* pRenderContext, bool bTwoModels)
22+
{
23+
const auto& vVisibleMaterials = !tChams.Visible.empty() ? tChams.Visible : std::vector<std::pair<std::string, Color_t>> { { "None", {} } };
24+
const auto& vOccludedMaterials = !tChams.Occluded.empty() ? tChams.Occluded : std::vector<std::pair<std::string, Color_t>> { { "None", {} } };
25+
26+
Begin();
1727
if (bTwoModels)
1828
{
1929
pRenderContext->SetStencilEnable(true);
@@ -77,10 +87,7 @@ void CChams::DrawModel(CBaseEntity* pEntity, Chams_t& tChams, IMatRenderContext*
7787

7888
m_mEntities[pEntity->entindex()];
7989
}
80-
81-
I::RenderView->SetColorModulation(m_tOriginalColor);
82-
I::RenderView->SetBlend(m_flOriginalBlend);
83-
I::ModelRender->ForcedMaterialOverride(m_pOriginalMaterial, m_iOriginalOverride);
90+
End();
8491
}
8592

8693

@@ -161,8 +168,6 @@ void CChams::RenderBacktrack(const DrawModelState_t& pState, const ModelRenderIn
161168
if (!pEntity || !pEntity->IsPlayer())
162169
return;
163170

164-
165-
166171
std::vector<TickRecord*> vRecords = {};
167172
if (!F::Backtrack.GetRecords(pEntity, vRecords))
168173
return;
@@ -214,11 +219,9 @@ void CChams::RenderBacktrack(const DrawModelState_t& pState, const ModelRenderIn
214219
}
215220
void CChams::RenderFakeAngle(const DrawModelState_t& pState, const ModelRenderInfo_t& pInfo)
216221
{
217-
auto pRenderContext = I::MaterialSystem->GetRenderContext();
218-
if (!pRenderContext)
219-
return;
220-
221-
222+
//auto pRenderContext = I::MaterialSystem->GetRenderContext();
223+
//if (!pRenderContext)
224+
// return;
222225

223226
//pRenderContext->DepthRange(0.f, Vars::Chams::FakeAngle::IgnoreZ.Value ? 0.2f : 1.f);
224227

@@ -252,16 +255,11 @@ bool CChams::RenderViewmodel(void* ecx, int flags, int* iReturn)
252255
if (!pRenderContext)
253256
return false;
254257

255-
256-
257258
Group_t* pGroup = nullptr;
258259
if (!F::Groups.GetGroup(TargetsEnum::ViewmodelWeapon, pGroup) || !pGroup->m_tChams(true))
259260
return false;
260261

261-
m_tOriginalColor = I::RenderView->GetColorModulation();
262-
m_flOriginalBlend = I::RenderView->GetBlend();
263-
I::ModelRender->GetMaterialOverride(&m_pOriginalMaterial, &m_iOriginalOverride);
264-
262+
Begin();
265263
for (auto& [sName, tColor] : pGroup->m_tChams.Visible)
266264
{
267265
auto pMaterial = F::Materials.GetMaterial(FNV1A::Hash32(sName.c_str()));
@@ -278,10 +276,7 @@ bool CChams::RenderViewmodel(void* ecx, int flags, int* iReturn)
278276
if (pMaterial && pMaterial->m_bInvertCull)
279277
pRenderContext->CullMode(G::FlipViewmodels ? MATERIAL_CULLMODE_CW : MATERIAL_CULLMODE_CCW);
280278
}
281-
282-
I::RenderView->SetColorModulation(m_tOriginalColor);
283-
I::RenderView->SetBlend(m_flOriginalBlend);
284-
I::ModelRender->ForcedMaterialOverride(m_pOriginalMaterial, m_iOriginalOverride);
279+
End();
285280

286281
return true;
287282
}
@@ -294,16 +289,11 @@ bool CChams::RenderViewmodel(const DrawModelState_t& pState, const ModelRenderIn
294289
if (!pRenderContext)
295290
return false;
296291

297-
298-
299292
Group_t* pGroup = nullptr;
300293
if (!F::Groups.GetGroup(TargetsEnum::ViewmodelHands, pGroup) || !pGroup->m_tChams(true))
301294
return false;
302295

303-
m_tOriginalColor = I::RenderView->GetColorModulation();
304-
m_flOriginalBlend = I::RenderView->GetBlend();
305-
I::ModelRender->GetMaterialOverride(&m_pOriginalMaterial, &m_iOriginalOverride);
306-
296+
Begin();
307297
for (auto& [sName, tColor] : pGroup->m_tChams.Visible)
308298
{
309299
auto pMaterial = F::Materials.GetMaterial(FNV1A::Hash32(sName.c_str()));
@@ -320,10 +310,7 @@ bool CChams::RenderViewmodel(const DrawModelState_t& pState, const ModelRenderIn
320310
if (pMaterial && pMaterial->m_bInvertCull)
321311
pRenderContext->CullMode(G::FlipViewmodels ? MATERIAL_CULLMODE_CW : MATERIAL_CULLMODE_CCW);
322312
}
323-
324-
I::RenderView->SetColorModulation(m_tOriginalColor);
325-
I::RenderView->SetBlend(m_flOriginalBlend);
326-
I::ModelRender->ForcedMaterialOverride(m_pOriginalMaterial, m_iOriginalOverride);
313+
End();
327314

328315
return true;
329316
}

Amalgam/src/Features/Visuals/Chams/Chams.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
class CChams
55
{
66
private:
7+
void Begin();
8+
void End();
9+
710
void DrawModel(CBaseEntity* pEntity, Chams_t& tChams, IMatRenderContext* pRenderContext, bool bTwoModels = true);
811

912
void RenderBacktrack(const DrawModelState_t& pState, const ModelRenderInfo_t& pInfo);

0 commit comments

Comments
 (0)