96 lines
3.1 KiB
C#
96 lines
3.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class ForgableItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, ISelectHandler, IDeselectHandler
|
|
{
|
|
[SerializeField] private Image forgableItemIcon;
|
|
private Button thisButton;
|
|
private WeaponStatsManager statsManager;
|
|
[System.NonSerialized] public int itemIDRepresentation = -1;
|
|
private void Awake()
|
|
{
|
|
thisButton = GetComponent<Button>();
|
|
statsManager = UIManager.Instance.WeaponStatsManager;
|
|
forgableItemIcon.enabled = false;
|
|
thisButton.onClick.AddListener(HandleForge);
|
|
}
|
|
|
|
private void HandleForge()
|
|
{
|
|
ForgeController forgeController = UIManager.Instance.ForgeController;
|
|
forgeController.GetBigPicture().transform.localScale = Vector3.zero;
|
|
forgeController.GetBigPicture().sprite = GetNextLevelWeaponSprite();
|
|
forgeController.GetForgeButton().gameObject.SetActive(true);
|
|
forgeController.GetBigPicture().transform.DOScale(Vector3.one, 0.25f).SetEase(Ease.OutBack);
|
|
forgeController.GetBigPicture().enabled = true;
|
|
forgeController.CurrentItemIDInForge = itemIDRepresentation;
|
|
}
|
|
|
|
private Sprite GetNextLevelWeaponSprite()
|
|
{
|
|
Weapon currentWeaponData = OnDemandLoader.Load<Weapon>("config/" + itemIDRepresentation);
|
|
int currentLevel = (int)currentWeaponData.WeaponLevel;
|
|
bool isMaxLevel = currentLevel == currentWeaponData.WeaponLevels.Length - 1;
|
|
int nextLevel = Mathf.Clamp(currentLevel + 1, 0, currentWeaponData.WeaponLevels.Length - 1);
|
|
Weapon nextWeaponData = currentWeaponData.WeaponLevels[nextLevel];
|
|
|
|
return UIManager.Instance.RenderItem(isMaxLevel ? itemIDRepresentation : int.Parse(nextWeaponData.SOName));
|
|
|
|
}
|
|
|
|
public Image GetIcon() => forgableItemIcon;
|
|
|
|
public void SetSprite(int forgedItemID)
|
|
{
|
|
forgableItemIcon.enabled = true;
|
|
Sprite sprite = UIManager.Instance.RenderItem(forgedItemID);
|
|
forgableItemIcon.sprite = sprite;
|
|
gameObject.name = "ForgableItem_" + forgedItemID;
|
|
itemIDRepresentation = forgedItemID;
|
|
}
|
|
|
|
public void OnPointerEnter(PointerEventData eventData)
|
|
{
|
|
TweenScale(true);
|
|
ShowWeaponStats();
|
|
}
|
|
|
|
public void OnPointerExit(PointerEventData eventData)
|
|
{
|
|
TweenScale(false);
|
|
HideWeaponStats();
|
|
}
|
|
|
|
public void OnSelect(BaseEventData eventData)
|
|
{
|
|
TweenScale(true);
|
|
ShowWeaponStats();
|
|
}
|
|
|
|
public void OnDeselect(BaseEventData eventData)
|
|
{
|
|
TweenScale(false);
|
|
HideWeaponStats();
|
|
}
|
|
|
|
private void ShowWeaponStats()
|
|
{
|
|
statsManager.GetCanvasGroup().DOFade(1, 0.15f);
|
|
statsManager.SetWeaponStatData(OpenWeaponStatType.Forge, itemIDRepresentation);
|
|
}
|
|
|
|
private void HideWeaponStats()
|
|
{
|
|
statsManager.GetCanvasGroup().DOFade(0, 0.15f);
|
|
}
|
|
|
|
private void TweenScale(bool up)
|
|
{
|
|
transform.GetChild(0).DOScale(up ? Vector3.one * 1.15f : Vector3.one, 0.15f);
|
|
}
|
|
} |