using System; using Ability; using TMPro; using JetBrains.Annotations; using UnityEngine; using UnityEngine.UI; namespace Special { [Serializable] public class Ability { public InGameAbType AbType; public Sprite Sprite; } public class AbilityItem : MonoBehaviour { [SerializeField] private Image _icon; [SerializeField] private Button _button; [SerializeField] private GameObject _title; private Ability _abInfo; public void Create(Ability abInfo, RectTransform rect, bool interactable) { var item = Instantiate(this, rect); item.Repaint(abInfo, interactable); } private void Repaint(Ability abInfo, bool interactable) { _button.enabled = interactable; _abInfo = abInfo; _icon.sprite = abInfo.Sprite; if (_title) { string titleStr = ""; if (abInfo.AbType == InGameAbType.HEAL) titleStr = GlobalsVar.gGameTextMng.GetGameText(35); else if (abInfo.AbType == InGameAbType.ADD_HEALTH) titleStr = GlobalsVar.gGameTextMng.GetGameText(36); else if (abInfo.AbType == InGameAbType.ADD_MINOR_DAMAGE) titleStr = GlobalsVar.gGameTextMng.GetGameText(37); else if (abInfo.AbType == InGameAbType.ADD_MINOR_SPEED) titleStr = GlobalsVar.gGameTextMng.GetGameText(38); else if (abInfo.AbType == InGameAbType.DECAY) titleStr = string.Format(GlobalsVar.gGameTextMng.GetGameText(46), 100); else if (abInfo.AbType == InGameAbType.ADD_DAMAGE) titleStr = GlobalsVar.gGameTextMng.GetGameText(47); else if (abInfo.AbType == InGameAbType.ADD_ATTACK_SPEED) titleStr = GlobalsVar.gGameTextMng.GetGameText(48); else if (abInfo.AbType == InGameAbType.ADD_BULLET_PARALLEL) titleStr = GlobalsVar.gGameTextMng.GetGameText(49); else if (abInfo.AbType == InGameAbType.ADD_BULLET_AFTER) titleStr = GlobalsVar.gGameTextMng.GetGameText(49); _title.GetComponent().text = titleStr; } } [UsedImplicitly] public void Click() { if (_abInfo.AbType == InGameAbType.HEAL || _abInfo.AbType == InGameAbType.ADD_HEALTH) SoundsManager.Instance.PlaySound("heal"); if (GlobalsVar.gBoard) { GameBoard gameBoard = GlobalsVar.gBoard as GameBoard; if (gameBoard != null) { gameBoard.MainCharacter.AddAbility(_abInfo.AbType); GameObject dlgObj = gameBoard.GetDialogByType(DialogType.ANGEL); dlgObj.GetComponent().HideDialog(); } } } } }