Skip to content

Commit 42ac33e

Browse files
gunslingermodXottab-DUTY
authored andcommitted
Implementing more accurate way for weapon hiding fix
See previous commit for details
1 parent d243af2 commit 42ac33e

32 files changed

+69
-67
lines changed

src/xrGame/Artefact.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,10 +410,9 @@ bool CArtefact::Action(u16 cmd, u32 flags)
410410
return inherited::Action(cmd, flags);
411411
}
412412

413-
void CArtefact::OnStateSwitch(u32 S)
413+
void CArtefact::OnStateSwitch(u32 S, u32 oldState)
414414
{
415-
u32 oldState = GetState();
416-
inherited::OnStateSwitch(S);
415+
inherited::OnStateSwitch(S, oldState);
417416
switch (S)
418417
{
419418
case eShowing: { PlayHUDMotion("anm_show", FALSE, this, S);

src/xrGame/Artefact.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class CArtefact : public CHudItemObject, public CPHUpdateObject
9696
virtual void Show();
9797
virtual void UpdateXForm();
9898
virtual bool Action(u16 cmd, u32 flags);
99-
virtual void OnStateSwitch(u32 S);
99+
virtual void OnStateSwitch(u32 S, u32 oldState);
100100
virtual void OnAnimationEnd(u32 state);
101101
virtual bool IsHidden() const { return GetState() == eHidden; }
102102
// optimization FAST/SLOW mode

src/xrGame/CustomDetector.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,9 @@ void CCustomDetector::ToggleDetector(bool bFastMode)
117117
SwitchState(eHiding);
118118
}
119119

120-
void CCustomDetector::OnStateSwitch(u32 S)
120+
void CCustomDetector::OnStateSwitch(u32 S, u32 oldState)
121121
{
122-
u32 oldState = GetState();
123-
inherited::OnStateSwitch(S);
122+
inherited::OnStateSwitch(S, oldState);
124123

125124
switch (S)
126125
{

src/xrGame/CustomDetector.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class CCustomDetector : public CHudItemObject
144144

145145
virtual void OnActiveItem();
146146
virtual void OnHiddenItem();
147-
virtual void OnStateSwitch(u32 S);
147+
virtual void OnStateSwitch(u32 S, u32 oldState);
148148
virtual void OnAnimationEnd(u32 state);
149149
virtual void UpdateXForm();
150150

src/xrGame/Grenade.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,12 @@ bool CGrenade::DropGrenade()
136136

137137
void CGrenade::DiscardState()
138138
{
139-
if (IsGameTypeSingle() && (GetState() == eReady || GetState() == eThrow))
140-
OnStateSwitch(eIdle);
139+
if (IsGameTypeSingle())
140+
{
141+
u32 state = GetState();
142+
if (state == eReady || state == eThrow)
143+
OnStateSwitch(eIdle, state);
144+
}
141145
}
142146

143147
void CGrenade::SendHiddenItem()

src/xrGame/HudItem.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@ void CHudItem::OnEvent(NET_Packet& P, u16 type)
9797
{
9898
u8 S;
9999
P.r_u8(S);
100-
OnStateSwitch(u32(S));
100+
OnStateSwitch(u32(S), GetState());
101101
}
102102
break;
103103
}
104104
}
105105

106-
void CHudItem::OnStateSwitch(u32 S)
106+
void CHudItem::OnStateSwitch(u32 S, u32 oldState)
107107
{
108108
SetState(S);
109109

src/xrGame/HudItem.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class CHUDState
4848
IC u32 CurrStateTime() const { return Device.dwTimeGlobal - m_dw_curr_state_time; }
4949
IC void ResetSubStateTime() { m_dw_curr_substate_time = Device.dwTimeGlobal; }
5050
virtual void SwitchState(u32 S) = 0;
51-
virtual void OnStateSwitch(u32 S) = 0;
51+
virtual void OnStateSwitch(u32 S, u32 oldState) = 0;
5252
};
5353

5454
class CHudItem : public CHUDState
@@ -110,7 +110,7 @@ class CHudItem : public CHUDState
110110
bool IsHiding() const { return GetState() == eHiding; }
111111
bool IsShowing() const { return GetState() == eShowing; }
112112
virtual void SwitchState(u32 S);
113-
virtual void OnStateSwitch(u32 S);
113+
virtual void OnStateSwitch(u32 S, u32 oldState);
114114

115115
virtual void OnAnimationEnd(u32 state);
116116
virtual void OnMotionMark(u32 state, const motion_marks&){};

src/xrGame/Level_input.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ void CLevel::IR_OnKeyboardPress(int key)
385385
CHudItem* pHudItem = smart_cast<CHudItem*>(pActor->inventory().ActiveItem());
386386
if (pHudItem)
387387
{
388-
pHudItem->OnStateSwitch(pHudItem->GetState());
388+
pHudItem->OnStateSwitch(pHudItem->GetState(), pHudItem->GetState());
389389
}
390390
}
391391
}

src/xrGame/Missile.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ void CMissile::shedule_Update(u32 dt)
239239
}
240240
}
241241

242-
void CMissile::State(u32 state, u32 old_state)
242+
void CMissile::State(u32 state, u32 oldState)
243243
{
244244
switch (state)
245245
{
@@ -259,7 +259,7 @@ void CMissile::State(u32 state, u32 old_state)
259259
{
260260
if (H_Parent())
261261
{
262-
if (old_state != eHiding)
262+
if (oldState != eHiding)
263263
{
264264
SetPending(TRUE);
265265
PlayHUDMotion("anm_hide", TRUE, this, GetState());
@@ -311,11 +311,10 @@ void CMissile::State(u32 state, u32 old_state)
311311
}
312312
}
313313

314-
void CMissile::OnStateSwitch(u32 S)
314+
void CMissile::OnStateSwitch(u32 S, u32 oldState)
315315
{
316316
m_dwStateTime = 0;
317-
u32 oldState = GetState();
318-
inherited::OnStateSwitch(S);
317+
inherited::OnStateSwitch(S, oldState);
319318
State(S, oldState);
320319
}
321320

src/xrGame/Missile.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ class CMissile : public CHudItemObject
4545

4646
virtual bool Action(u16 cmd, u32 flags);
4747

48-
virtual void State(u32 state, u32 old_state);
49-
virtual void OnStateSwitch(u32 S);
48+
virtual void State(u32 state, u32 oldState);
49+
virtual void OnStateSwitch(u32 S, u32 oldState);
5050
virtual bool GetBriefInfo(II_BriefInfo& info);
5151

5252
protected:

0 commit comments

Comments
 (0)