少年修仙传客户端代码仓库
client_linchunjie
2018-08-28 7bc01e9dd797a6e958f8ccf1145494ec39501930
2960 抢Boss活动
5个文件已修改
160 ■■■■■ 已修改文件
System/FairyAu/FairyGrabBossBehaviour.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHintWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossWin.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/WindowCenter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossBehaviour.cs
@@ -10,6 +10,7 @@
    public class FairyGrabBossBehaviour : ScrollItem
    {
        [SerializeField] AutoSelectCyclicScroll m_Scroll;
        [SerializeField] SmoothMask m_SmoothMask;
        [SerializeField] RectTransform m_CenterSign;
        [SerializeField] RectTransform m_ContainerSelect;
        [SerializeField] RectTransform m_ContainerKilling;
@@ -91,7 +92,7 @@
        {
            FairyGrabBossModel.BossProgressInfo bossProgress;
            bool killed = false;
            bool opened = model.IsOpen;
            bool opened = model.InActivityTime;
            if (model.TryGetBossProgress(bossId, out bossProgress))
            {
                var progress = (float)bossProgress.currentHp / bossProgress.totalHp;
@@ -100,8 +101,11 @@
            }
            m_ContainerKilled.gameObject.SetActive(killed && opened);
            m_ContainerKilling.gameObject.SetActive(!killed && opened);
            m_BossPortrait.material = opened ? m_SmoothMask.imageMaterials[0] : m_SmoothMask.imageMaterials[1];
        }
        protected virtual void LateUpdate()
        {
            if (m_Scroll.autoSelectable && model.selectBoss != bossId && bossId > 0)
System/FairyAu/FairyGrabBossHintWin.cs
@@ -59,7 +59,7 @@
            if (bossId != 0)
            {
                model.QueryGrabBossHurt(bossId, 0, objId);
                model.QueryGrabBossProgress();
                model.QueryGrabBossProgress(true);
                GlobalTimeEvent.Instance.secondEvent += SecondEvent;
                model.bossProgressUpdate += BossProgressUpdate;
                model.bossHurtUpdate += BossHurtUpdate;
System/FairyAu/FairyGrabBossModel.cs
@@ -20,6 +20,20 @@
                    == DailyQuestModel.DailyQuestState.Normal;
            }
        }
        public bool InActivityTime
        {
            get
            {
                DailyQuestOpenTime dailyQuestOpenTime;
                if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.FairyGrabBoss, out dailyQuestOpenTime))
                {
                    return dailyQuestOpenTime.InOpenTime() && dailyQuestOpenTime.IsValidServerOpenTime();
                }
                return false;
            }
        }
        int m_SelectBoss = 0;
        public int selectBoss
        {
@@ -57,22 +71,27 @@
                return 0;
            }
        }
        public bool grabBossHintOpen { get; private set; }
        private bool serverInited = false;
        private DateTime lastQueryProgressTime = DateTime.Now;
        public event Action stateUpdate;
        public event Action<int> bossSelectedEvent;
        public event Action<int, int> bossHurtUpdate;
        public event Action<int> bossProgressUpdate;
        public event Action bossGrabHintEvent;
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        public override void Init()
        {
            ParseConfig();
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
            DailyQuestActionTimer.Instance.RefreshDailyQuestState += RefreshDailyQuestState;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            GA_Hero.OnEnterOrExitArea += OnEnterOrExitArea;
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        }
        public void OnBeforePlayerDataInitialize()
@@ -87,9 +106,19 @@
        public override void UnInit()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
            DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState;
            GA_Hero.OnEnterOrExitArea -= OnEnterOrExitArea;
        }
        private void OnRefreshFairyInfo()
        {
            RecheckGrabBoss();
        }
        private void OnEnterOrExitArea(MapArea.E_Type arg0, bool arg1)
        {
            RecheckGrabBoss();
        }
        private void OnStageLoadFinish()
@@ -102,14 +131,86 @@
        public void RecheckGrabBoss()
        {
            if (!InActivityTime)
            {
                CloseGrabBossHint();
                return;
            }
            if (!MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss))
            {
                CloseGrabBossHint();
                return;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var lineId = PlayerDatas.Instance.baseData.FBID;
            if (!GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId)
                || lineId != GeneralConfig.Instance.fairyGrabBossMapLines[mapId])
            {
                CloseGrabBossHint();
                return;
            }
            if (!PlayerDatas.Instance.fairyData.HasFairy)
            {
                CloseGrabBossHint();
                return;
            }
            int bossId = 0;
            var list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightBoss);
            if (list != null)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    GA_NpcFightBoss bossActor = list[i] as GA_NpcFightBoss;
                    if (bossActor != null && bosses.Contains(bossActor.NpcConfig.NPCID))
                    {
                        bossId = bossActor.NpcConfig.NPCID;
                        break;
                    }
                }
            }
            if (bossId == 0)
            {
                CloseGrabBossHint();
                return;
            }
            grabBossHintOpen = true;
            if (!WindowCenter.Instance.CheckOpen<FairyGrabBossHintWin>())
            {
                WindowCenter.Instance.Open<FairyGrabBossHintWin>();
            }
            if (bossGrabHintEvent != null)
            {
                bossGrabHintEvent();
            }
        }
        void CloseGrabBossHint()
        {
            grabBossHintOpen = false;
            if (WindowCenter.Instance.CheckOpen<FairyGrabBossHintWin>())
            {
                WindowCenter.Instance.CloseImmediately<FairyGrabBossHintWin>();
            }
            if (bossGrabHintEvent != null)
            {
                bossGrabHintEvent();
            }
        }
        private void RefreshDailyQuestState()
        {
            RecheckGrabBoss();
            if (stateUpdate != null)
            {
                stateUpdate();
            }
        }
        private void OnFuncStateChangeEvent(int _id)
        {
            if (_id == 139)
            {
                RecheckGrabBoss();
            }
        }
@@ -176,8 +277,13 @@
            }
        }
        public void QueryGrabBossProgress()
        public void QueryGrabBossProgress(bool force = false)
        {
            if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10)
            {
                return;
            }
            lastQueryProgressTime = DateTime.Now;
            CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt();
            GameNetSystem.Instance.SendInfo(pak);
        }
@@ -219,15 +325,6 @@
            }
            return false;
        }
        private void SecondEvent()
        {
            if (!serverInited)
            {
                return;
            }
        }
        public class FairyGrabBossInfo
        {
System/FairyAu/FairyGrabBossWin.cs
@@ -19,12 +19,17 @@
        [SerializeField] ItemCell[] m_DropItems;
        [SerializeField] Button m_KillRecord;
        [SerializeField] Button m_Goto;
        [SerializeField] RectTransform m_ContainerUnOpen;
        [SerializeField] RectTransform m_ContainerOpen;
        [SerializeField] Text m_SurplusTime;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        float m_Timer = 0f;
        const float Interval = 10f;
        #region Built-in
        protected override void BindController()
@@ -42,10 +47,12 @@
            DisplaySurplusTime();
            DisplayBossInfo();
            DisplayHighestFairy();
            model.QueryGrabBossProgress(true);
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            model.bossSelectedEvent += BossSelectedEvent;
            model.bossProgressUpdate += BossProgressUpdate;
            model.stateUpdate += StateUpdate;
            m_Timer = 0;
        }
        protected override void OnActived()
@@ -68,6 +75,17 @@
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            m_Timer += Time.deltaTime;
            if (m_Timer >= Interval)
            {
                m_Timer = 0;
                model.QueryGrabBossProgress();
            }
        }
        #endregion
@@ -130,11 +148,20 @@
            var seconds = model.surplusSeconds;
            if (seconds > 0)
            {
                if (!m_ContainerOpen.gameObject.activeSelf || m_ContainerUnOpen.gameObject.activeSelf)
                {
                    m_ContainerOpen.gameObject.SetActive(true);
                    m_ContainerUnOpen.gameObject.SetActive(false);
                }
                m_SurplusTime.text = TimeUtility.SecondsToDHMSCHS(seconds);
            }
            else
            {
                m_SurplusTime.text = Language.Get("ActivityEnd");
                if (!m_ContainerUnOpen.gameObject.activeSelf || m_ContainerOpen.gameObject.activeSelf)
                {
                    m_ContainerUnOpen.gameObject.SetActive(true);
                    m_ContainerOpen.gameObject.SetActive(false);
                }
            }
        }
System/WindowBase/WindowCenter.cs
@@ -14,7 +14,7 @@
        List<string> closeAllIgnoreWindows = new List<string>() {
            "MessageWin", "NewBieWin", "NewItemGetWin", "AttributePromoteShowWin" ,"DungeonBeginCoolDownWin","DungeonFightWin","StatusTipWin"
            ,"ScrollTipWin","MarqueeWin","ExperienceOpenWin","TrumpetWin","BattlePrepareCoolDownWin","DungeonGradeWin","BattleHintWin",
            "TreasureDungeonMissionHintWin",
            "TreasureDungeonMissionHintWin","FairyGrabBossHintWin",
        };
        UIRoot m_UIRoot;