/// <summary> /// Instantiates the cancel button. /// </summary> /// <returns>The cancel button.</returns> /// <param name="container">Container.</param> /// <param name="numberOfButtons">Number of buttons.</param> /// <param name="index">Index.</param> /// <param name="iconPath">Icon path.</param> private RadialButtonController InstantiateCancelButton(RadialButtonContainer container, int numberOfButtons, int index, string iconPath) { RadialButtonController.RadialButtonType radialButtonType = RadialButtonController.RadialButtonType.CANCEL; RadialButtonController cancelButton = InstantiateButton(container, numberOfButtons, index, iconPath, radialButtonType, radialButtonType.ToString()); return(cancelButton); }
/// <summary> /// Instantiates the item buttons. /// </summary> public void InstantiateItemButtons() { if (_combatController.CurrentRadialButtonContainer != null) { _popupText.text = ""; StartCoroutine(_combatController.CurrentRadialButtonContainer.ScaleButtonsIn()); } RadialButtonContainer radialButtonContainer = InstantiateRadialButtonContainer(); List <Item> items = ItemManager.Instance.GlobalInventory.GetConsumables(); int numberOfButtons = items.Count + 1; for (int index = 0; index < items.Count; index++) { Item item = items [index]; RadialButtonController button = InstantiateButton(radialButtonContainer, numberOfButtons, index, item.IconPath, RadialButtonController.RadialButtonType.ITEM_USE, item.Name); button.Item = item; radialButtonContainer.Add(button); } RadialButtonController cancelButton = InstantiateCancelButton(radialButtonContainer, numberOfButtons, items.Count, _combatOptions [4]); radialButtonContainer.Add(cancelButton); SetRadialButtonContainer(radialButtonContainer); IsRootMenuOpen = false; }
/// <summary> /// Instantiates the buttons. /// </summary> public void InstantiateRootButtons() { RadialButtonContainer radialButtonContainer; // If there is already one, use that one if (_combatController.CurrentRadialButtonContainer != null) { radialButtonContainer = _combatController.CurrentRadialButtonContainer; radialButtonContainer.gameObject.SetActive(true); StartCoroutine(radialButtonContainer.ScaleButtonsOut()); } else { radialButtonContainer = InstantiateRadialButtonContainer(); foreach (var combatOption in _combatOptions) { RadialButtonController.RadialButtonType radialButtonType = (RadialButtonController.RadialButtonType)combatOption.Key; string buttonName = radialButtonType.ToString(); int abilityIndex = combatOption.Key; string iconPath = combatOption.Value; //TODO: Remove this silly hack for abilities if (combatOption.Key == 2) { string abilityIcon = ""; string abilityIconPreffix = combatOption.Value; if (_unit.UnitData.AbilityCollection.HasTalent) { abilityIcon = TALENT_ICON; buttonName = "Talent"; } else if (_unit.UnitData.AbilityCollection.HasMagic) { abilityIcon = MAGIC_ICON; buttonName = "Magic"; } abilityIcon = Path.Combine(abilityIconPreffix, abilityIcon); iconPath = abilityIcon; } RadialButtonController button = InstantiateButton(radialButtonContainer, _combatOptions.Count, abilityIndex, iconPath, radialButtonType, buttonName); //TODO: Another stupid hack to classify attacks as abilities if (combatOption.Key == 0) { button.Ability = _unit.UnitData.AbilityCollection.GetAttackAbility(); } radialButtonContainer.Add(button); } } SetRadialButtonContainer(radialButtonContainer); IsRootMenuOpen = true; }
/// <summary> /// Scales the buttons out. /// </summary> public IEnumerator ScaleButtonsOut() { int count = _radialButtonControllers.Count; for (int index = 0; index < count; index++) { RadialButtonController button = _radialButtonControllers [index]; Vector3 position = RadialMenuController.GetButtonPosition(count, index); StartCoroutine(button.ScaleButtonOut(position)); } yield return(null); }
/// <summary> /// Instantiates the button. /// </summary> /// <returns>The button.</returns> /// <param name="radialButtonContainer">Radial button container.</param> /// <param name="numberOfButtons">Number of buttons.</param> /// <param name="index">Index.</param> /// <param name="iconPath">Icon path.</param> /// <param name="radialButtonType">Radial button type.</param> /// <param name="name">Name.</param> private RadialButtonController InstantiateButton( RadialButtonContainer radialButtonContainer, int numberOfButtons, int index, string iconPath, RadialButtonController.RadialButtonType radialButtonType, string name) { Vector3 buttonPosition = GetButtonPosition(numberOfButtons, index); RadialButtonController radialButtonController = RadialButtonController.InstantiateInstance(radialButtonContainer); radialButtonController.Initialize(iconPath, radialButtonType, GetFirstLetterToUpper(name), buttonPosition); return(radialButtonController); }
/// <summary> /// Instantiates the ability buttons. /// </summary> public void InstantiateAbilityButtons() { if (_combatController.CurrentRadialButtonContainer != null) { _popupText.text = ""; StartCoroutine(_combatController.CurrentRadialButtonContainer.ScaleButtonsIn()); } RadialButtonContainer radialButtonContainer = InstantiateRadialButtonContainer(); // Get abilities based off of type var abilities = new List <Ability> (); UnitData unitData = _unit.UnitData; if (unitData.AbilityCollection.HasTalent) { abilities = unitData.AbilityCollection.GetTalentAbilities(); } else if (unitData.AbilityCollection.HasMagic) { abilities = unitData.AbilityCollection.GetMagicAbilities(); } int numberOfButtons = abilities.Count + 1; for (int index = 0; index < abilities.Count; index++) { Ability ability = abilities [index]; RadialButtonController button = InstantiateButton(radialButtonContainer, numberOfButtons, index, ability.IconPath, RadialButtonController.RadialButtonType.ABILITY_USE, ability.Name); button.Ability = ability; radialButtonContainer.Add(button); } RadialButtonController cancelButton = InstantiateCancelButton(radialButtonContainer, numberOfButtons, abilities.Count, _combatOptions [4]); radialButtonContainer.Add(cancelButton); SetRadialButtonContainer(radialButtonContainer); IsRootMenuOpen = false; }
/// <summary> /// Add the specified radialButtonController. /// </summary> /// <param name="radialButtonController">Radial button controller.</param> public void Add(RadialButtonController radialButtonController) { _radialButtonControllers.Add(radialButtonController); }