44#include < server/configuration/configuration.h>
55#include < sdk/schema.h>
66#include < entities/system.h>
7- #include < public/entity2/entitykeyvalues.h>
7+
8+ std::vector<CEntityKeyValues*> scheduleForDelete;
89
910ScreenText::~ScreenText ()
1011{
@@ -28,6 +29,8 @@ void ScreenText::Create(Color color, std::string font, int size, bool drawBackgr
2829
2930 CEntityKeyValues* pMenuKV = new CEntityKeyValues ();
3031
32+ scheduleForDelete.push_back (pMenuKV);
33+
3134 pMenuKV->SetBool (" enabled" , true );
3235 pMenuKV->SetFloat (" world_units_per_pixel" , (0.25 / 1050 ) * size);
3336 pMenuKV->SetInt (" justify_horizontal" , 0 );
@@ -38,13 +41,14 @@ void ScreenText::Create(Color color, std::string font, int size, bool drawBackgr
3841 pMenuKV->SetString (" font_name" , font.c_str ());
3942 pMenuKV->SetColor (" color" , color);
4043
41- if (drawBackground) {
44+ if (drawBackground) {
4245 pMenuKV->SetBool (" draw_background" , true );
4346
44- if (isMenu) {
47+ if (isMenu) {
4548 pMenuKV->SetFloat (" background_border_width" , 0.2 );
4649 pMenuKV->SetFloat (" background_border_height" , 0.15 );
47- } else {
50+ }
51+ else {
4852 pMenuKV->SetFloat (" background_border_width" , g_Config.FetchValue <float >(" core.vgui.textBackground.paddingX" ));
4953 pMenuKV->SetFloat (" background_border_height" , g_Config.FetchValue <float >(" core.vgui.textBackground.paddingY" ));
5054 }
@@ -68,7 +72,7 @@ void ScreenText::SetupViewForPlayer(Player* player)
6872 if (!pViewModel) return ;
6973
7074 g_entSystem.AcceptInput (pScreenEntity, " SetParent" , pViewModel, nullptr , " !activator" , 0 );
71- schema::SetProp<CHandle<CEntityInstance>>(pScreenEntity, " CBaseEntity" , " m_hOwnerEntity" , ((CEntityInstance*)pViewModel)->GetRefEHandle ());
75+ schema::SetProp<CHandle<CEntityInstance>>(pScreenEntity, " CBaseEntity" , " m_hOwnerEntity" , ((CEntityInstance*)( pViewModel) )->GetRefEHandle ());
7276}
7377
7478void ScreenText::SetText (std::string text)
@@ -88,31 +92,31 @@ void ScreenText::SetPosition(float posX, float posY)
8892
8993 if (!m_player) return ;
9094 if (m_player->IsFakeClient ()) return ;
91- if (!pScreenEntity) return ;
95+ if (!pScreenEntity) return ;
9296
9397 auto pawn = m_player->GetPlayerPawn ();
94- if (!pawn) return ;
98+ if (!pawn) return ;
9599
96- if (schema::GetProp<uint32_t >(pawn, " CBaseEntity" , " m_lifeState" ) == 2 ) {
100+ if (schema::GetProp<uint32_t >(pawn, " CBaseEntity" , " m_lifeState" ) == 2 ) {
97101 auto controller = m_player->GetController ();
98- if (!controller) return ;
99- if (schema::GetProp<bool >(controller, " CCSPlayerController" , " m_bControllingBot" )) return ;
102+ if (!controller) return ;
103+ if (schema::GetProp<bool >(controller, " CCSPlayerController" , " m_bControllingBot" )) return ;
100104
101105 auto observerServices = schema::GetProp<void *>(pawn, " CBasePlayerPawn" , " m_pObserverServices" );
102- if (!observerServices) return ;
106+ if (!observerServices) return ;
103107
104108 CHandle<CEntityInstance> observerTarget = schema::GetProp<CHandle<CEntityInstance>>(observerServices, " CPlayer_ObserverServices" , " m_hObserverTarget" );
105- if (!observerTarget) return ;
109+ if (!observerTarget) return ;
106110
107111 auto observerController = schema::GetProp<CHandle<CEntityInstance>>(observerTarget.Get (), " CCSPlayerPawnBase" , " m_hOriginalController" );
108- if (!observerController) return ;
112+ if (!observerController) return ;
109113
110114 CHandle<CEntityInstance> pawnHandle = schema::GetProp<CHandle<CEntityInstance>>(observerController, " CCSPlayerController" , " m_hPlayerPawn" );
111- if (!pawnHandle) return ;
115+ if (!pawnHandle) return ;
112116 pawn = (void *)(pawnHandle.Get ());
113117 }
114118
115- if (!pawn) return ;
119+ if (!pawn) return ;
116120
117121 QAngle eyeAngles = schema::GetProp<QAngle>(pawn, " CCSPlayerPawnBase" , " m_angEyeAngles" );
118122 Vector fwd, right, up;
@@ -126,13 +130,13 @@ void ScreenText::SetPosition(float posX, float posY)
126130 QAngle ang (0 , eyeAngles.y + 270 , 90 - eyeAngles.x );
127131
128132 void * bodyComponent = schema::GetProp<void *>(pawn, " CBaseEntity" , " m_CBodyComponent" );
129- if ( bodyComponent) return ;
133+ if (! bodyComponent) return ;
130134
131135 void * sceneNode = schema::GetProp<void *>(bodyComponent, " CBodyComponent" , " m_pSceneNode" );
132- if (!sceneNode) return ;
136+ if (!sceneNode) return ;
133137
134138 void * camServices = schema::GetProp<void *>(pawn, " CBasePlayerPawn" , " m_pCameraServices" );
135- if (!camServices) return ;
139+ if (!camServices) return ;
136140
137141 float oldZ = schema::GetProp<float >(camServices, " CPlayer_CameraServices" , " m_flOldPlayerViewOffsetZ" );
138142
@@ -190,4 +194,11 @@ bool ScreenText::IsRenderingTo(CHandle<CEntityInstance> renderingTo)
190194void ScreenText::SetRenderingTo (CEntityInstance* ent)
191195{
192196 pRenderingTo.Set (ent);
197+ }
198+
199+ void EraseScheduledCEntKeyVals () {
200+ for (auto e : scheduleForDelete) {
201+ delete e;
202+ }
203+ scheduleForDelete.clear ();
193204}
0 commit comments