using UnityEngine;
using UnityEngine.UI;
public class WeaponPick : MonoBehaviour
{
[SerializeField] private Image[] weaponIcons;
[SerializeField] private Sprite[] weaponSprites;
private const byte weaponCount = 7;
private byte[] weaponSlots = new byte[4];
[SerializeField] private string[] weaponKeys = new string[4];
[SerializeField] private string[] weaponAvailabilityKeysNames;
private void Awake()
{
for (int i = 0; i < 4; i++)
{
weaponSlots[i] = (byte)PlayerPrefs.GetInt(weaponKeys[i], 0);
UpdateWeaponIcon((byte)i);
}
}
public void increment(int slotNumber)
{
for (int i = 0; i < weaponCount; i++)
{
weaponSlots[slotNumber] = (byte)((weaponSlots[slotNumber] + 1) % weaponCount);
if (WeaponAvailabilityCheck((byte)slotNumber))
{
break;
}
}
UpdateWeaponIcon((byte)slotNumber);
SavePick((byte)slotNumber);
}
public void decrement(int slotNumber)
{
for (int i = 0; i < weaponCount; i++)
{
weaponSlots[slotNumber] = (byte)((weaponSlots[slotNumber] - 1 + weaponCount) % weaponCount);
if (WeaponAvailabilityCheck((byte)slotNumber))
{
break;
}
}
UpdateWeaponIcon((byte)slotNumber);
SavePick((byte)slotNumber);
}
private bool WeaponAvailabilityCheck(byte slotNumber)
{
return PlayerPrefs.GetInt(weaponAvailabilityKeysNames[weaponSlots[slotNumber]]) == 1;
}
private void SavePick(byte slotNumber)
{
PlayerPrefs.SetInt(weaponKeys[slotNumber], weaponSlots[slotNumber]);
PlayerPrefs.Save();
}
private void UpdateWeaponIcon(byte slotNumber)
{
weaponIcons[slotNumber].sprite = weaponSprites[weaponSlots[slotNumber]];
weaponIcons[slotNumber].SetNativeSize();
}
}
1 month ago
Само изящество
Next up
Не ждали? Вышла моя новая, пускай и простенькая, игра!
Смотрите что я смастерил
Наконец-то настроил анимации этого агурца
no pain no gain
Недавно придумал такой мем
Кто из них ошибся?
нувсо, теперь я на еще 1 год ближе к старости. Скоро уже стану дедом
5 comments