182 lines
4.7 KiB
C#
182 lines
4.7 KiB
C#
using GCGame.Table;
|
||
using Module.Log;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
|
||
public class SkillProgressLogic : MonoBehaviour
|
||
{
|
||
public enum ProgressModel
|
||
{
|
||
INVALD_TYPE = -1,
|
||
ORDERMODEL,
|
||
REVERSEDMODE
|
||
}
|
||
|
||
private static SkillProgressLogic _instance;
|
||
private static ProgressBarLoadingState state = ProgressBarLoadingState.NotLoad;
|
||
private static int _handleId;
|
||
private static float _duration;
|
||
private static float _startTime;
|
||
private static ProgressModel _playModel;
|
||
private static string _skillName;
|
||
private static bool _needDotAnim; // 是否需要显示 "......." 的动画
|
||
public GameObject _SkillNameGO;
|
||
public Text dotAnim;
|
||
|
||
public float dotAnimInternal;
|
||
public int dotCount = 6;
|
||
public int dotIndex;
|
||
private float passedTime;
|
||
|
||
public Slider progressSlider;
|
||
public Text skillNameText;
|
||
|
||
public static void PlayProcess(ProgressModel playModel, float fContinTime, string skillName = default(string),
|
||
int handleId = 0)
|
||
{
|
||
_startTime = Time.time;
|
||
_duration = fContinTime;
|
||
_handleId = handleId;
|
||
_playModel = playModel;
|
||
_skillName = skillName;
|
||
var str = StrDictionary.GetClientDictionaryString("#{4753}");
|
||
if (_skillName.IndexOf(str) != -1)
|
||
_needDotAnim = true;
|
||
else
|
||
_needDotAnim = false;
|
||
|
||
if (state == ProgressBarLoadingState.NotLoad)
|
||
{
|
||
state = ProgressBarLoadingState.Loading;
|
||
UIManager.ShowUI(UIInfo.SkillProgress, ShowUiOver);
|
||
}
|
||
else if (state == ProgressBarLoadingState.Loaded || _instance != null)
|
||
{
|
||
PlayProgress();
|
||
}
|
||
}
|
||
|
||
private static void ShowUiOver(bool bSuccess, object param)
|
||
{
|
||
if (bSuccess)
|
||
{
|
||
state = ProgressBarLoadingState.Loaded;
|
||
PlayProgress();
|
||
}
|
||
else
|
||
{
|
||
state = ProgressBarLoadingState.NotLoad;
|
||
LogModule.ErrorLog(string.Format("{0}加载结束,但预制物不存在!", UIInfo.SkillProgress));
|
||
}
|
||
}
|
||
|
||
private static void PlayProgress()
|
||
{
|
||
if (_instance == null)
|
||
LogModule.ErrorLog(string.Format("{0}已经加载,但是_instance不存在!", UIInfo.SkillProgress));
|
||
else
|
||
_instance.PlaySkillProgress();
|
||
}
|
||
|
||
public static void StopProcess(int handleId)
|
||
{
|
||
//LogModule.ErrorLog(Time.frameCount + " StopProcess : " + handleId);
|
||
if (_handleId == handleId)
|
||
if (_instance != null)
|
||
{
|
||
_instance.progressSlider.value = 0f;
|
||
_instance.CloseWindow();
|
||
}
|
||
}
|
||
|
||
private void Awake()
|
||
{
|
||
_instance = this;
|
||
//gameObject.SetActive(false);
|
||
}
|
||
|
||
private void OnDestroy()
|
||
{
|
||
state = ProgressBarLoadingState.NotLoad;
|
||
_instance = null;
|
||
}
|
||
|
||
public void PlaySkillProgress()
|
||
{
|
||
if (_needDotAnim)
|
||
{
|
||
dotAnim.gameObject.SetActive(true);
|
||
dotAnim.text = "";
|
||
}
|
||
else
|
||
{
|
||
dotAnim.gameObject.SetActive(false);
|
||
}
|
||
|
||
gameObject.SetActive(true);
|
||
if (string.IsNullOrEmpty(_skillName))
|
||
{
|
||
_SkillNameGO.SetActive(false);
|
||
}
|
||
else
|
||
{
|
||
skillNameText.text = _skillName;
|
||
_SkillNameGO.SetActive(true);
|
||
}
|
||
}
|
||
|
||
// Update is called once per frame
|
||
private void Update()
|
||
{
|
||
if (_startTime + _duration > Time.time)
|
||
{
|
||
var ratio = (Time.time - _startTime) / _duration;
|
||
if (_playModel == ProgressModel.REVERSEDMODE)
|
||
ratio = 1 - ratio;
|
||
|
||
progressSlider.value = ratio;
|
||
|
||
if (_needDotAnim)
|
||
{
|
||
passedTime += Time.deltaTime;
|
||
if (passedTime > dotAnimInternal)
|
||
{
|
||
if (dotIndex < 6)
|
||
{
|
||
if (dotIndex == 3)
|
||
dotAnim.text += " .";
|
||
else
|
||
dotAnim.text += ".";
|
||
|
||
++dotIndex;
|
||
}
|
||
else
|
||
{
|
||
dotIndex = 0;
|
||
dotAnim.text = "";
|
||
}
|
||
|
||
passedTime -= dotAnimInternal;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
CloseWindow();
|
||
}
|
||
}
|
||
|
||
public void CloseWindow()
|
||
{
|
||
_handleId = 0;
|
||
gameObject.SetActive(false);
|
||
state = ProgressBarLoadingState.Loaded;
|
||
}
|
||
|
||
private enum ProgressBarLoadingState
|
||
{
|
||
NotLoad,
|
||
Loading,
|
||
Loaded
|
||
}
|
||
} |