少年修仙传客户端代码仓库
client_Hale
2018-08-28 3927e17c98bdc97b6f7c1aea86a725f56d361a0f
Merge branch '2960仙盟抢Boss活动' of http://192.168.0.87:10010/r/snxxz_scripts into 2960仙盟抢Boss活动
2个文件已修改
4个文件已添加
250 ■■■■■ 已修改文件
System/Activity/ActivityModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHintWin.cs 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHintWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossRankBehaviour.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossRankBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Activity/ActivityModel.cs
@@ -219,6 +219,7 @@
            DailyQuestConfig cfg = Config.Instance.Get<DailyQuestConfig>(type);
            switch ((DailyQuestType)type)
            {
                case DailyQuestType.FairyGrabBoss:
                case DailyQuestType.FairyFeast:
                    {
                        if (!PlayerDatas.Instance.fairyData.HasFairy)
System/FairyAu/FairyGrabBossHintWin.cs
New file
@@ -0,0 +1,197 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, August 28, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class FairyGrabBossHintWin : Window
    {
        [SerializeField] Text m_MapName;
        [SerializeField] Text m_BossName;
        [SerializeField] RectTransform m_ContainerKilling;
        [SerializeField] RectTransform m_ContainerKilled;
        [SerializeField] FairyGrabBossRankBehaviour[] m_RankBehaviours;
        [SerializeField] Text m_Progress;
        [SerializeField] Text m_SurplusTime;
        float m_Timer = 0f;
        const float Interval = 10f;
        int bossId = 0;
        uint objId = 0;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            m_Timer = 0f;
            var list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcFightBoss);
            var bossId = 0;
            if (list != null)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    GA_NpcFightBoss bossActor = list[i] as GA_NpcFightBoss;
                    if (bossActor != null && model.bosses.Contains(bossActor.NpcConfig.NPCID))
                    {
                        bossId = bossActor.NpcConfig.NPCID;
                        objId = bossActor.ServerInstID;
                        break;
                    }
                }
            }
            if (bossId != 0)
            {
                model.QueryGrabBossHurt(bossId, 0, objId);
                model.QueryGrabBossProgress();
                GlobalTimeEvent.Instance.secondEvent += SecondEvent;
                model.bossProgressUpdate += BossProgressUpdate;
                model.bossHurtUpdate += BossHurtUpdate;
                DisplayAreaInfo();
                DisplayTimer();
                DisplayProgress();
                DisplayRanks();
            }
        }
        protected override void OnAfterOpen()
        {
            if (bossId == 0)
            {
                CloseImmediately();
                model.RecheckGrabBoss();
            }
        }
        protected override void OnPreClose()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            model.bossProgressUpdate -= BossProgressUpdate;
            model.bossHurtUpdate -= BossHurtUpdate;
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            base.LateUpdate();
            m_Timer += Time.deltaTime;
            if (m_Timer >= Interval && bossId != 0)
            {
                m_Timer = 0f;
                model.QueryGrabBossHurt(bossId, 0, objId);
                model.QueryGrabBossProgress();
            }
        }
        #endregion
        private void DisplayAreaInfo()
        {
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            m_MapName.text = mapConfig.Name;
            var npcConfig = Config.Instance.Get<NPCConfig>(bossId);
            if (npcConfig != null)
            {
                m_BossName.text = npcConfig.charName;
            }
        }
        void DisplayProgress()
        {
            FairyGrabBossModel.BossProgressInfo bossProgress;
            bool killed = false;
            if (model.TryGetBossProgress(bossId, out bossProgress))
            {
                var progress = (float)bossProgress.currentHp / bossProgress.totalHp;
                m_Progress.text = StringUtility.Contact((int)progress * 100, "%");
                killed = progress >= 1;
            }
            m_ContainerKilling.gameObject.SetActive(!killed);
            m_ContainerKilled.gameObject.SetActive(killed);
        }
        void DisplayRanks()
        {
            FairyGrabBossModel.FairyGrabBossInfo fairyGrabBossInfo;
            FairyGrabBossModel.BossProgressInfo bossProgress;
            var index = 0;
            if (model.TryGetBossHurt(bossId, 0, out fairyGrabBossInfo)
                && model.TryGetBossProgress(bossId, out bossProgress))
            {
                for (int i = 0; i < m_RankBehaviours.Length; i++)
                {
                    if (i < fairyGrabBossInfo.hurtInfos.Count)
                    {
                        var hurtInfo = fairyGrabBossInfo.hurtInfos[i];
                        var percent = (int)((float)hurtInfo.totalHurt / bossProgress.totalHp) * 100;
                        m_RankBehaviours[i].Display(hurtInfo.HurtName, percent);
                    }
                }
            }
            for (int i = index; i < m_RankBehaviours.Length; i++)
            {
                m_RankBehaviours[i].Display(string.Empty, 0);
            }
        }
        private void DisplayTimer()
        {
            var seconds = model.surplusSeconds;
            if (seconds > 0)
            {
                m_SurplusTime.text = TimeUtility.SecondsToDHMSCHS(seconds);
            }
            else
            {
                m_SurplusTime.text = Language.Get("ActivityEnd");
            }
        }
        private void BossProgressUpdate(int _id)
        {
            if (_id == bossId)
            {
                DisplayProgress();
                DisplayRanks();
            }
        }
        private void BossHurtUpdate(int id, int type)
        {
            if (id == bossId && type == 0)
            {
                DisplayRanks();
            }
        }
        private void SecondEvent()
        {
            DisplayTimer();
        }
    }
}
System/FairyAu/FairyGrabBossHintWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b54179e2c4d5fb746a580a62e969c8e7
timeCreated: 1535443093
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/FairyGrabBossModel.cs
@@ -100,6 +100,11 @@
            }
        }
        public void RecheckGrabBoss()
        {
        }
        private void RefreshDailyQuestState()
        {
            if (stateUpdate != null)
@@ -141,11 +146,12 @@
        /// </summary>
        /// <param name="bossId"></param>
        /// <param name="queryType">0-实时仙盟伤血 1-历史仙盟伤血 2-实时玩家伤血 3-历史玩家伤血</param>
        public void QueryGrabBossHurt(int bossId, int queryType)
        public void QueryGrabBossHurt(int bossId, int queryType,uint objId)
        {
            CA228_tagCMQueryFamilyBossHurt pak = new CA228_tagCMQueryFamilyBossHurt();
            pak.NPCID = (uint)bossId;
            pak.QueryType = (byte)queryType;
            pak.ObjID = (uint)objId;
            GameNetSystem.Instance.SendInfo(pak);
        }
System/FairyAu/FairyGrabBossRankBehaviour.cs
New file
@@ -0,0 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class FairyGrabBossRankBehaviour : MonoBehaviour
    {
        [SerializeField] Text m_FairyName;
        [SerializeField] Text m_Percent;
        public void Display(string fairyName, int percent)
        {
            m_FairyName.text = fairyName;
            m_Percent.text = string.IsNullOrEmpty(fairyName) ? string.Empty : StringUtility.Contact(percent, "%");
        }
    }
}
System/FairyAu/FairyGrabBossRankBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7719f43979e23884c8f057d774c12353
timeCreated: 1535445054
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: