You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
C#
69 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Projectiles.UI
|
|
{
|
|
public class UIWeapons : UIBehaviour
|
|
{
|
|
// PRIVATE MEMBERS
|
|
|
|
[SerializeField]
|
|
private UIWeapon _weaponDescription;
|
|
[SerializeField]
|
|
private UIWeaponList _weaponThumbnails;
|
|
|
|
private int _currentWeaponSlot;
|
|
private List<Weapon> _weapons = new(32);
|
|
|
|
private int _lastVersion;
|
|
|
|
// PUBLIC METHODS
|
|
|
|
public void UpdateWeapons(Weapons weapons)
|
|
{
|
|
UpdateData(weapons);
|
|
|
|
if (_currentWeaponSlot != weapons.CurrentWeaponSlot)
|
|
{
|
|
_weaponDescription.SetData(weapons.CurrentWeapon);
|
|
_currentWeaponSlot = weapons.CurrentWeaponSlot;
|
|
|
|
_weaponThumbnails.Selection = _weapons.FindIndex(t => t.WeaponSlot == _currentWeaponSlot);
|
|
}
|
|
}
|
|
|
|
// MONOBEHAVIOUR
|
|
|
|
protected void OnEnable()
|
|
{
|
|
_weaponThumbnails.UpdateContent += OnUpdateThumbnails;
|
|
}
|
|
|
|
protected void OnDisable()
|
|
{
|
|
_weaponThumbnails.UpdateContent -= OnUpdateThumbnails;
|
|
}
|
|
|
|
// PRIVATE METHODS
|
|
|
|
private void UpdateData(Weapons weapons)
|
|
{
|
|
if (weapons.Version == _lastVersion)
|
|
return; // Weapons did not change
|
|
|
|
_weapons.Clear();
|
|
weapons.GetAllWeapons(_weapons);
|
|
|
|
_weaponThumbnails.Refresh(_weapons.Count);
|
|
_currentWeaponSlot = -1;
|
|
|
|
_lastVersion = weapons.Version;
|
|
}
|
|
|
|
private void OnUpdateThumbnails(int index, UIWeapon weapon)
|
|
{
|
|
weapon.SetData(_weapons[index]);
|
|
}
|
|
}
|
|
}
|