///@{ actions /**@class HandActionBase * @brief represents action executed on transition just between OnExit from old state and OnEntry to new state **/ class HandActionBase { /**@fn Action * @brief executed when transition occurs **/ void Action (HandEventBase e) { } }; class HandActionCreated extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionCreated", e.m_Player.ToString() ); } #endif e.m_Player.OnItemInHandsChanged(); } }; class HandActionTake extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionTake", e.m_Player.ToString() ); } #endif GameInventory.LocationSyncMoveEntity(e.GetSrc(), e.GetDst()); e.m_Player.OnItemInHandsChanged(); } }; class HandActionDrop extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionDrop", e.m_Player.ToString() ); } #endif GameInventory.LocationSyncMoveEntity(e.GetSrc(), e.GetDst()); e.m_Player.OnItemInHandsChanged(); } }; class HandActionThrow extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionThrow", e.m_Player.ToString() ); } #endif HandEventThrow throwEvent = HandEventThrow.Cast(e); GameInventory.LocationSyncMoveEntity(e.GetSrc(), e.GetDst()); DayZPlayer player = DayZPlayer.Cast(e.m_Player); if ( player.GetInstanceType() != DayZPlayerInstanceType.INSTANCETYPE_REMOTE ) { InventoryItem item = InventoryItem.Cast(e.GetSrcEntity()); if( item ) item.ThrowPhysically(player, throwEvent.GetForce()); else Error("[hndfsm] HandActionThrow - src entity null!"); } player.OnItemInHandsChanged(); } }; class HandActionMoveTo extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionMoveTo", e.m_Player.ToString() ); } #endif HandEventMoveTo es = HandEventMoveTo.Cast(e); if (es) { GameInventory.LocationSyncMoveEntity(e.GetSrc(), es.m_Dst); e.m_Player.OnItemInHandsChanged(); } else Error("[hndfsm] HandActionMoveTo - this is no HandEventMoveTo"); } }; class HandActionDestroy extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionDestroy", e.m_Player.ToString() ); } #endif GetGame().ObjectDelete(e.GetSrcEntity()); e.m_Player.OnItemInHandsChanged(); } }; class HandActionDestroyed extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionDestroyed", e.m_Player.ToString() ); } #endif e.m_Player.OnItemInHandsChanged(); } }; class HandActionDestroyAndReplaceWithNew extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionDestroyAndReplaceWithNew", e.m_Player.ToString() ); } #endif Man player = e.m_Player; EntityAI itemInHands = player.GetHumanInventory().GetEntityInHands(); InventoryLocation src = new InventoryLocation; if (itemInHands.GetInventory().GetCurrentInventoryLocation(src)) { HandEventDestroyAndReplaceWithNew edr = HandEventDestroyAndReplaceWithNew.Cast(e); if (edr) { edr.m_Lambda.Execute(); return; } else Error("[hndfsm] HandActionDestroyAndReplaceWithNew - not a HandEventDestroyAndReplaceWithNew event"); } else Error("[hndfsm] HandActionDestroyAndReplaceWithNew - itemInHands has no InventoryLocation"); } }; class HandActionDestroyAndReplaceWithNewElsewhere extends HandActionDestroyAndReplaceWithNew { override void Action (HandEventBase e) { super.Action(e); } }; class HandActionReplaced extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionReplaced", e.m_Player.ToString() ); } #endif Man player = e.m_Player; player.OnItemInHandsChanged(); } }; class HandActionSwap extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionSwap", e.m_Player.ToString() ); } #endif HandEventSwap es = HandEventSwap.Cast(e); if (es) { GameInventory.LocationSwap(es.GetSrc(), es.m_Src2, es.GetDst(), es.m_Dst2); e.m_Player.OnItemInHandsChanged(); } else Error("[hndfsm] HandActionSwap - this is no HandEventSwap"); } }; class HandActionForceSwap extends HandActionBase { override void Action (HandEventBase e) { #ifdef ENABLE_LOGGING if ( LogManager.IsInventoryHFSMLogEnable() ) { Debug.InventoryHFSMLog("Action - STS = " + e.m_Player.GetSimulationTimeStamp(), e.ToString() , "n/a", "HandActionForceSwap", e.m_Player.ToString() ); } #endif HandEventForceSwap es = HandEventForceSwap.Cast(e); if (es) { GameInventory.LocationSwap(es.GetSrc(), es.m_Src2, es.GetDst(), es.m_Dst2); e.m_Player.OnItemInHandsChanged(); } else Error("[hndfsm] HandActionForceSwap - this is no HandEventForceSwap"); } }; ///@} actions