Skip to content

Commit 7841665

Browse files
committed
refactor(welder): extract FinishWeld routine
1 parent 122cd1b commit 7841665

2 files changed

Lines changed: 31 additions & 47 deletions

File tree

src/game/shared/swarm/asw_weapon_welder_shared.cpp

Lines changed: 29 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -207,19 +207,7 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
207207

208208
if ( !bWelding )
209209
{
210-
m_iAutomaticWeldDirection = 0;
211-
m_bShotDelayed = false;
212-
#ifdef GAME_DLL
213-
if ( pMarine->GetMarineResource() )
214-
{
215-
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
216-
}
217-
218-
m_pWeldDoor = NULL;
219-
220-
pMarine->OnWeldFinished();
221-
#endif
222-
m_bIsFiring = false;
210+
FinishWeld( pMarine, false );
223211
}
224212
else
225213
{
@@ -234,29 +222,41 @@ void CASW_Weapon_Welder::WeldDoor(bool bSeal)
234222
}
235223
}
236224

225+
void CASW_Weapon_Welder::FinishWeld( CASW_Marine* pMarine, bool bKeepWeldDirection )
226+
{
227+
if ( !bKeepWeldDirection )
228+
{
229+
m_iAutomaticWeldDirection = 0;
230+
}
231+
m_bShotDelayed = false;
232+
#ifdef GAME_DLL
233+
if ( pMarine )
234+
{
235+
if ( pMarine->GetMarineResource() )
236+
{
237+
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
238+
}
239+
pMarine->OnWeldFinished();
240+
}
241+
#endif // GAME_DLL
242+
#ifndef CLIENT_DLL
243+
m_pWeldDoor = NULL;
244+
#endif // CLIENT_DLL
245+
m_bIsFiring = false;
246+
}
247+
237248
// make the weapon weld if needed
238249

239250
void CASW_Weapon_Welder::ItemPostFrame()
240251
{
252+
CASW_Marine *pMarine = NULL;
241253
#ifndef CLIENT_DLL
242-
CASW_Marine *pMarine = GetMarine();
254+
pMarine = GetMarine();
243255
if ( !pMarine || !pMarine->GetCommander() )
244256
{
245257
if ( m_bPlayingWelderSound )
246258
{
247-
m_bIsFiring = false;
248-
249-
m_pWeldDoor = NULL;
250-
251-
if (pMarine)
252-
{
253-
if (pMarine->GetMarineResource())
254-
{
255-
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
256-
}
257-
258-
pMarine->OnWeldFinished();
259-
}
259+
FinishWeld( pMarine, true );
260260
//Msg( "Clearing weld door as no marine\n" );
261261
}
262262
return BaseItemPostFrame();
@@ -321,32 +321,14 @@ void CASW_Weapon_Welder::ItemPostFrame()
321321
if ( ( m_iAutomaticWeldDirection > 0 && m_pWeldDoor->GetSealAmount() >= 1.0f ) ||
322322
( m_iAutomaticWeldDirection < 0 && m_pWeldDoor->GetSealAmount() <= 0.0f ) )
323323
{
324-
m_bShotDelayed = false;
325-
#ifdef GAME_DLL
326-
if ( pMarine->GetMarineResource() )
327-
{
328-
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
329-
}
330-
m_pWeldDoor = NULL;
331-
pMarine->OnWeldFinished();
332-
#endif
333-
m_bIsFiring = false;
324+
FinishWeld( pMarine, false );
334325
}
335326
}
336327
else
337328
{
338329
if ( !FindDoor() )
339330
{
340-
m_bShotDelayed = false;
341-
#ifdef GAME_DLL
342-
if ( pMarine->GetMarineResource() )
343-
{
344-
pMarine->GetMarineResource()->m_hWeldingDoor = NULL;
345-
}
346-
m_pWeldDoor = NULL;
347-
pMarine->OnWeldFinished();
348-
#endif
349-
m_bIsFiring = false;
331+
FinishWeld( pMarine, true );
350332
}
351333
}
352334
}

src/game/shared/swarm/asw_weapon_welder_shared.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#ifdef CLIENT_DLL
66
#define CASW_Weapon_Welder C_ASW_Weapon_Welder
77
#define CASW_Weapon C_ASW_Weapon
8+
#define CASW_Marine C_ASW_Marine
89
#include "c_asw_weapon.h"
910
#else
1011
#include "asw_weapon.h"
@@ -29,6 +30,7 @@ class CASW_Weapon_Welder : public CASW_Weapon
2930
virtual void PrimaryAttack();
3031
virtual void SecondaryAttack();
3132
virtual void WeldDoor(bool bSeal);
33+
virtual void FinishWeld( CASW_Marine* pMarine, bool bKeepWeldDirection = false );
3234

3335
#ifndef CLIENT_DLL
3436
DECLARE_DATADESC();

0 commit comments

Comments
 (0)