/
ItemUI.cs
131 lines (113 loc) · 3.17 KB
/
ItemUI.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemUI : MonoBehaviour
{
public Item Item { get; set; }
public int Amount { get; set; }
//public Text amoutText;
#region UI component
private Image itemImage;
private Text amountText;
private Image ItemImage
{
get
{
if(itemImage == null)
{
itemImage = GetComponent<Image>();
}
return itemImage;
}
}
private Text AmountText
{
get
{
if(amountText == null)
{
amountText = GetComponentInChildren<Text>();
}
return amountText;
}
}
#endregion
private float targetScale = 1.0f;
//variable para animacion del objeto cuando lo invoca
private Vector3 animationScale = new Vector3(1.2f, 1.2f, 1.2f);
private void Update()
{
//amoutText.text = this.amoutText.ToString();
if(transform.localScale.x != targetScale)
{
//aumento del tamaño del imagen simulando una animacion
float scale = Mathf.Lerp(transform.localScale.x, targetScale, 1 * Time.deltaTime);
transform.localScale = new Vector3(scale, scale, scale);
}
}
//funcion para resetar el objeto de la casilla(imagen y la cantidad)
public void SetItem(Item item, int amount = 1)
{
transform.localScale = animationScale;
this.Item = item;
this.Amount = amount;
ItemImage.sprite = Resources.Load<Sprite>(item.Sprite);
if (Item.Capacity > 1)
AmountText.text = Amount.ToString();
else
AmountText.text = "";
}
public void SetAmount(int amount)
{
transform.localScale = animationScale;
this.Amount = amount;
if (Item.Capacity > 1)
AmountText.text = Amount.ToString();
else
AmountText.text = "";
}
//funcion para sumar cantidad del objeto
public void AddAmount(int amount = 1)
{
transform.localScale = animationScale;
this.Amount += amount;
if (Item.Capacity > 1)
AmountText.text = Amount.ToString();
else
AmountText.text = "";
}
//funcion para restar cantidad del objeto
public void SubAmount(int amount = 1)
{
transform.localScale = animationScale;
this.Amount -= amount;
if(Item.Capacity > 1)
AmountText.text = Amount.ToString();
else
AmountText.text = "";
}
public void Show()
{
gameObject.SetActive(true);
}
public void Hide()
{
gameObject.SetActive(false);
}
public void SetLocalPosition(Vector3 position)
{
transform.localPosition = position;
}
/// <summary>
/// Funcion para cambiar posicion del itemui
/// </summary>
/// <param name="itemUI"></param>
public void Exchange(ItemUI itemUI)
{
Item tempItem = itemUI.Item;
int amount = itemUI.Amount;
itemUI.SetItem(this.Item, this.Amount);
this.SetItem(tempItem, amount);
}
}