少年修仙传客户端代码仓库
client_linchunjie
2019-04-08 2199bb458e752cb8d0c8ed7fa3db479727a4421a
3335 缥缈仙域
10个文件已添加
12个文件已修改
900 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/HazyRegionConfig.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestModel.cs 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionBuyTimesWin.cs 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionBuyTimesWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionEntrancePanel.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionIncidentBehaviour.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionIncidentPanel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionModel.cs 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionWin.cs 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HA306_tagMCFairyDomainInfo), typeof(DTCA306_tagMCFairyDomainInfo));
        Register(typeof(HB107_tagMCRolePointInfo), typeof(DTCB107_tagMCRolePointInfo));
        Register(typeof(HA327_tagMCRealmExpInfo), typeof(DTCA327_tagMCRealmExpInfo));
        Register(typeof(HA40C_tagGCAllFamilyBossInfo), typeof(DTCA40C_tagGCAllFamilyBossInfo));
Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Thursday, February 14, 2019
//    [  Date ]:           Monday, April 08, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -13,15 +13,19 @@
public partial class DailyQuestOpenTimeConfig
{
    public readonly int ID;
    public readonly string ActionName;
    public readonly int OpenServerDay;
    public readonly string OpenTime;
    public readonly int Duration;
    public readonly int DayTimes;
    public readonly int DayReKind;
    public readonly int WeekTimes;
    public readonly int WeekReKind;
    public readonly int ID;
    public readonly string ActionName;
    public readonly int OpenServerDay;
    public readonly string OpenTime;
    public readonly int Duration;
    public readonly int DayTimes;
    public readonly int DayBuyTimes;
    public readonly int BuyNeedMoney;
    public readonly int DayItemAddTimes;
    public readonly int DayItemID;
    public readonly int DayReKind;
    public readonly int WeekTimes;
    public readonly int WeekReKind;
    public readonly int OpenUI;
    public DailyQuestOpenTimeConfig()
@@ -34,25 +38,33 @@
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID);
            ActionName = tables[1];
            int.TryParse(tables[2],out OpenServerDay);
            OpenTime = tables[3];
            int.TryParse(tables[4],out Duration);
            int.TryParse(tables[5],out DayTimes);
            int.TryParse(tables[6],out DayReKind);
            int.TryParse(tables[7],out WeekTimes);
            int.TryParse(tables[8],out WeekReKind);
            int.TryParse(tables[9],out OpenUI);
            int.TryParse(tables[0],out ID);
            ActionName = tables[1];
            int.TryParse(tables[2],out OpenServerDay);
            OpenTime = tables[3];
            int.TryParse(tables[4],out Duration);
            int.TryParse(tables[5],out DayTimes);
            int.TryParse(tables[6],out DayBuyTimes);
            int.TryParse(tables[7],out BuyNeedMoney);
            int.TryParse(tables[8],out DayItemAddTimes);
            int.TryParse(tables[9],out DayItemID);
            int.TryParse(tables[10],out DayReKind);
            int.TryParse(tables[11],out WeekTimes);
            int.TryParse(tables[12],out WeekReKind);
            int.TryParse(tables[13],out OpenUI);
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/DailyQuestOpenTimeConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: c6f0b6d546225e442839089494e039bc
timeCreated: 1550121862
timeCreated: 1554704148
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Config/HazyRegionConfig.cs
@@ -18,9 +18,12 @@
    public readonly string name;
    public readonly int dungeonId;
    public readonly int lineId;
    public readonly int npcId;
    public readonly int crossServer;
    public readonly int point;
    public readonly int alchemyLevel;
    public readonly int[] reward;
    public readonly int[] rewardState;
    public readonly string PortraitID;
    public HazyRegionConfig()
@@ -43,18 +46,29 @@
            int.TryParse(tables[4],out lineId); 
            int.TryParse(tables[5],out point);
            int.TryParse(tables[5],out npcId);
            int.TryParse(tables[6],out alchemyLevel);
            int.TryParse(tables[6],out crossServer);
            string[] rewardStringArray = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            int.TryParse(tables[7],out point);
            int.TryParse(tables[8],out alchemyLevel);
            string[] rewardStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            reward = new int[rewardStringArray.Length];
            for (int i=0;i<rewardStringArray.Length;i++)
            {
                 int.TryParse(rewardStringArray[i],out reward[i]);
            }
            PortraitID = tables[8];
            string[] rewardStateStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            rewardState = new int[rewardStateStringArray.Length];
            for (int i=0;i<rewardStateStringArray.Length;i++)
            {
                 int.TryParse(rewardStateStringArray[i],out rewardState[i]);
            }
            PortraitID = tables[11];
        }
        catch (Exception ex)
        {
Core/GameEngine/Model/Config/HazyRegionConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 3404c0f308cb2174bb7b93e12c3110bd
timeCreated: 1554693663
timeCreated: 1554713166
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// A5 25 购买日常活动次数 #tagCMBuyDailyActionCnt
public class CA525_tagCMBuyDailyActionCnt : GameNetPackBasic {
    public uint ActionID;    // ID
    public byte AddType;    // 0-花仙玉 1-用物品
    public CA525_tagCMBuyDailyActionCnt () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA525;
    }
    public override void WriteToBytes () {
        WriteBytes (ActionID, NetDataType.DWORD);
        WriteBytes (AddType, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA525_tagCMBuyDailyActionCnt.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5abd0a346af49774db312d49c39a4004
timeCreated: 1554708856
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs
New file
@@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections;
// A5 26 寻访仙域 #tagCMVisitFairyDomain
public class CA526_tagCMVisitFairyDomain : GameNetPackBasic {
    public byte Type;    //0-开始寻访 1-结束寻访
    public CA526_tagCMVisitFairyDomain () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA526;
    }
    public override void WriteToBytes () {
        WriteBytes (Type, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA526_tagCMVisitFairyDomain.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f13a5e03498d69c448f40987085005ef
timeCreated: 1554708856
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs
New file
@@ -0,0 +1,26 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, April 08, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using Snxxz.UI;
public class DTCA306_tagMCFairyDomainInfo : DtcBasic
{
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA306_tagMCFairyDomainInfo;
        ModelCenter.Instance.GetModel<HazyRegionModel>().ReceivePackage(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA306_tagMCFairyDomainInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f2900c8af146e174eb09138dbb65c67d
timeCreated: 1554708793
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs
New file
@@ -0,0 +1,33 @@
using UnityEngine;
using System.Collections;
// A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
public class HA306_tagMCFairyDomainInfo : GameNetPackBasic {
    public byte State;    //是否寻访中
    public ushort Energy;    //体力
    public byte Count;    // 信息个数
    public  tagMCFairyDomainEvent[] InfoList;    // 信息列表
    public HA306_tagMCFairyDomainInfo () {
        _cmd = (ushort)0xA306;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out State, vBytes, NetDataType.BYTE);
        TransBytes (out Energy, vBytes, NetDataType.WORD);
        TransBytes (out Count, vBytes, NetDataType.BYTE);
        InfoList = new tagMCFairyDomainEvent[Count];
        for (int i = 0; i < Count; i ++) {
            InfoList[i] = new tagMCFairyDomainEvent();
            TransBytes (out InfoList[i].EventID, vBytes, NetDataType.WORD);
            TransBytes (out InfoList[i].EventState, vBytes, NetDataType.BYTE);
        }
    }
    public struct tagMCFairyDomainEvent {
        public ushort EventID;        //事件ID
        public byte EventState;        //事件状态 1-未拜访 2-拜访中 3-已拜访
    }
}
Core/NetworkPackage/ServerPack/HA3_Function/HA306_tagMCFairyDomainInfo.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a1dec766a8bd13348b98571a82ce0ea2
timeCreated: 1554708767
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/CrossServerOneVsOne/CrossServerWin.cs
@@ -63,18 +63,21 @@
        {
            CloseSubWindows();
            WindowCenter.Instance.Open<CrossServerBossWin>();
            functionOrder = bossFunc.order;
        }
        private void ClickArenaFunc()
        {
            CloseSubWindows();
            WindowCenter.Instance.Open<CrossServerOneVsOneWin>();
            functionOrder = arenaFunc.order;
        }
        private void OpenHazyRegion()
        {
            CloseSubWindows();
            WindowCenter.Instance.Open<HazyRegionWin>();
            functionOrder = m_HazyRegion.order;
        }
        private void ClickRight()
System/DailyQuest/DailyQuestModel.cs
@@ -198,6 +198,20 @@
            return false;
        }
        public bool TryGetDailyQuestTimes(int _id, out DailyQuestTimes _dailyQuestTime)
        {
            _dailyQuestTime = default(DailyQuestTimes);
            var config = DailyQuestConfig.Get(_id);
            if (config != null && config.RelatedType == 1)
            {
                return dailyQuestTimes.TryGetValue(config.RelatedID, out _dailyQuestTime);
            }
            else
            {
                return false;
            }
        }
        public bool IsDailyQuestUnLock(int _dailyQuestId)
        {
            var config = DailyQuestConfig.Get(_dailyQuestId);
@@ -858,17 +872,32 @@
                        switch (config.RelatedID)
                        {
                            case 11:
                                var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
                                if (completedTimes >= dailyQuestOpenTime.DayTimes + GeneralDefine.runeTowerSweepBuyTimes)
                                {
                                    return DailyQuestState.Completed;
                                }
                                else
                                {
                                    return DailyQuestState.CanBuyTimes;
                                    var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
                                    if (completedTimes >= dailyQuestOpenTime.DayTimes + GeneralDefine.runeTowerSweepBuyTimes)
                                    {
                                        return DailyQuestState.Completed;
                                    }
                                    else
                                    {
                                        return DailyQuestState.CanBuyTimes;
                                    }
                                }
                            case 19:
                                return DailyQuestState.Normal;
                            case 25:
                                {
                                    var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
                                    if (completedTimes >= dailyQuestOpenTime.DayTimes +
                                        dailyQuestOpenTime.DayBuyTimes + dailyQuestOpenTime.DayItemAddTimes)
                                    {
                                        return DailyQuestState.Completed;
                                    }
                                    else
                                    {
                                        return DailyQuestState.CanBuyTimes;
                                    }
                                }
                            default:
                                return DailyQuestState.Completed;
                        }
System/HazyRegion/HazyRegionBuyTimesWin.cs
New file
@@ -0,0 +1,201 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, April 08, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class HazyRegionBuyTimesWin : Window
    {
        [SerializeField] Text m_BuyTimes;
        [SerializeField] Text m_Money;
        [SerializeField] Button m_Buy;
        [SerializeField] Text m_UseItemTimes;
        [SerializeField] ItemBehaviour m_Item;
        [SerializeField] Button m_Use;
        [SerializeField] Button m_Close;
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.AddListener(CloseClick);
            m_Buy.AddListener(OnBuyTimes);
            m_Use.AddListener(OnUseItem);
        }
        protected override void OnPreOpen()
        {
            dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
            Display();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void Display()
        {
            DisplayMoney();
            DisplayTimes();
            DisplayItem();
        }
        void DisplayMoney()
        {
            var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
            var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
            m_Money.text = Language.Get("HazyRegionBuyTimesCost", dailyQuestOpenTime.BuyNeedMoney);
        }
        void DisplayTimes()
        {
            DailyQuestTimes dailyQuestTimes;
            var dayUseItemTimes = 0;
            var dayBuyTimes = 0;
            if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes))
            {
                dayUseItemTimes = dailyQuestTimes.dayUseItemTimes;
                dayBuyTimes = dailyQuestTimes.dayBuyTimes;
            }
            var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
            var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
            var times = Mathf.Clamp(dailyQuestOpenTime.DayBuyTimes - dayBuyTimes, 0, dailyQuestOpenTime.DayBuyTimes);
            var label = UIHelper.AppendColor(times == 0 ? TextColType.Red : TextColType.Green, times.ToString(), true);
            m_BuyTimes.text = StringUtility.Contact(label, "/", dailyQuestOpenTime.DayBuyTimes);
            times = Mathf.Clamp(dailyQuestOpenTime.DayItemAddTimes - dayUseItemTimes, 0, dailyQuestOpenTime.DayItemAddTimes);
            label = UIHelper.AppendColor(times == 0 ? TextColType.Red : TextColType.Green, times.ToString(), true);
            m_UseItemTimes.text = StringUtility.Contact(label, "/", dailyQuestOpenTime.DayItemAddTimes);
        }
        void DisplayItem()
        {
            var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
            var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
            m_Item.SetItem(dailyQuestOpenTime.DayItemID, 1);
        }
        private void DailyQuestProgressUpdateEvent(int id)
        {
            if (id == (int)DailyQuestType.HazyRegion)
            {
                DisplayTimes();
            }
        }
        private void RefreshItemCountEvent(PackType packType, int index, int itemId)
        {
            if (packType == PackType.Item)
            {
                var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
                if (config != null)
                {
                    var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
                    if (dailyQuestOpenTime != null && dailyQuestOpenTime.DayItemID == itemId)
                    {
                        DisplayItem();
                    }
                }
            }
        }
        private void OnUseItem()
        {
            DailyQuestTimes dailyQuestTimes;
            var dayUseItemTimes = 0;
            if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes))
            {
                dayUseItemTimes = dailyQuestTimes.dayUseItemTimes;
            }
            var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
            var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
            if (dayUseItemTimes >= dailyQuestOpenTime.DayItemAddTimes)
            {
                return;
            }
            var itemCount = packModel.GetItemCountByID(PackType.Item, dailyQuestOpenTime.DayItemID);
            if (itemCount <= 0)
            {
                ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(dailyQuestOpenTime.DayItemID);
                return;
            }
            var pak = new CA525_tagCMBuyDailyActionCnt();
            pak.AddType = 1;
            pak.ActionID = (uint)config.RelatedID;
            GameNetSystem.Instance.SendInfo(pak);
        }
        private void OnBuyTimes()
        {
            DailyQuestTimes dailyQuestTimes;
            var dayBuyTimes = 0;
            if (dailyQuestModel.TryGetDailyQuestTimes((int)DailyQuestType.HazyRegion, out dailyQuestTimes))
            {
                dayBuyTimes = dailyQuestTimes.dayBuyTimes;
            }
            var config = DailyQuestConfig.Get((int)DailyQuestType.HazyRegion);
            var dailyQuestOpenTime = DailyQuestOpenTimeConfig.Get(config.RelatedID);
            if (dayBuyTimes >= dailyQuestOpenTime.DayBuyTimes)
            {
                return;
            }
            if (PlayerDatas.Instance.baseData.diamond < dailyQuestOpenTime.BuyNeedMoney)
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
                return;
            }
            var pak = new CA525_tagCMBuyDailyActionCnt();
            pak.AddType = 0;
            pak.ActionID = (uint)config.RelatedID;
            GameNetSystem.Instance.SendInfo(pak);
        }
    }
}
System/HazyRegion/HazyRegionBuyTimesWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 363f96dff81ee0342ad58f7d09951215
timeCreated: 1554705839
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/HazyRegion/HazyRegionEntrancePanel.cs
@@ -24,6 +24,8 @@
        public void Display()
        {
            dailyQuestModel.dailyQuestProgressUpdateEvent += DailyQuestProgressUpdateEvent;
            DisplayOpenTime();
            DisplayTimes();
        }
@@ -66,7 +68,12 @@
        private void BuyTimes()
        {
            var questState = dailyQuestModel.GetQuestState((int)DailyQuestType.HazyRegion);
            if (questState == DailyQuestModel.DailyQuestState.OutTime)
            {
                return;
            }
            WindowCenter.Instance.Open<HazyRegionBuyTimesWin>();
        }
        bool TryOpenHazyReion(out int error)
@@ -107,7 +114,15 @@
        public void Dispose()
        {
            dailyQuestModel.dailyQuestProgressUpdateEvent -= DailyQuestProgressUpdateEvent;
        }
        private void DailyQuestProgressUpdateEvent(int id)
        {
            if (id == (int)DailyQuestType.HazyRegion)
            {
                DisplayTimes();
            }
        }
    }
}
System/HazyRegion/HazyRegionIncidentBehaviour.cs
@@ -1,4 +1,5 @@
using System.Collections;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
@@ -9,31 +10,141 @@
    {
        [SerializeField] UIAlphaTween m_AlphaTween;
        [SerializeField] UILinerMove m_LinerMove;
        [SerializeField] Image m_IncidentTitle;
        [SerializeField] Text m_IncidentTitle;
        [SerializeField] Text m_DepletionPoint;
        [SerializeField] Image m_Bottom;
        [SerializeField] Image m_Icon;
        [SerializeField] Transform m_ContainerBoss;
        [SerializeField] Image m_BossName;
        [SerializeField] Text m_PlayerCount;
        [SerializeField] Transform m_ContainerCrossServer;
        [SerializeField] Transform m_ContainerItem;
        [SerializeField] ItemCell[] m_Items;
        [SerializeField] ItemBehaviour[] m_Items;
        [SerializeField] Text[] m_ItemDescriptions;
        [SerializeField] Transform m_ContainerPlaying;
        [SerializeField] Transform m_ContainerProcessing;
        [SerializeField] Transform m_ContainerCompleted;
        [SerializeField] Transform m_ContainerSelect;
        [SerializeField] Button m_Select;
        [Header("Boss")]
        [SerializeField] Transform m_ContainerBoss;
        [SerializeField] Text m_BossName;
        [SerializeField] Text m_PlayerCount;
        [SerializeField] Transform m_ContainerDead;
        [SerializeField] Text m_RebornTime;
        public UIAlphaTween alphaTween { get { return m_AlphaTween; } }
        public UILinerMove linerMove { get { return m_LinerMove; } }
        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
        int incidentId = 0;
        HazyRegionIncidentType incidentType = HazyRegionIncidentType.Adventure;
        private void Awake()
        {
            m_Select.SetListener(OnSelect);
        }
        public override void Display(object _data)
        {
            base.Display(_data);
            incidentId = (int)_data;
            var config = HazyRegionConfig.Get(incidentId);
            incidentType = (HazyRegionIncidentType)config.incidentType;
            DisplayBase();
            DisplayItems();
            DisplayState();
            DisplaySelect();
            DisplayBoss();
            model.selectIncidentRefresh -= SelectIncidentRefresh;
            model.selectIncidentRefresh += SelectIncidentRefresh;
            model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
            model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh;
        }
        void DisplayBase()
        {
            var config = HazyRegionConfig.Get(incidentId);
            m_DepletionPoint.text = Language.Get("IncidentDepletionPoint", config.point);
            m_IncidentTitle.text = config.name;
            m_Icon.SetSprite(config.PortraitID);
            m_Icon.SetNativeSize();
            m_ContainerCrossServer.gameObject.SetActive(config.crossServer == 1);
        }
        void DisplayItems()
        {
            var config = HazyRegionConfig.Get(incidentId);
            for (int i = 0; i < m_Items.Length; i++)
            {
                if (config.reward != null && i < config.reward.Length)
                {
                    m_Items[i].gameObject.SetActive(true);
                    m_Items[i].SetItem(config.reward[i], 1);
                    m_ItemDescriptions[i].gameObject.SetActive(true);
                    m_ItemDescriptions[i].text = config.rewardState[i] == 0 ? string.Empty :
                        Language.Get(StringUtility.Contact("HazyRegionItemState_", config.rewardState[i]));
                }
                else
                {
                    m_Items[i].gameObject.SetActive(false);
                    m_ItemDescriptions[i].gameObject.SetActive(false);
                }
            }
        }
        void DisplayBoss()
        {
            m_ContainerBoss.gameObject.SetActive(incidentType == HazyRegionIncidentType.Boss);
            var config = HazyRegionConfig.Get(incidentId);
            if (incidentType == HazyRegionIncidentType.Boss)
            {
                var npcConfig = NPCConfig.Get(config.npcId);
                m_BossName.text = npcConfig.charName;
            }
        }
        void DisplayState()
        {
            HazyRegionModel.Incident incident;
            if (model.TryGetIncident(incidentId, out incident))
            {
                m_ContainerCompleted.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Complete);
                m_ContainerProcessing.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Processing);
            }
        }
        void DisplaySelect()
        {
            m_ContainerSelect.gameObject.SetActive(incidentId == model.selectIncident);
        }
        private void SelectIncidentRefresh()
        {
            DisplaySelect();
        }
        private void OnHazyRegionIncidentRefresh()
        {
            DisplayState();
        }
        private void OnSelect()
        {
            model.selectIncident = incidentId;
        }
        public override void Dispose()
        {
            base.Dispose();
            model.selectIncidentRefresh -= SelectIncidentRefresh;
            model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;
        }
    }
}
System/HazyRegion/HazyRegionIncidentPanel.cs
@@ -49,33 +49,37 @@
        int Compare(int lhs, int rhs)
        {
            HazyRegionModel.Incident lhs_incident;
            HazyRegionModel.Incident rhs_incident;
            if (model.TryGetIncident(lhs, out lhs_incident)
                && model.TryGetIncident(rhs, out rhs_incident))
            var lhs_config = HazyRegionConfig.Get(lhs);
            var rhs_config = HazyRegionConfig.Get(rhs);
            if (lhs_config.incidentType != rhs_config.incidentType)
            {
                if (lhs_incident.type != rhs_incident.type)
                {
                    return lhs_incident.type.CompareTo(rhs_incident.type);
                }
                var type = lhs_incident.type;
                switch (type)
                {
                    case HazyRegionModel.IncidentType.Boss:
                        break;
                    case HazyRegionModel.IncidentType.GrassLand:
                        break;
                }
                return lhs_config.incidentType.CompareTo(rhs_config.incidentType);
            }
            return 0;
        }
        private void OnBack()
        {
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get(""), (bool isOk) =>
               {
                   if (isOk)
                   {
                       model.SendBackHazyRegion();
                   }
               });
        }
        private void Goto()
        {
            var error = 0;
            if (!model.TryGotoIncident(model.selectIncident, out error))
            {
                model.DisplayErrorRemind(error);
            }
            else
            {
                model.SendGotoIncident(model.selectIncident);
            }
        }
        public void Dispose()
System/HazyRegion/HazyRegionModel.cs
@@ -31,6 +31,8 @@
        }
        public event Action selectIncidentRefresh;
        public event Action<int> onHazyRegionStateRefresh;  //0-结束拜访 1-开始拜访 2-强制刷新
        public event Action onHazyRegionIncidentRefresh;
        public override void Init()
        {
@@ -40,6 +42,8 @@
        public void OnBeforePlayerDataInitialize()
        {
            isServerPrepare = false;
            point = 0;
            playing = false;
            m_Incidents.Clear();
        }
@@ -62,47 +66,166 @@
            return m_Incidents.TryGetValue(id, out incident);
        }
        public bool TryGotoIncident(int id, out int error)
        {
            error = 0;
            var config = HazyRegionConfig.Get(id);
            if (config == null)
            {
                return false;
            }
            if (!TryGotoDungeon(id, out error))
            {
                return false;
            }
            Incident incident;
            if (TryGetIncident(id, out incident))
            {
                if (incident.state != IncidentState.Processing)
                {
                    switch (incident.state)
                    {
                        case IncidentState.UnStart:
                            if (point < config.point)
                            {
                                error = 3;
                                return false;
                            }
                            break;
                        case IncidentState.Complete:
                            error = 4;
                            return false;
                    }
                }
            }
            return true;
        }
        public bool TryGotoDungeon(int id, out int error)
        {
            error = 0;
            if (CrossServerUtility.IsCrossServer())
            {
                error = 1;
                return false;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            if (MapUtility.IsDungeon(mapId))
            {
                error = 2;
                return false;
            }
            return true;
        }
        public ICollection<int> GetAllIncidents()
        {
            return m_Incidents.Keys;
        }
        public void DisplayErrorRemind(int error)
        {
            switch (error)
            {
                default:
                    break;
            }
        }
        public void SendGotoIncident(int id)
        {
            var config = HazyRegionConfig.Get(id);
            switch ((HazyRegionIncidentType)config.incidentType)
            {
                case HazyRegionIncidentType.Adventure:
                    break;
                case HazyRegionIncidentType.Boss:
                case HazyRegionIncidentType.FairyGrass:
                case HazyRegionIncidentType.ReikiGrass:
                case HazyRegionIncidentType.Precious:
                    break;
            }
        }
        public void SendBackHazyRegion()
        {
            var pak = new CA526_tagCMVisitFairyDomain();
            pak.Type = 1;
            GameNetSystem.Instance.SendInfo(pak);
        }
        public void SendOpenHazyRegion()
        {
            var pak = new CA526_tagCMVisitFairyDomain();
            pak.Type = 0;
            GameNetSystem.Instance.SendInfo(pak);
        }
        public void ReceivePackage()
        public void ReceivePackage(HA306_tagMCFairyDomainInfo package)
        {
            var preplaying = playing;
            playing = package.State == 1;
            point = package.Energy;
            m_Incidents.Clear();
            for (int i = 0; i < package.Count; i++)
            {
                var data = package.InfoList[i];
                m_Incidents[data.EventID] = new Incident()
                {
                    id = data.EventID,
                    state = (IncidentState)data.EventState,
                };
            }
            if (onHazyRegionIncidentRefresh != null)
            {
                onHazyRegionIncidentRefresh();
            }
            if (isServerPrepare)
            {
                if (preplaying != playing)
                {
                    if (onHazyRegionStateRefresh != null)
                    {
                        onHazyRegionStateRefresh(playing ? 1 : 0);
                    }
                }
            }
            else
            {
                if (onHazyRegionStateRefresh != null)
                {
                    onHazyRegionStateRefresh(2);
                }
            }
        }
        public enum IncidentState
        {
            None,
            Processing,
            Complete,
            UnStart = 1,
            Processing = 2,
            Complete = 3,
        }
        public enum IncidentType
        {
            Precious,
            Adventure,
            Boss,
            GrassLand,
        }
        public class Incident
        public struct Incident
        {
            public int id;
            public IncidentType type;
            public IncidentState state;
        }
    }
    public enum HazyRegionIncidentType
    {
        Adventure,
        Precious,
        FairyGrass,
        Boss,
        ReikiGrass,
    }
}
System/HazyRegion/HazyRegionWin.cs
@@ -63,13 +63,38 @@
        protected override void OnPreOpen()
        {
            m_EntrancePanel.gameObject.SetActive(false);
            m_IncidentPanel.gameObject.SetActive(false);
        }
        protected override void OnActived()
        {
            base.OnActived();
            Display();
            model.onHazyRegionStateRefresh += OnHazyRegionStateRefresh;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            m_EntrancePanel.Dispose();
            m_IncidentPanel.Dispose();
            model.onHazyRegionStateRefresh -= OnHazyRegionStateRefresh;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void Display()
        {
            m_EntrancePanel.gameObject.SetActive(false);
            m_IncidentPanel.gameObject.SetActive(false);
            m_Stage = model.playing ? HazyRegionStage.Playing : HazyRegionStage.Entrance;
@@ -84,28 +109,17 @@
            }
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            m_EntrancePanel.Dispose();
            m_IncidentPanel.Dispose();
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void OpenHazyRegionEntrance()
        {
            m_EntrancePanel.gameObject.SetActive(true);
            m_EntrancePanel.Dispose();
            m_EntrancePanel.Display();
        }
        void OpenHazyRegionIncident()
        {
            m_IncidentPanel.gameObject.SetActive(true);
            m_IncidentPanel.Dispose();
            m_IncidentPanel.Display();
        }
@@ -119,6 +133,22 @@
            m_EntrancePanel.Dispose();
        }
        private void OnHazyRegionStateRefresh(int state)
        {
            if (state == 2)
            {
                if ((model.playing && stage != HazyRegionStage.Playing)
                    || (!model.playing && stage != HazyRegionStage.Entrance))
                {
                    Display();
                }
            }
            else
            {
                stage = state == 0 ? HazyRegionStage.Entrance : HazyRegionStage.Playing;
            }
        }
        enum HazyRegionStage
        {
            Entrance,