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

◆ CanSetActionFromInventory()

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

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

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

Перекрестные ссылки 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().