Files
JJBB/Assets/Project/Script/GUI/Guide/NewSkillTips.cs

230 lines
5.8 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using Games.Item;
using System.Collections.Generic;
using GCGame.Table;
using Games.GlobeDefine;
[System.Serializable]
public class SkillTipsInfo
{
public int Profession;
public int Level;
public int SkillBaseID;
}
public class NewSkillTips : UIControllerBase<NewSkillTips>
{
public static void OnSkillLearn(int skillId, int skillIdx)
{
Hashtable hash = new Hashtable();
hash.Add("SkillID", skillId);
hash.Add("SkillIdx", skillIdx);
UIManager.ShowUI(UIInfo.NewSkillTips, ShowUIOver, hash);
}
public static void ShowUIOver(bool sucess, object param)
{
if (!sucess)
return;
Hashtable hash = param as Hashtable;
if (hash == null)
return;
if (hash.ContainsKey("SkillID"))
{
NewSkillTips.Instance().OnSkill((int)hash["SkillID"], (int)hash["SkillIdx"]);
}
}
public void OnEnable()
{
SetInstance(this);
}
public void OnDestory()
{
SetInstance(null);
}
#region
public static int _MAX_LEVEL = -1;
public List<int> _ShowTipBaseID;
public Image _SkillIcon;
public Image _SkillName;
public float _ShowTime = 3;
public float _IconMoveTime = 0.6f;
public float _CloseDelay = 0.3f;
private bool ShowEffecting = false;
private SkillTipsInfo _ActingTips;
#endregion
public void OnSkill(int skillID, int skillIdx)
{
var _mainPlayer = Singleton<ObjManager>.GetInstance().MainPlayer;
if (_mainPlayer == null)
{
CloseWindow();
return;
}
var tabSkill = _mainPlayer.OwnSkillInfo[skillIdx].SkillBaseTable;
if (!_ShowTipBaseID.Contains(tabSkill.Id))
{
if(!ShowEffecting)
CloseWindow();
return;
}
FindIconPos(skillIdx);
if(_TargetObj == null)
{
CloseWindow();
return;
}
ShowSkillInfo(tabSkill);
}
public void ShowSkillInfo(Tab_SkillBase skillBase)
{
if (skillBase == null)
{
CloseWindow();
}
ResetMove();
LoadAssetBundle.Instance.SetImageSprite(_SkillIcon, skillBase.Icon);
LoadAssetBundle.Instance.SetImageSprite(_SkillName, skillBase.TextIcon);
PlayEffect();
StartCoroutine(PlayAnim());
}
public IEnumerator PlayAnim()
{
ShowEffecting = true;
yield return new WaitForSeconds(_ShowTime);
StartIconMove();
yield return new WaitForSeconds(_IconMoveTime);
if (_TargetObj != null)
{
Color alphaColor = _TargetObj.color;
alphaColor.a = 1;
_TargetObj.color = alphaColor;
}
yield return new WaitForSeconds(_CloseDelay);
CloseWindow();
}
private void OnDisable()
{
ShowEffecting = false;
}
public void CloseWindow()
{
HideEffect();
UIManager.CloseUI(UIInfo.NewSkillTips);
}
#region effect
public GameObject _EffectPrefab;
private GameObject _EffectInstance;
private void InitEffect()
{
if (_EffectInstance == null)
{
var effectInstanceGO = GameObject.Instantiate(_EffectPrefab);
effectInstanceGO.transform.SetParent(transform);
effectInstanceGO.transform.localScale = Vector3.one;
effectInstanceGO.AddComponent<UIParticleSystem>();
_EffectInstance = effectInstanceGO;
}
}
private void PlayEffect()
{
InitEffect();
_EffectInstance.gameObject.SetActive(true);
}
private void HideEffect()
{
if (_EffectInstance != null)
{
_EffectInstance.gameObject.SetActive(false);
}
}
#endregion
#region icon move
private Vector3 _IconPos = Vector3.zero;
private float _ScaleChange = 0;
private Image _TargetObj;
private void FindIconPos(int skillIdx)
{
if (SkillBarLogic.Instance())
{
var canvasGroup = SkillBarLogic.Instance().gameObject.GetComponent<CanvasGroup>();
if (canvasGroup.alpha != 1)
{
_TargetObj = null;
return;
}
}
for (int i = 0; i < SkillBarLogic.Instance().SkillButtons.Length; ++i)
{
if (SkillBarLogic.Instance().SkillButtons[i].SkillIndex == skillIdx)
{
if (_TargetObj != null)
{
Color alphaColor1 = _TargetObj.color;
alphaColor1.a = 1;
_TargetObj.color = alphaColor1;
}
_TargetObj = SkillBarLogic.Instance().SkillButtons[i].skillIcon;
_IconPos = SkillBarLogic.Instance().SkillButtons[i].skillIcon.transform.position;
_ScaleChange = SkillBarLogic.Instance().SkillButtons[i].skillIcon.rectTransform.rect.width / _SkillIcon.rectTransform.rect.width;
Color alphaColor = _TargetObj.color;
alphaColor.a = 0;
_TargetObj.color = alphaColor;
}
}
}
public void StartIconMove()
{
if (_IconPos == Vector3.zero)
return;
iTween.MoveTo(_SkillIcon.gameObject, _IconPos, _IconMoveTime);
iTween.ScaleTo(_SkillIcon.gameObject, new Vector3(_ScaleChange, _ScaleChange, _ScaleChange), _IconMoveTime);
}
public void ResetMove()
{
Debug.Log("ResetPosition1:" + _SkillIcon.transform.position);
_SkillIcon.transform.localPosition = Vector3.zero;
_SkillIcon.transform.localScale = Vector3.one;
Debug.Log("ResetPosition2:" + _SkillIcon.transform.position);
}
#endregion
}