TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

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);
}
}