少年修仙传客户端代码仓库
client_linchunjie
2018-09-18 a3a5e98d422f963533db992b67ee647309daf159
3562【前端】骑宠争夺召集时,其他成员弹提示框
3个文件已修改
2个文件已添加
307 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA902_tagGCGameWorldBossInfo.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHelpBehaviour.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossHelpBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyGrabBossModel.cs 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/InGamePushContainer.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA9_Function/DTCA902_tagGCGameWorldBossInfo.cs
@@ -1,16 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class DTCA902_tagGCGameWorldBossInfo : DtcBasic
{
    FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var data = vNetPack as HA902_tagGCGameWorldBossInfo;
        model.OnUpdateBossInfos(data);
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Snxxz.UI;
public class DTCA902_tagGCGameWorldBossInfo : DtcBasic
{
    FindPreciousModel model { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
    FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var data = vNetPack as HA902_tagGCGameWorldBossInfo;
        model.OnUpdateBossInfos(data);
        fairyGrabBossModel.UpdateBossAlive(data);
    }
}
System/FairyAu/FairyGrabBossHelpBehaviour.cs
New file
@@ -0,0 +1,93 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class FairyGrabBossHelpBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_Container;
        [SerializeField] Button m_Close;
        [SerializeField] Image m_Icon;
        [SerializeField] Text m_MapName;
        [SerializeField] Text m_BossName;
        [SerializeField] Button m_Goto;
        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        public bool display
        {
            get { return gameObject.activeSelf; }
        }
        private void Awake()
        {
            m_Goto.onClick.AddListener(Goto);
            m_Close.onClick.AddListener(Close);
        }
        public void Display()
        {
            if (model.fairyGrabBossHelps.Count > 0)
            {
                model.helpCoolDown = true;
                m_Container.gameObject.SetActive(true);
                var help = model.fairyGrabBossHelps[0];
                var config = Config.Instance.Get<FairyGrabBossConfig>(help.npcId);
                var npcConfig = Config.Instance.Get<NPCConfig>(help.npcId);
                var bossInfoConfig = Config.Instance.Get<BossInfoConfig>(help.npcId);
                var mapConfig = Config.Instance.Get<MapConfig>(bossInfoConfig.MapID);
                m_MapName.text = mapConfig.Name;
                m_BossName.text = npcConfig.charName;
                m_Icon.SetSprite(npcConfig.HeadPortrait);
                var petConfig = Config.Instance.Get<PetInfoConfig>(config.petId);
                if (petConfig != null)
                {
                    m_BossName.color = UIHelper.GetUIColor(petConfig.Quality, true);
                }
                var horseConfig = Config.Instance.Get<HorseConfig>(config.horseId);
                if (horseConfig != null)
                {
                    m_BossName.color = UIHelper.GetUIColor(horseConfig.Quality, true);
                }
            }
        }
        private void Close()
        {
            model.RemoveHelp();
        }
        private void Goto()
        {
            if (model.fairyGrabBossHelps.Count > 0)
            {
                var help = model.fairyGrabBossHelps[0];
                int error = 0;
                if (!model.TestEnterDungeon(help.npcId, out error))
                {
                    model.DisplayErrorTip(error);
                    model.RemoveHelp();
                    return;
                }
                if (!model.IsBossAlive(help.npcId))
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("FairyGrabBossNotAlive"), (bool isOk) =>
                      {
                          if (isOk)
                          {
                              MapTransferUtility.Instance.MoveToNPC(help.npcId);
                              model.RemoveHelp();
                          }
                      });
                    return;
                }
                MapTransferUtility.Instance.MoveToNPC(help.npcId);
            }
        }
    }
}
System/FairyAu/FairyGrabBossHelpBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 72cdb8cec03effc42aeb6892b5df3596
timeCreated: 1537251839
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/FairyAu/FairyGrabBossModel.cs
@@ -101,11 +101,14 @@
            GAMgr.Instance.OnFightNpcRequest += OnFightNpcUpdate;
            //GAMgr.Instance.OnFightNpcRelease += OnFightNpcUpdate;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent += SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
        }
        public void OnBeforePlayerDataInitialize()
        {
            serverInited = false;
            bossAliveDict.Clear();
        }
        public void OnPlayerLoginOk()
@@ -121,6 +124,8 @@
            GAMgr.Instance.OnFightNpcRequest -= OnFightNpcUpdate;
            //GAMgr.Instance.OnFightNpcRelease -= OnFightNpcUpdate;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
            SysNotifyMgr.Instance.sysNotifyEvent -= SystemNotifyEvent;
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
@@ -144,6 +149,7 @@
            if (!(StageManager.Instance.CurrentStage is DungeonStage))
            {
                grabBossHintOpen = false;
                fairyGrabBossHelps.Clear();
                ClearGrabBossInfo();
            }
            else
@@ -239,6 +245,14 @@
            if (!InActivityTime)
            {
                ClearGrabBossInfo();
                if (fairyGrabBossHelps.Count > 0)
                {
                    fairyGrabBossHelps.Clear();
                    if (fairyGrabBossHelpUpdate != null)
                    {
                        fairyGrabBossHelpUpdate();
                    }
                }
            }
            RecheckGrabBoss();
            if (stateUpdate != null)
@@ -324,11 +338,6 @@
        public void QueryGrabBossProgress()
        {
            //if (!force && (DateTime.Now - lastQueryProgressTime).TotalSeconds < 10)
            //{
            //    return;
            //}
            //lastQueryProgressTime = DateTime.Now;
            CAC04_tagCGQueryAllFamilyBossHurt pak = new CAC04_tagCGQueryAllFamilyBossHurt();
            GameNetSystem.Instance.SendInfo(pak);
        }
@@ -501,6 +510,134 @@
            }
        }
        private void SecondEvent()
        {
            if (helpCoolDown && fairyGrabBossHelps.Count > 0)
            {
                var help = fairyGrabBossHelps[0];
                help.seconds--;
                if (help.seconds <= 0)
                {
                    fairyGrabBossHelps.RemoveAt(0);
                    if (fairyGrabBossHelpUpdate != null)
                    {
                        fairyGrabBossHelpUpdate();
                    }
                }
                else
                {
                    fairyGrabBossHelps[0] = help;
                }
            }
        }
        #region 召集弹窗
        public bool helpCoolDown { get; set; }
        public List<FairyGrabBossHelp> fairyGrabBossHelps = new List<FairyGrabBossHelp>();
        public event Action fairyGrabBossHelpUpdate;
        private void SystemNotifyEvent(string message, ArrayList arrayList)
        {
            if (message.Equals("FairyGrabBossHelp") && InActivityTime
                && PlayerDatas.Instance.baseData.Family != 0 && FuncOpen.Instance.IsFuncOpen(139))
            {
                var npcId = 0;
                if (arrayList != null && arrayList.Count > 0)
                {
                    int.TryParse(arrayList[0].ToString(), out npcId);
                }
                if (!bosses.Contains(npcId))
                {
                    return;
                }
                if (InAnyGrabBossArea())
                {
                    return;
                }
                if (fairyGrabBossHelps.FindIndex((x) =>
                 {
                     return x.npcId == npcId;
                 }) != -1)
                {
                    return;
                }
                fairyGrabBossHelps.Add(new FairyGrabBossHelp()
                {
                    npcId = npcId,
                    seconds = 20,
                });
                if (fairyGrabBossHelpUpdate != null)
                {
                    fairyGrabBossHelpUpdate();
                }
            }
        }
        public bool IsBossAlive(int npcId)
        {
            return bossAliveDict.ContainsKey(npcId) && bossAliveDict[npcId];
        }
        Dictionary<int, bool> bossAliveDict = new Dictionary<int, bool>();
        public void UpdateBossAlive(HA902_tagGCGameWorldBossInfo package)
        {
            for (int i = 0; i < package.BossCnt; i++)
            {
                var data = package.BossInfoList[i];
                bossAliveDict[(int)data.BossID] = data.IsAlive == 1;
            }
        }
        public void RemoveHelp()
        {
            if (fairyGrabBossHelps.Count > 0)
            {
                fairyGrabBossHelps.RemoveAt(0);
                if (fairyGrabBossHelpUpdate != null)
                {
                    fairyGrabBossHelpUpdate();
                }
            }
        }
        public bool InAnyGrabBossArea()
        {
            if (!MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss))
            {
                return false;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var grabBossLine = GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId) ?
                GeneralConfig.Instance.fairyGrabBossMapLines[mapId] : 0;
            if (PlayerDatas.Instance.baseData.FBID != grabBossLine)
            {
                return false;
            }
            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;
                    }
                }
            }
            return bossId != 0;
        }
        public struct FairyGrabBossHelp
        {
            public int npcId;
            public int seconds { get; set; }
        }
        #endregion
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }
System/MainInterfacePanel/InGamePushContainer.cs
@@ -24,6 +24,7 @@
        [SerializeField] OffLineTimeLackBehaviour m_OffLineTimeLackBehaviour;
        [SerializeField] DungeonGuardCheckBehaviour m_DungeonGuardBehaviour;
        [SerializeField] FirstChargeTrialBehaviour m_FirstChargeTrialBehaviour;
        [SerializeField] FairyGrabBossHelpBehaviour m_FairyGrabBossHelpBehaviour;
        WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } }
        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
@@ -44,7 +45,7 @@
        OffLineTimeLackModel offLineTimeLackModel { get { return ModelCenter.Instance.GetModel<OffLineTimeLackModel>(); } }
        GuardModel guardModel { get { return ModelCenter.Instance.GetModel<GuardModel>(); } }
        FirstTimeRechargeModel firstTimeRechargeModel { get { return ModelCenter.Instance.GetModel<FirstTimeRechargeModel>(); } }
        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
        public void Init()
        {
            CheckBetterEquip();
@@ -58,6 +59,7 @@
            CheckOffLineLack();
            CheckDungeonGuard();
            FirstChargeTrialShow();
            CheckFairyGrabBossHelp();
            playerPack.RefreshDecomAttrAct += CheckEquipDecompose;
            betterEquipGetModel.showEquipRefreshEvent += CheckBetterEquip;
            realmEquipModel.showEquipRefreshEvent += CheckRealmBetterEquip;
@@ -68,10 +70,12 @@
            NewBieCenter.Instance.guideBeginEvent += OnNewBieGuideBegin;
            guardModel.onDungeonEquipGuardEvent += CheckDungeonGuard;
            firstTimeRechargeModel.IsTipShowEvent += FirstChargeTrialShow;
            fairyGrabBossModel.fairyGrabBossHelpUpdate += CheckFairyGrabBossHelp;
        }
        public void UnInit()
        {
            fairyGrabBossModel.helpCoolDown = false;
            playerPack.RefreshDecomAttrAct -= CheckEquipDecompose;
            betterEquipGetModel.showEquipRefreshEvent -= CheckBetterEquip;
            preciousItemGetModel.showItemRefreshEvent -= CheckPreciousItem;
@@ -81,8 +85,8 @@
            guardModel.onDungeonEquipGuardEvent -= CheckDungeonGuard;
            firstTimeRechargeModel.IsTipShowEvent -= FirstChargeTrialShow;
            realmEquipModel.showEquipRefreshEvent -= CheckRealmBetterEquip;
            fairyGrabBossModel.fairyGrabBossHelpUpdate -= CheckFairyGrabBossHelp;
        }
        private void CheckRealmBetterEquip()
        {
@@ -329,6 +333,19 @@
            }
        }
        private void CheckFairyGrabBossHelp()
        {
            if (fairyGrabBossModel.fairyGrabBossHelps.Count > 0)
            {
                m_FairyGrabBossHelpBehaviour.gameObject.SetActive(true);
                m_FairyGrabBossHelpBehaviour.Display();
            }
            else
            {
                m_FairyGrabBossHelpBehaviour.gameObject.SetActive(false);
            }
        }
    }
}