internal WeaponPickerDialog CreateWeaponPickerDialog(IObjectPool pool, IWeaponPod pod) { Debug.Assert(ActiveDialog is null); var dialog = pool.GetObject <WeaponPickerDialog>(); dialog.Init(initContext, pod, weaponsSettings); dialog.Position(GetDialogTopLeft(pod.Bounds, View, dialog.Size)); dialog.InitContent(initContentContext); return(dialog); }
/// <summary> /// Updates weapon pods and returns a clicked weapon pod if any. /// Caller is responsible for process click - i.e. create <see cref="WeaponPickerDialog"/>. /// </summary> /// <param name="childContext"></param> /// <param name="weaponPods"></param> /// <param name="currentEnemyWave"></param> /// <param name="canEntityClick"></param> /// <returns></returns> public static IWeaponPod UpdateWeaponPods(UpdateContext childContext, IWeaponPod[] weaponPods, IEnemyWave currentEnemyWave, bool canEntityClick) { IWeaponPod clickedWeaponPod = null; // converts mouse coordinates to absolute to scene foreach (var wp in weaponPods) { wp.Update(childContext, currentEnemyWave); // disable upgrades for now if (canEntityClick && wp.ClickState == ClickState.Clicked && wp.Weapon is null) { logger.Info($"Weapon pod {Array.IndexOf(weaponPods, wp)} was clicked"); clickedWeaponPod = wp; } } return(clickedWeaponPod); }