using UnityEngine;
///
/// 子弹充能对应的数据结构.
///
public class BulletUICtl : MonoBehaviour
{
///
/// 最大子弹数目.
///
public int maxBulletNum;
///
/// 当前的子弹数目
///
protected int curBulletNum;
private int critNum = 1;
///
/// 默认的暴击子弹数量
///
public static int defaultCritNum { get; private set; }
///
/// 暴击子弹数量
///
///
public int CritBulletNum
{
get { return critNum; }
set
{
if (value < 1) value = 1;
else if (value > maxBulletNum) value = maxBulletNum;
critNum = value;
UpdateBulletType();
}
}
///
/// 子弹底图
///
public SpriteRenderer[] BottomArr;
public SpriteRenderer[] BulletArr;
public Sprite NormalSprite;
public Sprite CritSprite;
// Start is called before the first frame update
void Start()
{
defaultCritNum = critNum;
ResetToMaxBullet();
UpdateBulletType();
}
///
/// 获取进度条进度.
///
///
public int GetCtlProgress()
{
return curBulletNum;
}
///
/// 设置进度.
///
///
public void SetCtlProcess(int pro)
{
curBulletNum = pro;
updateBulletUI(pro, maxBulletNum);
}
///
/// 重设子弹数目到最大.
///
public void ResetToMaxBullet()
{
if (curBulletNum == maxBulletNum) return;
curBulletNum = maxBulletNum;
updateBulletUI(curBulletNum, maxBulletNum);
}
///
/// 减少子弹,返回减少后的子弹数目。
///
///
public int decBullet()
{
if (curBulletNum <= 0) return 0;
curBulletNum--;
updateBulletUI(curBulletNum, maxBulletNum);
return curBulletNum;
}
///
/// 更新子弹显示
///
///
///
public void updateBulletUI(int curBNum, int totalBNum)
{
// 隐藏的子弹数量
int hideCount = maxBulletNum - curBNum;
for (int i = 0; i < BulletArr.Length; ++i)
{
if (hideCount > 0)
{
--hideCount;
BulletArr[i].enabled = false;
}
else
BulletArr[i].enabled = true;
}
}
///
/// 更新子弹类型
///
private void UpdateBulletType()
{
int count = critNum;
for (int i = BulletArr.Length - 1; i >= 0; --i)
{
if (count > 0)
{
--count;
BulletArr[i].sprite = CritSprite;
}
else
BulletArr[i].sprite = NormalSprite;
}
}
}