actionresetcodeoncodelock..c
class ActionResetCodeOnCodeLock : ActionInteractBase
{
protected const string SELECTION_FRONT = "front";
override void CreateConditionComponents()
{
m_ConditionItem = new CCINone();
m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
m_Text = "#STR_RESET_CODE";
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
if (!super.ActionCondition(player, target, item))
return false;
DigitalCodeLock codeLock = DigitalCodeLock.Cast(target.GetObject());
if ((!codeLock || (codeLock && !codeLock.GetCompEM().IsWorking())))
return false;
bool isFacingBackside = codeLock.IsPlayerOnBackside(player);
if (!codeLock.HasPIN() || codeLock.IsLocked() || isFacingBackside)
return false;
return true;
}
override void OnExecuteServer(ActionData action_data)
{
DigitalCodeLock codeLock = DigitalCodeLock.Cast(action_data.m_Target.GetObject());
if (!codeLock)
return;
codeLock.ResetPIN();
}
override void OnExecuteClient(ActionData action_data)
{
DigitalCodeLock codeLock = DigitalCodeLock.Cast(action_data.m_Target.GetObject());
if (!codeLock)
return;
#ifndef NO_GUI
DigitalCodeLockUIBase codeLockUI = DigitalCodeLockUIBase.Cast(GetGame().GetUIManager().EnterScriptedMenu(MENU_DIGITAL_CODELOCK, null));
codeLockUI.SetTargetLock(codeLock.GetCodeLockComponent());
#endif
}
//! Only handles single player/offline handling
override void OnExecute(ActionData action_data)
{
if (!GetGame().IsServer() && GetGame().IsMultiplayer())
return;
DigitalCodeLock codeLock = DigitalCodeLock.Cast(action_data.m_Target.GetObject());
if (!codeLock)
return;
#ifndef NO_GUI
DigitalCodeLockUIBase codeLockUI = DigitalCodeLockUIBase.Cast(GetGame().GetUIManager().EnterScriptedMenu(MENU_DIGITAL_CODELOCK, null));
codeLockUI.SetTargetLock(codeLock.GetCodeLockComponent());
#endif
}
override bool CanBeSetFromInventory()
{
return false;
}
}