DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ CanSetActionFromInventory()

bool ActionManagerClient::CanSetActionFromInventory ( ItemBase mainItem,
ItemBase targetItem )
inlineprotected

См. определение в файле ActionManagerClient.c строка 1138

1139 {
1140 ItemBase itemInHand = m_Player.GetItemInHands();
1141 ActionTarget target;
1142 EntityAI parent = null;
1143 if (targetItem)
1144 {
1145 parent = targetItem.GetHierarchyParent();
1146 }
1147 target = new ActionTarget(targetItem, parent, -1, vector.Zero, -1);
1148 bool hasTarget = targetItem != NULL;
1149
1150 if (mainItem)
1151 {
1152 array<ActionBase_Basic> actions;
1153 array<ref ActionBase> variant_actions;
1154 ActionBase picked_action;
1155 int variants_count,v;
1156
1157 //First check single use actions
1158 mainItem.GetActions(DefaultActionInput, actions);
1159 if (actions)
1160 {
1161 for (int i = 0; i < actions.Count(); i++)
1162 {
1163 picked_action = ActionBase.Cast(actions[i]);
1164 if (picked_action.HasVariants())
1165 {
1166 picked_action.UpdateVariants(itemInHand, targetItem, -1);
1167 picked_action.GetVariants(variant_actions);
1168 for (v = 0; v < variant_actions.Count(); v ++)
1169 {
1170 picked_action = variant_actions[v];
1171 if (picked_action && picked_action.CanBeSetFromInventory() && picked_action.Can(m_Player,target, itemInHand))
1172 {
1173 if (hasTarget == picked_action.HasTarget())
1174 return true;
1175 }
1176 }
1177 }
1178 else
1179 {
1180 if (picked_action && picked_action.CanBeSetFromInventory() && picked_action.Can(m_Player,target, itemInHand))
1181 {
1182 if (hasTarget == picked_action.HasTarget())
1183 return true;
1184 }
1185 }
1186 }
1187 }
1188 //second continuous actions
1189 mainItem.GetActions(ContinuousDefaultActionInput, actions);
1190 if (actions)
1191 {
1192 for (int j = 0; j < actions.Count(); j++)
1193 {
1194 picked_action = ActionBase.Cast(actions[j]);
1195 if (picked_action.HasVariants())
1196 {
1197 picked_action.UpdateVariants(itemInHand, targetItem, -1);
1198 picked_action.GetVariants(variant_actions);
1199 for (v = 0; v < variant_actions.Count(); v ++)
1200 {
1201 picked_action = variant_actions[v];
1202 if (picked_action && picked_action.HasTarget() && picked_action.CanBeSetFromInventory() && picked_action.Can(m_Player,target, itemInHand))
1203 {
1204 if (hasTarget == picked_action.HasTarget())
1205 return true;
1206 }
1207 }
1208 }
1209 else
1210 {
1211 if (picked_action && picked_action.HasTarget() && picked_action.CanBeSetFromInventory() && picked_action.Can(m_Player,target, itemInHand))
1212 {
1213 if (hasTarget == picked_action.HasTarget())
1214 return true;
1215 }
1216 }
1217 }
1218 }
1219 }
1220 return false;
1221 }
class LogManager EntityAI
void ContinuousDefaultActionInput(PlayerBase player)
Определения ActionInput.c:607
class ActionTargets ActionTarget
class GP5GasMask extends MaskBase ItemBase
DayZPlayer m_Player
Определения Hand_Events.c:42
int GetVariants(out array< ref ActionBase > variants)
Определения ActionBase.c:928
bool HasVariants()
Определения ActionBase.c:915
void UpdateVariants(Object item, Object target, int componet_index)
Определения ActionBase.c:946
bool HasTarget()
Определения ActionBase.c:244
bool Can(PlayerBase player, ActionTarget target, ItemBase item, int condition_mask)
Определения ActionBase.c:861
bool CanBeSetFromInventory()
Определения ActionBase.c:313

Перекрестные ссылки ActionTarget, ActionBase::Can(), ActionBase::CanBeSetFromInventory(), ContinuousDefaultActionInput(), ActionBase::GetVariants(), ActionBase::HasTarget(), ActionBase::HasVariants(), m_Player, ActionBase::UpdateVariants() и vector::Zero.

Используется в Container::CanCombineAmmo(), VicinitySlotsContainer::CanCombineAmmo(), ItemManager::GetChosenCombinationFlag(), HandsContainer::GetCombinationFlags() и ItemManager::GetCombinationFlags().