少年修仙传客户端代码仓库
client_Wu Xijin
2018-09-18 eeebc126b66cadbdcf321d9a7b08331a9d0e0acc
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
2个文件已添加
8个文件已修改
444 ■■■■ 已修改文件
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/FriendSystem/MailAllModel.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/InGamePushContainer.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/AwardExchangeModel.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/ExchangeGetItemWin.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/ExchangeGetItemWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | 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/FriendSystem/MailAllModel.cs
@@ -62,6 +62,8 @@
        get { return m_dailyModel ?? (m_dailyModel = ModelCenter.Instance.GetModel<DailyQuestModel>()); }
    }
    AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
    public MailAllModel()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInit;
@@ -158,12 +160,14 @@
                if (mailModelDict.ContainsKey(mailModel.PackList[i].GUID))
                {
                    MailInfo info = mailModelDict[mailModel.PackList[i].GUID];
                    switch(GetMailType(info))
                    string mailTitle = GetMailTitle(info);
                    if(mailTitle.Contains("<gcode>"))
                    {
                        case "CodeRewardMail":
                            WindowCenter.Instance.Open<ExchangeGetItemWin>();
                            break;
                        exchangeModel.SetAwardExchangeModel(info.Items);
                    }
                    else if(GetMailType(info) == "CodeRewardMail")
                    {
                        exchangeModel.SetAwardExchangeModel(info.Items);
                    }
                }
            }
@@ -428,6 +432,7 @@
            }
        }
        mailTitleStr = mailTitleStr.Replace("<gcode>","");
    }
    public string GetMailType(MailInfo info)
@@ -444,6 +449,28 @@
        return string.Empty;
    }
    public string GetMailTitle(MailInfo info)
    {
        if (smatch.IsMatch(info.Text))
        {
            Match match = smatch.Match(info.Text);
            MailConfig _mailModel = Config.Instance.Get<MailConfig>(match.Groups[1].Value);
            if (_mailModel != null)
            {
                return _mailModel.Title;
            }
        }
        else
        {
            string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries);
            if (mailContentArray.Length > 0)
            {
                return mailContentArray[1];
            }
        }
        return string.Empty;
    }
    StringBuilder todayDailySB = new StringBuilder();
    public string GetTodayDailyNotify(DateTime getTime)
    {
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);
            }
        }
    }
}
System/Welfare/AwardExchangeModel.cs
@@ -7,8 +7,9 @@
{
    public class AwardExchangeModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        public PlayerPackModel.DecomposeGetMatInfo[] getItems { get; private set; }
        public MailItemModel[] getItems { get; private set; }
        bool isLogin = true;
        public override void Init()
        {
           
@@ -16,7 +17,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            isLogin = true;
        }
        public void OnAfterPlayerDataInitialize()
@@ -26,12 +27,29 @@
        public void OnPlayerLoginOk()
        {
            isLogin = false;
        }
        public override void UnInit()
        {
           
        }
        public void SetAwardExchangeModel(MailItemModel[] Items)
        {
            getItems = null;
            if (Items == null || isLogin) return;
            getItems = Items;
            if(!WindowCenter.Instance.CheckOpen<ExchangeGetItemWin>())
            {
                WindowCenter.Instance.Open<ExchangeGetItemWin>();
            }
        }
        public void ClearAwardExchangeModel()
        {
            getItems = null;
        }
    }
}
System/Welfare/ExchangeGetItemWin.cs
@@ -6,37 +6,31 @@
{
    public class ExchangeGetItemWin : Window
    {
        [SerializeField] GameObject getItemObj;
        [SerializeField] RectTransform getItemParent;
        [SerializeField] Button sureBtn;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
        List<GameObject> GetItemlist = new List<GameObject>();
        AwardExchangeModel exchange { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
        AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            sureBtn.AddListener(CloseClick);
        }
        protected override void OnPreOpen()
        {
            getItemObj.SetActive(false);
            CreateGetItem();
            SetDisplayModel();
        }
        protected override void OnAfterOpen()
        {
            transform.SetAsLastSibling();
        }
        protected override void OnPreClose()
        {
            DestroyGetItemlist();
            exchangeModel.ClearAwardExchangeModel();
        }
        protected override void OnAfterClose()
@@ -44,42 +38,33 @@
        }
        private void CreateGetItem()
        private void SetDisplayModel()
        {
            GetItemlist.Clear();
            if (exchange.getItems == null) return;
            if (exchangeModel == null) return;
            for (int i = 0; i < exchange.getItems.Length; i++)
            for(int i = 0; i < itemBaiscs.Count; i++)
            {
                GameObject item = Instantiate(getItemObj);
                PlayerPackModel.DecomposeGetMatInfo  matInfo = exchange.getItems[i];
                item.transform.SetParent(getItemParent);
                item.transform.localPosition = Vector3.zero;
                item.transform.localScale = Vector3.one;
                item.name = StringUtility.Contact("getItem",i);
                item.gameObject.SetActive(true);
                CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>();
                ItemCellModel cellModel = new ItemCellModel(matInfo.ItemID, false, (ulong)matInfo.Count, matInfo.IsBind,
                    "", PackType.rptDeleted, false, ConfigParse.Analysis(matInfo.UserData));
                itemBasic.Init(cellModel);
                itemBasic.cellBtn.RemoveAllListeners();
                itemBasic.cellBtn.AddListener(() =>
                if(i < exchangeModel.getItems.Length)
                {
                    ItemAttrData attrData = new ItemAttrData(matInfo.ItemID, false, (ulong)matInfo.Count, -1, matInfo.IsBind,
                        false, PackType.rptDeleted, "", ConfigParse.Analysis(matInfo.UserData));
                    tipsModel.SetItemTipsModel(attrData);
                });
                itemBasic.gameObject.SetActive(true);
                GetItemlist.Add(item);
            }
        }
        private void DestroyGetItemlist()
        {
            for (int i = 0; i < GetItemlist.Count; i++)
            {
                Destroy(GetItemlist[i]);
                    MailItemModel itemModel = exchangeModel.getItems[i];
                    itemBaiscs[i].gameObject.SetActive(true);
                    ItemCellModel cellModel = new ItemCellModel((int)itemModel.ItemID,false
                        ,(ulong)itemModel.Count, itemModel.IsBind,"",PackType.rptDeleted,
                        false,ConfigParse.Analysis(itemModel.UserData));
                    itemBaiscs[i].Init(cellModel);
                    itemBaiscs[i].cellBtn.RemoveAllListeners();
                    itemBaiscs[i].cellBtn.AddListener(()=>
                    {
                        ItemAttrData attrData = new ItemAttrData((int)itemModel.ItemID, false
                        , (ulong)itemModel.Count,-1,itemModel.IsBind,false, PackType.rptDeleted,
                        "", ConfigParse.Analysis(itemModel.UserData));
                        tipsModel.SetItemTipsModel(attrData);
                    });
                }
                else
                {
                    itemBaiscs[i].gameObject.SetActive(false);
                }
            }
        }
System/Welfare/ExchangeGetItemWin.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: b88138dfb3783c34db741e9d6a847c2a
timeCreated: 1531139769
guid: b367524e0821f67439d7c80ed1a0254f
timeCreated: 1537257075
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/WindowBase/ModelCenter.cs
@@ -194,6 +194,7 @@
            RegisterModel<GodBeastModel>();
            RegisterModel<PrayForDurgModel>();
            RegisterModel<FeatureNoticeModel>();
            RegisterModel<AwardExchangeModel>();
            inited = true;
        }