using System; using System.Collections.Generic; using FairyGUI; using UI.Main; using UnityEngine; namespace GFGGame { public class StorySkillView : BaseView { private UI_StorySkillUI _ui; private Dictionary skillScoreDic; //private EffectUI _effectUI1; //private EffectUI _effectUI2; private EffectUI _effectUI3; private EffectUI _effectUI4; private EffectUI _effectUI5; private bool isFirst; private GameObject mainCamera; private GameObject stageCamera; public override void Dispose() { //EffectUIPool.Recycle(_effectUI1); //_effectUI1 = null; //EffectUIPool.Recycle(_effectUI2); //_effectUI2 = null; EffectUIPool.Recycle(_effectUI3); _effectUI3 = null; EffectUIPool.Recycle(_effectUI4); _effectUI4 = null; EffectUIPool.Recycle(_effectUI5); _effectUI5 = null; if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); _ui = UI_StorySkillUI.Create(); viewCom = _ui.target; isfullScreen = true; // this.modal = false; //_effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_comSkillShow.m_holderBottom, "ui_fight_new", "CFKP_TX_down"); //_effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_comSkillShow.m_holderTop, "ui_fight_new", "CFKP_TX_up"); _effectUI3 = EffectUIPool.CreateEffectUI(_ui.m_addScore, "ui_fight_new", "CFKP_UP"); _effectUI4 = EffectUIPool.CreateEffectUI(_ui.m_reduceScore, "ui_fight_new", "CFKP_Down"); _effectUI5 = EffectUIPool.CreateEffectUI(_ui.m_effReduceScore, "ui_fight_new", "CFKP_Down_end"); _ui.m_comSkillShow.m_t0.ignoreEngineTimeScale = false; _ui.m_comSkillShow.m_t1.ignoreEngineTimeScale = false; _ui.m_t1.ignoreEngineTimeScale = false; isFirst = true; } protected override void OnShown() { base.OnShown(); skillScoreDic = this.viewData as Dictionary; _ui.m_effReduceScore.visible = false; _ui.m_SkillScore.visible = false; UpdateView(); } private void UpdateView() { if (skillScoreDic.Count > 0) { int skillId = 0; foreach (int key in skillScoreDic.Keys) { skillId = key; break; } PassivitySkillCfg skillCfg = PassivitySkillCfgArray.Instance.GetCfg(skillId); _ui.m_comSkillShow.m_txtName.text = skillCfg.name; _ui.m_comSkillShow.m_ComSkillScore.m_txtCount.SetVar("value", skillScoreDic[skillId].ToString()).FlushVars(); _ui.m_comSkillShow.m_ComSkillScore.m_txtCount1.SetVar("value", Math.Abs(skillScoreDic[skillId]).ToString()).FlushVars(); _ui.m_comSkillShow.m_ComSkillScore.m_c1.selectedIndex = skillScoreDic[skillId] >= 0 ? 0 : 1; _ui.m_SkillScore.SetVar("value", skillScoreDic[skillId].ToString()).FlushVars(); _ui.m_reduceTxt.SetVar("value", skillScoreDic[skillId].ToString()).FlushVars(); string res = skillCfg.res; res = ItemCfgArray.Instance.GetCfg(skillCfg.cardId).res; _ui.m_comSkillShow.m_comSkillCard.m_comCard.m_loaCard.url = ResPathUtil.GetCardPath(res); _ui.m_comSkillShow.m_t0.timeScale = FightDataManager.Instance.fightSpeed; _ui.m_comSkillShow.m_t0.Play(() => { if (skillScoreDic[skillId] > 0) { _ui.m_comSkillShow.m_t1.timeScale = FightDataManager.Instance.fightSpeed; _ui.m_comSkillShow.m_t1.Play(() => { skillScoreDic.Remove(skillId); UpdateView(); }); } else { _ui.m_t1.timeScale = FightDataManager.Instance.fightSpeed; _ui.m_t1.Play(() => { skillScoreDic.Remove(skillId); UpdateView(); }); } }); //战斗卡牌特效处理 Timers.inst.Add(0.5f, 1, SetEffVisible); } //else { //this.Hide(); Timers.inst.Add(1.8f, 1, AutoHide); } } protected override void OnHide() { base.OnHide(); _ui.m_addScore.visible = false; _ui.m_reduceScore.visible = false; if (_ui.m_effReduceScore != null) { _ui.m_effReduceScore.visible = false; } SetCamera(false); Timers.inst.Remove(SetEffReduceScore); Timers.inst.Remove(SetEffVisible); Timers.inst.Remove(AutoHide); _ui.m_comSkillShow.m_t0.Stop(true, false); _ui.m_comSkillShow.m_t1.Stop(true, false); _ui.m_t1.Stop(true, false); _ui.m_t2.Play(); EventAgent.DispatchEvent(ConstMessage.SHOW_CARD_SKILL_END); } private void SetEffReduceScore(object param) { _ui.m_effReduceScore.visible = true; _ui.m_t3.Play(); } private void SetEffVisible(object param) { if (skillScoreDic.Count == 0) { return; } int skillId = 0; foreach (int key in skillScoreDic.Keys) { skillId = key; break; } //战斗卡牌特效处理 if (skillScoreDic[skillId] > 0) { _ui.m_SkillScore.color = new Color(0.973f, 0.784f, 0.431f, 1.000f); _ui.m_reduceScore.visible = false; _ui.m_addScore.visible = true; _ui.m_SkillScore.visible = true; _ui.m_t4.Play(); SetCamera(true); } else if (skillScoreDic[skillId] < 0) { _ui.m_SkillScore.color = new Color(0.906f, 0.894f, 0.894f, 1.000f); _ui.m_addScore.visible = false; _ui.m_reduceScore.visible = true; _ui.m_SkillScore.visible = false; Timers.inst.Add(1.5f, 1, SetEffReduceScore); } } private void SetCamera(bool isshake) { if (isFirst) { mainCamera = Camera.main.gameObject; mainCamera.AddComponent(); mainCamera.AddComponent(); stageCamera = GameObject.Find("Stage Camera").gameObject; stageCamera.AddComponent(); stageCamera.AddComponent(); mainCamera.GetComponent().enabled = false; mainCamera.GetComponent().enabled = false; stageCamera.GetComponent().enabled = false; stageCamera.GetComponent().enabled = false; isFirst = false; } if (isshake) { mainCamera.GetComponent().enabled = true; mainCamera.GetComponent().enabled = true; stageCamera.GetComponent().enabled = true; stageCamera.GetComponent().enabled = true; } else { mainCamera.GetComponent().enabled = false; mainCamera.GetComponent().enabled = false; stageCamera.GetComponent().enabled = false; stageCamera.GetComponent().enabled = false; } } private void AutoHide(object param = null) { this.Hide(); } } }