NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/GameWrapper/UINode/UIBatteryAndSignalNode.cs

109 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIBatteryAndSignalNode: UINode
{
private List<Image> _batteryImgs = new List<Image>();
private List<Image> _signalImgs = new List<Image>();
private void Awake()
{
_Init();
}
private void OnDestroy()
{
OnRelease();
}
#region API
public void SetData()
{
}
public void Refresh()
{
_Refresh();
}
#endregion
#region Inner
private void _Init()
{
var goBattery = _FindObj("UI_Battery");
if (goBattery)
{
for (int i = 0; i < 5; i++)
{
_batteryImgs.Add(_GetComponent<Image>("UI_Battery/Image_Battery"+ i));
}
}
var goSignal = _FindObj("UI_Signal");
if (goSignal)
{
for (int i = 0; i < 5; i++)
{
_signalImgs.Add(_GetComponent<Image>("UI_Signal/Image_Signal" + i));
}
}
}
private void _Refresh()
{
var level = Math.Max(0, SystemInfo.batteryLevel);
var index = -1;
if (level <= 0)
{
index = 0;
}
else if (level <= 0.25)
{
index = 1;
}
else if (level <= 0.5)
{
index = 2;
}
else if (level <= 0.75)
{
index = 3;
}
else
{
index = 4;
}
for (int i = 0; i < _batteryImgs.Count; i++)
{
if (index == i)
{
_batteryImgs[i].gameObject.SetActiveEx(true);
continue;
}
_batteryImgs[i].gameObject.SetActiveEx(false);
}
NetworkReachability reachability = Application.internetReachability;
var curIdx = 0;
if (reachability != NetworkReachability.NotReachable)
{
curIdx = 4;
}
for (int i = 0; i < _signalImgs.Count; i++)
{
if (curIdx == i)
{
_signalImgs[i].gameObject.SetActiveEx(true);
continue;
}
_signalImgs[i].gameObject.SetActiveEx(false);
}
}
#endregion
}