少年修仙传客户端代码仓库
client_linchunjie
2018-11-01 d05624c5123aafb4842afc7dcfa6fd3053219e42
4503 【前端】【1.2】副本挑战按钮和材料不足弹框
3个文件已修改
8个文件已添加
476 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB9_Team/DTCB913_tagGCEnterTeamFBFailReason.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HB9_Team/DTCB913_tagGCEnterTeamFBFailReason.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB9_Team/HB913_tagGCEnterTeamFBFailReason.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HB9_Team/HB913_tagGCEnterTeamFBFailReason.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DayRemind.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/GroupDungeonChallengeProcessor.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamDungeonTicketLackWin.cs 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamDungeonTicketLackWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamFailEnterDungeonHandle.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/TeamFailEnterDungeonHandle.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -11,6 +11,7 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HB913_tagGCEnterTeamFBFailReason), typeof(DTCB913_tagGCEnterTeamFBFailReason));
        Register(typeof(H0311_tagDeleteSkill), typeof(DTC0311_tagDeleteSkill));
        Register(typeof(HB106_tagMCNotifyPlayerMove), typeof(DTCB106_tagMCNotifyPlayerMove));
        Register(typeof(H0132_tagCreateRoleSucess), typeof(DTC0132_tagCreateRoleSucess));
Core/NetworkPackage/DTCFile/ServerPack/HB9_Team/DTCB913_tagGCEnterTeamFBFailReason.cs
New file
@@ -0,0 +1,23 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, November 01, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using Snxxz.UI;
public class DTCB913_tagGCEnterTeamFBFailReason : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HB913_tagGCEnterTeamFBFailReason;
        TeamFailEnterDungeonHandle.Instance.ReceiveReason(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HB9_Team/DTCB913_tagGCEnterTeamFBFailReason.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 97a0a264acd98384886c8277d4a2ebf7
timeCreated: 1541057447
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HB9_Team/HB913_tagGCEnterTeamFBFailReason.cs
New file
@@ -0,0 +1,21 @@
using UnityEngine;
using System.Collections;
// B9 13 进入组队副本失败原因 #tagGCEnterTeamFBFailReason
public class HB913_tagGCEnterTeamFBFailReason : GameNetPackBasic {
    public uint MapID;    // 请求进入的地图ID
    public byte AskType;    // 请求类型: 0-匹配请求;1-进入请求
    public byte Reason;    // 失败原因:2-次数不足;3-进入CD中;6-门票不足
    public HB913_tagGCEnterTeamFBFailReason () {
        _cmd = (ushort)0xB913;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out MapID, vBytes, NetDataType.DWORD);
        TransBytes (out AskType, vBytes, NetDataType.BYTE);
        TransBytes (out Reason, vBytes, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ServerPack/HB9_Team/HB913_tagGCEnterTeamFBFailReason.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a57b7f9855954f1458d169cd9cb7459c
timeCreated: 1541057414
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/DailyQuest/DayRemind.cs
@@ -46,6 +46,7 @@
    public const string RUNE_SPECIAL_HOLE = "RuneSpecialHole";
    public const string LEAGUE_NOTICE_REDPOINT = "LeagueNoticeRedpoint";
    public const string FAIRYGRABBOSS_NOTICE_REDPOINT = "FairyGrabBossRedpoint";
    public const string TEAM_TICKET_FAIRYLAND = "TeamTicketFairyLand";
    public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
    public bool GetDayRemind(string _remindKey)
@@ -100,6 +101,7 @@
        SetDayRemind(RUNE_SPECIAL_HOLE);
        SetDayRemind(LEAGUE_NOTICE_REDPOINT);
        SetDayRemind(FAIRYGRABBOSS_NOTICE_REDPOINT);
        SetDayRemind(TEAM_TICKET_FAIRYLAND);
    }
    private void SetDayRemind(string _key)
System/Team/GroupDungeonChallengeProcessor.cs
@@ -38,16 +38,36 @@
                        var realmModel = ModelCenter.Instance.GetModel<RealmModel>();
                        realmModel.GotoDungeon();
                        break;
                    default:
                        int error = 0;
                        var dungeon = new Dungeon(_mapId, _lineId);
                        if (dungeonModel.TestChallange(dungeon, out error))
                    case 31080:
                        {
                            dungeonModel.GroupChallenge(dungeon);
                            int error = 0;
                            var dungeon = new Dungeon(_mapId, _lineId);
                            if (dungeonModel.TestChallange(dungeon, out error))
                            {
                                dungeonModel.GroupChallenge(dungeon);
                            }
                            else
                            {
                                ProcessEnterDungeonError(error);
                                if (error == 5)
                                {
                                    TeamFailEnterDungeonHandle.Instance.HandleFairyLand(1, 6);
                                }
                            }
                        }
                        else
                        break;
                    default:
                        {
                            ProcessEnterDungeonError(error);
                            int error = 0;
                            var dungeon = new Dungeon(_mapId, _lineId);
                            if (dungeonModel.TestChallange(dungeon, out error))
                            {
                                dungeonModel.GroupChallenge(dungeon);
                            }
                            else
                            {
                                ProcessEnterDungeonError(error);
                            }
                        }
                        break;
                }
System/Team/TeamDungeonTicketLackWin.cs
New file
@@ -0,0 +1,258 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, November 01, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class TeamDungeonTicketLackWin : Window
    {
        public static LackType lackType = LackType.FairyLand;
        [SerializeField] ItemBehaviour m_Item;
        [SerializeField] TextEx m_TicketOwn;
        [SerializeField] TextEx m_TicketNeed;
        [SerializeField] Text m_LackContentTip;
        [SerializeField] Text m_LackMoneyTip;
        [SerializeField] Button m_Buy;
        [SerializeField] Button m_Close;
        [SerializeField] Button m_TicketCompose;
        [SerializeField] Toggle m_RemindToggle;
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Buy.onClick.AddListener(Buy);
            m_Close.onClick.AddListener(CloseClick);
            m_TicketCompose.onClick.AddListener(TicketCompose);
        }
        protected override void OnPreOpen()
        {
            var lackItem = GetLackItem(lackType);
            m_Item.showCount = false;
            m_Item.SetItem(lackItem);
            var own = packModel.GetItemCountByID(PackType.rptItem, lackItem.id);
            m_TicketOwn.text = own.ToString();
            m_TicketNeed.text = StringUtility.Contact("/", lackItem.count);
            m_TicketOwn.colorType = own >= lackItem.count ? TextColType.White : TextColType.Red;
            m_TicketCompose.gameObject.SetActive(own < lackItem.count && SatisfyComposeTicket(lackItem));
            m_LackContentTip.text = GetLackContentTip(lackType);
            m_LackMoneyTip.gameObject.SetActive(own < lackItem.count);
            if (own < lackItem.count)
            {
                var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own);
                m_LackMoneyTip.text = GetLackMoneyTip(lackType, moneyNeed);
            }
            m_RemindToggle.isOn = false;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            DayRemind.Instance.SetDayRemind(GetDayRemindKey(lackType), m_RemindToggle.isOn);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private Item GetLackItem(LackType _lackType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return dungeonModel.GetLackItem(DungeonSuppliesLackWin.LackType.FairyLand);
                default:
                    return default(Item);
            }
        }
        private string GetLackContentTip(LackType _lackType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return Language.Get("TeamLostItem1");
                default:
                    return string.Empty;
            }
        }
        private bool SatisfyComposeTicket(Item lackItem)
        {
            List<ItemCompoundConfig> list;
            if (ItemCompoundConfig.TryGetTicketCompose(lackItem.id, out list))
            {
                return composeModel.IsComposeTicketByType(list[0].secondType);
            }
            return false;
        }
        private int GetUnitPrice(LackType _lackType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    var dungeonId3 = dungeonModel.GetDungeonId(31080, 0);
                    var config3 = Config.Instance.Get<DungeonConfig>(dungeonId3);
                    return config3.TicketPrice;
                default:
                    return 0;
            }
        }
        private void TicketCompose()
        {
            switch (lackType)
            {
                case LackType.FairyLand:
                    CloseImmediately();
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ComposeTicketFairy);
                    break;
            }
        }
        private string GetLackMoneyTip(LackType _lackType, int _moneyLack)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return Language.Get("W_TicketJade", _moneyLack);
                default:
                    return string.Empty;
            }
        }
        private string GetBindJadeLackTip(LackType _lackType, int _moneyNeed, int _moneyOwn)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return Language.Get("JadeChargeAgainst", _moneyNeed, _moneyOwn);
                default:
                    return string.Empty;
            }
        }
        private StoreConfig GetStoreConfig(Item lackItem, int moneyType)
        {
            var config = StoreConfig.GetStoreCfg(lackItem.id, moneyType);
            return config;
        }
        private void Buy()
        {
            var lackItem = GetLackItem(lackType);
            var own = packModel.GetItemCountByID(PackType.rptItem, lackItem.id);
            if (own < lackItem.count)
            {
                var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own);
                if (PlayerDatas.Instance.baseData.Gold < moneyNeed
                    && PlayerDatas.Instance.baseData.GoldPaper < moneyNeed)
                {
                    if (VersionConfig.Get().isBanShu)
                    {
                        SysNotifyMgr.Instance.ShowTip("GoldErr");
                        return;
                    }
                    WindowCenter.Instance.Open<RechargeTipWin>();
                }
                else
                {
                    var moneyType = PlayerDatas.Instance.baseData.Gold < moneyNeed ? 2 : 1;
                    ConfirmTodo(lackType, moneyType);
                }
            }
        }
        private void ConfirmTodo(LackType _lackType,int moneyType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    var lackItem = GetLackItem(_lackType);
                    var config = GetStoreConfig(lackItem, moneyType);
                    if (config != null)
                    {
                        var own = packModel.GetItemCountByID(PackType.rptItem, lackItem.id);
                        if (moneyType == 1)
                        {
                            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), GetConfirmLabel(_lackType), (bool isOk) =>
                              {
                                  if (isOk)
                                  {
                                      storeModel.SendBuyShopItem(config, lackItem.count - own);
                                      CloseImmediately();
                                  }
                              });
                            return;
                        }
                        else
                        {
                            storeModel.SendBuyShopItem(config, lackItem.count - own);
                        }
                    }
                    CloseImmediately();
                    break;
                default:
                    break;
            }
        }
        string GetConfirmLabel(LackType _lackType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return Language.Get("TeamLostItem2", GetUnitPrice(_lackType));
                default:
                    return string.Empty;
            }
        }
        public static string GetDayRemindKey(LackType _lackType)
        {
            switch (_lackType)
            {
                case LackType.FairyLand:
                    return DayRemind.TEAM_TICKET_FAIRYLAND;
                default:
                    return string.Empty;
            }
        }
        public enum LackType
        {
            FairyLand,
        }
    }
}
System/Team/TeamDungeonTicketLackWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d8473a9cd91c64045b40b0627cf98599
timeCreated: 1541051627
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Team/TeamFailEnterDungeonHandle.cs
New file
@@ -0,0 +1,89 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class TeamFailEnterDungeonHandle : Singleton<TeamFailEnterDungeonHandle>
    {
        Dictionary<int, Action> tasks = new Dictionary<int, Action>();
        public TeamFailEnterDungeonHandle()
        {
            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
        }
        private void OnStageLoadFinish()
        {
            foreach (var action in tasks.Values)
            {
                try
                {
                    action();
                }
                catch (Exception e)
                {
                    DebugEx.Log(e.StackTrace);
                }
            }
            tasks.Clear();
        }
        public void ReceiveReason(HB913_tagGCEnterTeamFBFailReason package)
        {
            switch (package.MapID)
            {
                case 31080:
                    HandleFairyLand(package.AskType, package.Reason);
                    break;
            }
        }
        public void HandleFairyLand(int type, int reason)
        {
            if (reason == 6)
            {
                HandleFairyLandLackTicket();
            }
        }
        void HandleFairyLandLackTicket()
        {
            var dayRemindKey = TeamDungeonTicketLackWin.GetDayRemindKey(TeamDungeonTicketLackWin.LackType.FairyLand);
            if (DayRemind.Instance.GetDayRemind(dayRemindKey))//设置了今日不再提醒
            {
                return;
            }
            if (NewBieCenter.Instance.inGuiding)//引导中不弹
            {
                return;
            }
            if (WindowCenter.Instance.IsOpen<TeamDungeonTicketLackWin>()
                || WindowCenter.Instance.IsOpen<ComposeWin>())
            {
                return;
            }
            if (StageManager.Instance.isLoading)
            {
                if (!tasks.ContainsKey(31080))
                {
                    tasks.Add(31080, RecheckFairyLandTicket);
                }
                return;
            }
            TeamDungeonTicketLackWin.lackType = TeamDungeonTicketLackWin.LackType.FairyLand;
            WindowCenter.Instance.Open<TeamDungeonTicketLackWin>();
        }
        void RecheckFairyLandTicket()
        {
            SnxxzGame.Instance.StartCoroutine(Co_Load());
        }
        IEnumerator Co_Load()
        {
            yield return WaitingForSecondConst.WaitMS500;
            HandleFairyLandLackTicket();
        }
    }
}
System/Team/TeamFailEnterDungeonHandle.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: dab437b52403b874a932e1c0d7d39f78
timeCreated: 1541057241
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: