TelescopicBaton.c
class TelescopicBaton : ItemBase
{
protected int m_MeleeMode;
protected int m_MeleeHeavyMode;
protected int m_MeleeSprintMode;
protected ref OpenableBehaviour m_Openable;
void TelescopicBaton()
{
//!set default melee modes on init
m_MeleeMode = 0;
m_MeleeHeavyMode = 1;
m_MeleeSprintMode = 2;
m_Openable = new OpenableBehaviour(false);
RegisterNetSyncVariableBool("m_Openable.m_IsOpened");
UpdateVisualState();
}
override void Open()
{
m_Openable.Open();
SetSynchDirty();
//! sets different set of melee modes for opened state
m_MeleeMode = 3;
m_MeleeHeavyMode = 4;
m_MeleeSprintMode = 5;
UpdateVisualState();
}
override void Close()
{
m_Openable.Close();
SetSynchDirty();
//! sets different set of melee modes for closed state
m_MeleeMode = 0;
m_MeleeHeavyMode = 1;
m_MeleeSprintMode = 2;
UpdateVisualState();
}
override bool IsOpen()
{
return m_Openable.IsOpened();
}
protected void UpdateVisualState()
{
if ( IsOpen() )
{
SetAnimationPhase("Doors1", 0.0);
}
else
{
SetAnimationPhase("Doors1", 1.0);
}
}
override int GetMeleeMode()
{
return m_MeleeMode;
}
override int GetMeleeHeavyMode()
{
return m_MeleeHeavyMode;
}
override int GetMeleeSprintMode()
{
return m_MeleeSprintMode;
}
override void OnVariablesSynchronized()
{
super.OnVariablesSynchronized();
UpdateVisualState();
}
override void SetActions()
{
super.SetActions();
AddAction(ActionOpen);
AddAction(ActionClose);
}
}