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

◆ UpdatePossibleActions()

override void UpdatePossibleActions ( PlayerBase player,
ActionTarget target,
ItemBase item,
int action_condition_mask )

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

355 {
356 if (ForceActionCheck(player))
357 {
358 m_SelectActions.Clear();
359 m_SelectActions.Insert(m_ForcedActionData.m_Action);
360 return;
361 }
362
363 if (m_ForcedTarget)
364 {
365 target = m_ForcedTarget;
366 }
367
368 array<ActionBase> select_actions_all = new array<ActionBase>;
369 int last_index;
370 bool change = false;
371 m_HasTarget = false;
372
373 m_MainItem = item;
374 m_Target = target;
375 m_ConditionMask = action_condition_mask;
376
377 if (m_DetectFromItem)
378 {
379 _GetSelectedActions( item, select_actions_all, m_HasTarget);
380 }
381
382 if (m_DetectFromTarget)
383 {
384 _GetSelectedActions( target.GetObject(), select_actions_all, m_HasTarget);
385 _GetSelectedActions( target.GetParent(), select_actions_all, m_HasTarget);
386 }
387
388 if (m_DetectFromPlayer)
389 {
390 _GetSelectedActions( player, select_actions_all, m_HasTarget);
391 }
392
393 SortActions(select_actions_all);
394
395 if (select_actions_all.Count() > 0)
396 {
397 last_index = 0;
398 foreach (ActionBase action : select_actions_all)
399 {
400 if (m_HasTarget)
401 {
402 if (action.HasTarget())
403 {
404 if (m_SelectActions.Count() > last_index)
405 {
406 if (m_SelectActions[last_index] != action)
407 {
408 change = true;
409 m_SelectActions[last_index] = action;
410 }
411 }
412 else
413 {
414 change = true;
415 m_SelectActions.Insert(action);
416 }
417 action.OnActionInfoUpdate(player, target, item);
418 last_index++;
419 }
420 }
421 else
422 {
423 if (m_SelectActions.Count() > last_index)
424 {
425 if (m_SelectActions[last_index] != action)
426 {
427 change = true;
428 m_SelectActions[last_index++] = action;
429 }
430 }
431 else
432 {
433 change = true;
434 m_SelectActions.Insert(action);
435 }
436 action.OnActionInfoUpdate(player, target, item);
437 last_index++;
438 }
439 }
440 }
441 else
442 {
443 change = true;
445 m_SelectActions.Clear();
446 }
447
448 if (m_SelectActions.Count() > last_index)
449 {
450 change = true;
451 for (int i = last_index; i < m_SelectActions.Count(); ++i)
452 {
453 m_SelectActions.Remove(last_index);
454 }
455 }
456
457 if (change)
458 {
460 m_Player.GetActionManager().SelectFirstActionCategory();
461 }
462 }
int m_ConditionMask
Определения ActionBase.c:68
void ActionBase()
Определения ActionBase.c:82
ref ActionTarget m_Target
Определения ActionBase.c:18
void _GetSelectedActions(Object action_source_object, out array< ActionBase > select_actions_all, out bool has_any_action_target)
Определения ActionInput.c:310
int m_selectedActionIndex
Определения ActionInput.c:295
void SortActions(array< ActionBase > allActions)
sorts in order: performable -> non-performable (usually info). Extend/override as needed
Определения ActionInput.c:465
ActionInput m_SelectActions
class BaitData m_MainItem
DayZPlayer m_Player
Определения Hand_Events.c:42
Result for an object found in CGame.IsBoxCollidingGeometryProxy.

Перекрестные ссылки _GetSelectedActions(), ActionBase(), ActionTarget(), m_ConditionMask, m_MainItem, m_Player, m_SelectActions, m_selectedActionIndex, m_Target и SortActions().