少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-31 219316ab0f220e8253ef19b8671b6867a520914b
System/FairyAu/FairyGrabBossWin.cs
@@ -32,6 +32,9 @@
        float m_Timer = 0f;
        const float Interval = 10f;
        bool autoSelect = false;
        int defaultSelect = 0;
        #region Built-in
        protected override void BindController()
        {
@@ -48,10 +51,10 @@
            DisplaySurplusTime();
            DisplayBossInfo();
            DisplayHighestFairy();
            model.QueryGrabBossProgress();
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            model.bossSelectedEvent += BossSelectedEvent;
            model.bossProgressUpdate += BossProgressUpdate;
            model.bossAllProgressUpdate += BossAllProgressUpdate;
            model.stateUpdate += StateUpdate;
            m_Timer = 0;
        }
@@ -60,6 +63,9 @@
        {
            base.OnActived();
            DisplayBosses();
            defaultSelect = model.selectBoss;
            autoSelect = false;
            model.QueryGrabBossProgress();
        }
        protected override void OnAfterOpen()
@@ -71,6 +77,7 @@
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            model.bossSelectedEvent -= BossSelectedEvent;
            model.bossProgressUpdate -= BossProgressUpdate;
            model.bossAllProgressUpdate -= BossAllProgressUpdate;
            model.stateUpdate -= StateUpdate;
        }
@@ -196,6 +203,10 @@
        private void BossSelectedEvent(int bossId)
        {
            if (defaultSelect != bossId)
            {
                autoSelect = true;
            }
            DisplayBossInfo();
            DisplayHighestFairy();
        }
@@ -207,11 +218,45 @@
                DisplayHighestFairy();
            }
        }
        void BossAllProgressUpdate()
        {
            if (!autoSelect)
            {
                AutoSelect();
            }
        }
        private void StateUpdate()
        {
            DisplayHighestFairy();
        }
        void AutoSelect()
        {
            autoSelect = true;
            var index = 0;
            for (int i = 0; i < model.bosses.Count; i++)
            {
                FairyGrabBossModel.BossProgressInfo bossProgress;
                if (model.TryGetBossProgress(model.bosses[i], out bossProgress))
                {
                    var progress = (float)bossProgress.currentHp / bossProgress.totalHp;
                    if (progress > 0)
                    {
                        index = i;
                        break;
                    }
                }
                else
                {
                    index = i;
                    break;
                }
            }
            m_Bosses.MoveToCenter(index);
        }
    }
}