44 Magazine mag = Magazine.Cast(action_data.m_Target.GetObject());
49 if( !super.InventoryReservation( action_data) )
52 DetachMagActionData action_data_dm = DetachMagActionData.Cast(action_data);
53 if( !action_data.m_Player.GetInventory().AddInventoryReservationEx(mag,il,10000) )
56 action_data_dm.m_ReservedInventoryLocations.Insert(il);
57 action_data_dm.m_ilMagazine = il;
64 ActionData action_data =
new DetachMagActionData;
70 super.WriteToContext(ctx, action_data);
72 DetachMagActionData action_data_dm;
73 DetachMagActionData.CastTo(action_data_dm, action_data);
75 action_data_dm.m_ilMagazine.WriteToContext(ctx);
80 if(!action_recive_data)
85 if(!super.ReadFromContext( ctx, action_recive_data ))
101 super.HandleReciveData(action_recive_data, action_data);
104 DetachMagActionData action_data_dm = DetachMagActionData.Cast(action_data);
106 action_data_dm.m_ilMagazine = recive_data_dm.
m_ilMagazine;
112 if (!super.ActionCondition( player, target, item ))
115 Magazine mag = Magazine.Cast(target.GetObject());
117 return mag && player.GetWeaponManager().CanDetachMagazine(wpn,mag);
127 super.Start( action_data );
128 DetachMagActionData action_data_dm = DetachMagActionData.Cast(action_data);
132 action_data.m_Player.GetWeaponManager().DetachMagazine(action_data_dm.m_ilMagazine,
this);
155 ActionData action_data =
new AdvDetachMagActionData;
163 Magazine mag = Magazine.Cast(action_data.m_Target.GetObject());
169 int ur_index = action_data.m_Player.GetHumanInventory().FindUserReservedLocationIndex(wpn);
172 action_data.m_Player.GetHumanInventory().GetUserReservedLocation(ur_index,ilWpn);
184 if( !super.InventoryReservation( action_data ) )
187 AdvDetachMagActionData action_data_dm = AdvDetachMagActionData.Cast(action_data);
188 if( !action_data.m_Player.GetInventory().AddInventoryReservationEx(wpn,ilWpn,10000) )
191 if( !action_data.m_Player.GetInventory().AddInventoryReservationEx(mag,ilMag,10000) )
194 action_data_dm.m_ReservedInventoryLocations.Insert(ilWpn);
195 action_data_dm.m_ReservedInventoryLocations.Insert(ilMag);
196 action_data_dm.m_ilWeapon = ilWpn;
197 action_data_dm.m_ilMagazine = ilMag;
204 super.WriteToContext(ctx, action_data);
206 AdvDetachMagActionData action_data_dm;
207 AdvDetachMagActionData.CastTo(action_data_dm, action_data);
209 action_data_dm.m_ilWeapon.WriteToContext(ctx);
210 action_data_dm.m_ilMagazine.WriteToContext(ctx);
215 if(!action_recive_data)
220 if(!super.ReadFromContext( ctx, action_recive_data ))
240 super.HandleReciveData(action_recive_data, action_data);
243 AdvDetachMagActionData action_data_dm = AdvDetachMagActionData.Cast(action_data);
245 action_data_dm.m_ilWeapon.Copy(recive_data_dm.
m_ilWeapon);
246 action_data_dm.m_ilMagazine.Copy(recive_data_dm.
m_ilMagazine);
258 m_ConditionTarget =
new CCTNone;
268 if (!super.ActionCondition( player, target, item ))
272 int mi = wpn.GetCurrentMuzzle();
273 return wpn && wpn.GetMagazine(mi) == target.GetObject();
283 if( action_data.m_ReciveEndInput )
288 super.OnStageStart(action_data);
292 AdvDetachMagActionData action_data_dm = AdvDetachMagActionData.Cast(action_data);
297 action_data.m_Player.GetWeaponManager().DetachMagazine(action_data_dm.m_ilMagazine,
this);
301 if ( !action_data_dm.m_ilWeapon.IsValid() )
308 mag = Magazine.Cast(action_data.m_Target.GetObject());
310 action_data.m_Player.GetHumanInventory().ClearUserReservedLocation(wpn);
311 if ( ( !
GetGame().IsDedicatedServer() ) && !mag.GetHierarchyParent() )
315 if ( action_data.m_Player.NeedInventoryJunctureFromServer(mag, action_data.m_Player, action_data.m_Player) || action_data.m_Player.NeedInventoryJunctureFromServer(wpn, action_data.m_Player, action_data.m_Player) )
318 action_data.m_Player.GetInventory().ForceSwapEntities(invMode, mag, wpn, action_data_dm.m_ilWeapon);
331 super.OnUpdate( action_data );
341 if ( (!wpn || ad.m_Player.GetItemInHands()!=wpn || !ad.m_Player.GetWeaponManager().IsRunning()) && !ad.m_Player.IsJumpInProgress() )
358 super.OnStartServer(action_data);
360 AdvDetachMagActionData action_data_dm = AdvDetachMagActionData.Cast(action_data);
366 super.OnEndServer(action_data);
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
void SetStage(int stage, SequentialActionData action_data)
class ActionTargets ActionTarget
DetachMagActionReciveData m_ilMagazine
AdvDetachMagActionReciveData m_ilWeapon
FindInventoryLocationType
flags for searching locations in inventory
proto static native void End()
Finalizes the testing process.
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
ref InventoryLocation m_ilWeapon
ref InventoryLocation m_ilMagazine
proto native bool ClearJuncture(Man player, notnull EntityAI item)
bool AddInventoryJunctureEx(Man player, notnull EntityAI item, InventoryLocation dst, bool test_dst_occupancy, int timeout_ms)
ref InventoryLocation m_ilMagazine
override bool HasProgress()
override bool ActionConditionContinue(ActionData action_data)
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
override bool HasTarget()
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
void FirearmActionDetachMagazine_Old()
override bool CanBePerformedFromQuickbar()
override ActionData CreateActionData()
override bool InventoryReservation(ActionData action_data)
override void Start(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override void CreateConditionComponents()
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
override void OnEndServer(ActionData action_data)
override void OnUpdate(ActionData action_data)
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override void OnStartServer(ActionData action_data)
override bool ActionConditionContinue(ActionData action_data)
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
override ActionData CreateActionData()
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override bool InventoryReservation(ActionData action_data)
void FirearmActionDetachMagazine()
override bool CanBePerformedFromQuickbar()
override void CreateConditionComponents()
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
override void OnStageStart(SequentialActionData action_data)
bool ReadFromContext(ParamsReadContext ctx)
Serializer ParamsReadContext
proto native CGame GetGame()
Serializer ParamsWriteContext