Dayz 1.25
Dayz Code Explorer by KGB
Загрузка...
Поиск...
Не найдено
Класс FirearmActionAttachMagazine
+ Граф наследования:FirearmActionAttachMagazine:

Закрытые члены

void FirearmActionAttachMagazine ()
 
override int GetActionCategory ()
 
override bool ActionCondition (PlayerBase player, ActionTarget target, ItemBase item)
 
override bool ActionConditionContinue (ActionData action_data)
 
override ActionData CreateActionData ()
 
override void WriteToContext (ParamsWriteContext ctx, ActionData action_data)
 
override bool ReadFromContext (ParamsReadContext ctx, out ActionReciveData action_recive_data)
 
override void HandleReciveData (ActionReciveData action_recive_data, ActionData action_data)
 
override bool Post_SetupAction (ActionData action_data)
 
override bool InventoryReservation (ActionData action_data)
 
override void Start (ActionData action_data)
 
override bool CanBePerformedFromInventory ()
 
override bool CanBePerformedFromQuickbar ()
 

Подробное описание

Конструктор(ы)

◆ FirearmActionAttachMagazine()

void FirearmActionAttachMagazine ( )
inlineprivate
17 {
18 m_Text = "#attach";
19 }
string m_Text
Definition ActionBase.c:49

Перекрестные ссылки m_Text.

Методы

◆ ActionCondition()

override bool ActionCondition ( PlayerBase player,
ActionTarget target,
ItemBase item )
inlineprivate
27 {
28 if (!super.ActionCondition( player, target, item ))
29 return false;
30
31 HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
32 Magazine mag = Magazine.Cast(target.GetObject());
34 return mag && (player.GetWeaponManager().CanAttachMagazine(wpn,mag) || player.GetWeaponManager().CanSwapMagazine(wpn,mag)) && (!hcw || hcw.GetRunningAction() != WeaponActions.RELOAD);
35 }
Definition human.c:987
Definition EntityAI.c:95
shorthand
Definition BoltActionRifle_Base.c:6
WeaponActions
actions
Definition human.c:809

◆ ActionConditionContinue()

override bool ActionConditionContinue ( ActionData action_data)
inlineprivate
38 {
39 return true;
40 }

◆ CanBePerformedFromInventory()

override bool CanBePerformedFromInventory ( )
inlineprivate
214 {
215 return true;
216 }

◆ CanBePerformedFromQuickbar()

override bool CanBePerformedFromQuickbar ( )
inlineprivate
219 {
220 return true;
221 }

◆ CreateActionData()

override ActionData CreateActionData ( )
inlineprivate

◆ GetActionCategory()

override int GetActionCategory ( )
inlineprivate
22 {
23 return AC_SINGLE_USE;
24 }
const int AC_SINGLE_USE
Definition _constants.c:2

Перекрестные ссылки AC_SINGLE_USE.

◆ HandleReciveData()

override void HandleReciveData ( ActionReciveData action_recive_data,
ActionData action_data )
inlineprivate
78 {
81
82 action_data.m_MainItem = action_recive_data.m_MainItem;
83 if (!action_recive_data.m_Target)
84 {
85 action_data.m_Target = new ActionTarget(NULL, NULL, -1, vector.Zero, 0);
86 }
87 else
88 {
89 action_data.m_Target = action_recive_data.m_Target;
90 }
91 action_data_am.m_ilOldMagazine = recive_data_am.m_ilOldMagazine;
92 }
class ActionTargets ActionTarget
Definition FirearmActionAttachMagazine.c:2
Definition EnConvert.c:106
static const vector Zero
Definition EnConvert.c:110

Перекрестные ссылки ActionTarget и vector::Zero.

◆ InventoryReservation()

override bool InventoryReservation ( ActionData action_data)
inlineprivate
116 {
117 if( (IsLocal() || !UseAcknowledgment()) && IsInstant() )
118 return true;
119
120 bool success = true;
124
125 PlayerBase player = action_data.m_Player;
127
128 Weapon_Base wpn = Weapon_Base.Cast(action_data.m_MainItem);
129 int muzzle_index = wpn.GetCurrentMuzzle();
130
131 Magazine new_mag = Magazine.Cast(action_data.m_Target.GetObject());
132
133 if (am_action_data.m_oldMagazine)
134 {
136 if ( action_data.m_Player.GetInventory().HasInventoryReservation( am_action_data.m_oldMagazine, am_action_data.m_ilOldMagazine) )
137 {
138 success = false;
139 }
140 else
141 {
142 player.GetInventory().AddInventoryReservationEx(am_action_data.m_oldMagazine,am_action_data.m_ilOldMagazine,GameInventory.c_InventoryReservationTimeoutMS);
143 }
144 }
145
146 if (success)
147 {
149 targetInventoryLocation.SetAttachment( wpn, new_mag, InventorySlots.MAGAZINE);
150 if ( action_data.m_Player.GetInventory().HasInventoryReservation( new_mag, targetInventoryLocation) )
151 {
152 success = false;
153 if (am_action_data.m_oldMagazine)
154 {
155 player.GetInventory().ClearInventoryReservation(am_action_data.m_oldMagazine,am_action_data.m_ilOldMagazine);
156 }
157 }
158 else
159 {
160 action_data.m_Player.GetInventory().AddInventoryReservationEx( new_mag, targetInventoryLocation, GameInventory.c_InventoryReservationTimeoutMS);
161 }
162 }
163
164 if (success)
165 {
167 handInventoryLocation.SetHands(action_data.m_Player, wpn);
168
169 if ( action_data.m_Player.GetInventory().HasInventoryReservation( wpn, handInventoryLocation) )
170 {
171 if (am_action_data.m_oldMagazine)
172 {
173 player.GetInventory().ClearInventoryReservation(am_action_data.m_oldMagazine,am_action_data.m_ilOldMagazine);
174 }
175 player.GetInventory().ClearInventoryReservation(new_mag, targetInventoryLocation);
176 success = false;
177 }
178 else
179 {
180 action_data.m_Player.GetInventory().AddInventoryReservationEx( wpn, handInventoryLocation, GameInventory.c_InventoryReservationTimeoutMS);
181 }
182 }
183
184 if ( success )
185 {
186 if (am_action_data.m_ilOldMagazine)
187 action_data.m_ReservedInventoryLocations.Insert(am_action_data.m_ilOldMagazine);
188
190 action_data.m_ReservedInventoryLocations.Insert(targetInventoryLocation);
191
193 action_data.m_ReservedInventoryLocations.Insert(handInventoryLocation);
194 }
195
196 return success;
197 }
bool UseAcknowledgment()
Definition ActionBase.c:893
bool IsLocal()
Definition ActionBase.c:244
bool IsInstant()
Definition ActionBase.c:250
script counterpart to engine's class Inventory
Definition Inventory.c:79
const int c_InventoryReservationTimeoutMS
reservations
Definition Inventory.c:713
InventoryLocation.
Definition InventoryLocation.c:28
provides access to slot configuration
Definition InventorySlots.c:6
Definition PlayerBaseClient.c:2

Перекрестные ссылки GameInventory::c_InventoryReservationTimeoutMS, IsInstant(), IsLocal() и UseAcknowledgment().

Используется в Start().

◆ Post_SetupAction()

override bool Post_SetupAction ( ActionData action_data)
inlineprivate
95 {
96 if ( !GetGame().IsDedicatedServer() )
97 {
98 Weapon_Base wpn = Weapon_Base.Cast(action_data.m_MainItem);
99 int muzzle_index = wpn.GetCurrentMuzzle();
100
102 am_action_data.m_oldMagazine = wpn.GetMagazine(muzzle_index);
103
105
106 if (!action_data.m_Player.GetWeaponManager().PrepareInventoryLocationForMagazineSwap(wpn, Magazine.Cast(action_data.m_Target.GetObject()), new_il))
107 {
108 return false;
109 }
110 am_action_data.m_ilOldMagazine = new_il;
111 }
112 return true;
113 }
proto native CGame GetGame()

Перекрестные ссылки GetGame().

◆ ReadFromContext()

override bool ReadFromContext ( ParamsReadContext ctx,
out ActionReciveData action_recive_data )
inlineprivate
59 {
61 {
63 }
64
65 super.ReadFromContext(ctx, action_recive_data);
66
68 if (!il.ReadFromContext(ctx))
69 return false;
70
72 recive_data_am.m_ilOldMagazine = il;
73
74 return true;
75 }

◆ Start()

override void Start ( ActionData action_data)
inlineprivate
200 {
201 super.Start( action_data );
203 Weapon_Base wpn = Weapon_Base.Cast(action_data.m_MainItem);
204 Magazine mag = Magazine.Cast(action_data.m_Target.GetObject());
206 if ( action_data.m_Player.GetWeaponManager().CanAttachMagazine(wpn,mag,false) )
207 action_data.m_Player.GetWeaponManager().AttachMagazine(mag, this);
208 else
209 action_data.m_Player.GetWeaponManager().SwapMagazineEx(mag, action_data_am.m_ilOldMagazine, this);
211 }
void ClearInventoryReservationEx(ActionData action_data)
Definition ActionBase.c:862
override bool InventoryReservation(ActionData action_data)
Definition FirearmActionAttachMagazine.c:115

Перекрестные ссылки ClearInventoryReservationEx() и InventoryReservation().

◆ WriteToContext()

override void WriteToContext ( ParamsWriteContext ctx,
ActionData action_data )
inlineprivate
50 {
51 super.WriteToContext(ctx, action_data);
52
54
55 action_data_am.m_ilOldMagazine.WriteToContext(ctx);
56 }

Объявления и описания членов класса находятся в файле: