少年修仙传客户端代码仓库
client_linchunjie
2018-10-09 c5a1b1eb5f845f72b0b3e48fc8c7ccf75cee5831
Merge branch 'master' into 3687天赋功能
3 文件已复制
1个文件已删除
1 文件已重命名
4个文件已添加
108个文件已修改
3741 ■■■■ 已修改文件
Core/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Login/Launch.cs 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Login/LoginStage.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DemonJarConfig.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/DemonJarConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/LoginSeverListConfig.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/LoginSeverListConfig.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/SnxxzGame.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0439_tagPlayerChangeDienstgrad.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC09_tagGCFairyCeremonyInfo.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DebugPkgCache.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DebugPkgCache.cs.meta 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAC_Activity/HAC09_tagGCFairyCeremonyInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/BossFakeLineUtility.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Player.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorPlayerBase.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/MapTransferUtility.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/PreFightMission.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/CreateRoleStage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/PaintMapLine.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/SelectRoleStage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageManager.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/AssetVersionUtility.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/AssetVersion/DownLoadAndDiscompressTask.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/BlastFurnaceModel.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/GetEquipPathTips.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionConfig.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionUtility.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzModel.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzPackCell.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzPackWin.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonAncientTargetWin.cs 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonBossBriefInfoBehaviour.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonFightWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonInspireWin.cs 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonNuwaVictoryWin.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/TrialDungeonModel.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/TrialExchangeBehaviour.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/CeremonyCoolTime.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/CeremonyCoolTime.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/CeremonyFirepartyWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/FairylandCeremonyModel.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/FairylandCeremonyWin.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairylandCeremony/ToHiTaskCell.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarBossRebornCoolDown.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousModel.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/FindPreciousTimer.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FriendSystem/MailAllModel.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FriendSystem/MailPanel.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/BoxGetItemWin.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipDevourWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipTip.cs 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackSendQuestMgr.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/BatchBuyWin.cs 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/BatchBuyWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/BatchUseModel.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/KnapSackWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/RoleEquipWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/GameNotice.cs 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/LoginModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/ServerData.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Login/ServerListCenter.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HighSettingFadeInFadeOut.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HoistingWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/SideMission.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskListTip.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TopRightTip.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainWin/AttackButton.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/BattleHint.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/SysNotifyMgr.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Mount/PlayerMountDatas.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FeaturesType.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleCoolDown.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/InSevenDayWin.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Pet/PlayerPetDatas.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/RolePanel.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/RoleRenameWin.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RolePromote/RolePromoteWin.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Rune/RuneModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Rune/RunePackCell.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/Logic/BuyEquipTip.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/StoreModel.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/StoreWin.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/EquipWashModel.cs 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastAttributes.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastEntry.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastModel.cs 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastReinforcementWin.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastSlidingList.cs 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/WashTips.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Team/MyTeamWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Tip/ItemConfirmWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureData.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureLevelUpWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasurePotentialPanel.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/TreasureFindHost/TreasureFindHostModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/LimitedTimePackageModel.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/LimitedTimePackageTime.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/LimitedTimePackageWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationBase.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationTimeHepler.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 582 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/MapModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/TimerBehaviour.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/HUD/HeadUpName.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/RuntimeLogUtility.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -398,6 +398,7 @@
            EditorGUILayout.Space();
            ClientPackage.auditOutTime = EditorGUILayout.TextField("AppStore Review OutTime",ClientPackage.auditOutTime, GUILayout.Height(20));
            publishers = EditorGUILayout.TextField("Publishers", publishers, GUILayout.Height(50));
            EditorGUILayout.Space();
Core/GameEngine/Login/Launch.cs
@@ -119,6 +119,9 @@
                break;
        }
#endif
#if UNITY_ANDROID
        m_CurrentStage = LaunchStage.ClientVersion;
        if (!Application.isEditor || InGameDownTestUtility.enable)
        {
@@ -136,23 +139,29 @@
        }
#endif
#if UNITY_IOS && !UNITY_EDITOR
        m_CurrentStage = LaunchStage.ClientVersion;
        if (!Application.isEditor || InGameDownTestUtility.enable)
#if UNITY_IOS
        if (!VersionUtility.Instance.InIosAuditTime())
        {
            VersionUtility.Instance.RequestVersionCheck();
            progressBuf = progress;
            timer = 0f;
            duration = 1f;
            while (!VersionUtility.Instance.completed)
            m_CurrentStage = LaunchStage.ClientVersion;
            if (!Application.isEditor || InGameDownTestUtility.enable)
            {
                timer += Time.deltaTime;
                progress = Mathf.Clamp(progressBuf + timer / duration * 0.1f, progressBuf, progressBuf + 0.1f);
                yield return null;
                VersionUtility.Instance.RequestVersionCheck();
                progressBuf = progress;
                timer = 0f;
                duration = 1f;
                while (!VersionUtility.Instance.completed)
                {
                    timer += Time.deltaTime;
                    progress = Mathf.Clamp(progressBuf + timer / duration * 0.1f, progressBuf, progressBuf + 0.1f);
                    yield return null;
                }
            }
        }
#endif
#if UNITY_IOS && !UNITY_EDITOR
        if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
        {
@@ -219,47 +228,40 @@
        OperationLogCollect.Instance.RecordLauchEvent(2);
        OperationLogCollect.Instance.RecordEvent(2);
        if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
        if (VersionUtility.Instance.NeedDownAsset())
        {
            m_CurrentStage = LaunchStage.DownLoad;
            switch (VersionConfig.Get().assetAccess)
            progressBuf = progress;
            timer = 0f;
            duration = 1.5f;
            AssetVersionUtility.GetAssetVersionFile();
            while (!AssetVersionUtility.checkAssetCompleted)
            {
                case InstalledAsset.IngoreDownLoad:
                    break;
                case InstalledAsset.NullAsset:
                case InstalledAsset.HalfAsset:
                case InstalledAsset.FullAsset:
                    AssetVersionUtility.GetAssetVersionFile();
                timer += Time.deltaTime;
                progress = Mathf.Clamp(progressBuf + timer / duration * 0.3f, progressBuf, progressBuf + 0.3f);
                yield return null;
            }
                    progressBuf = progress;
                    timer = 0f;
                    duration = 1.5f;
                    while (!AssetVersionUtility.checkAssetCompleted)
                    {
                        timer += Time.deltaTime;
                        progress = Mathf.Clamp(progressBuf + timer / duration * 0.3f, progressBuf, progressBuf + 0.3f);
                        yield return null;
                    }
            if (!AssetVersionUtility.priorAssetDownLoadDone)
            {
                AssetVersionUtility.BeginDownLoadTask(true);
                while (!AssetVersionUtility.priorAssetDownLoadDone)
                {
                    yield return null;
                }
                    if (!AssetVersionUtility.priorAssetDownLoadDone)
                    {
                        AssetVersionUtility.BeginDownLoadTask(true);
                        while (!AssetVersionUtility.priorAssetDownLoadDone)
                        {
                            yield return null;
                        }
                yield return WaitingForSecondConst.WaitMS200;
            }
                        yield return WaitingForSecondConst.WaitMS200;
                    }
                    if (!AssetVersionUtility.unPriorAssetDownLoadDone)
                    {
                        AssetVersionUtility.BeginDownLoadTask(false);
                    }
                    break;
            if (!AssetVersionUtility.unPriorAssetDownLoadDone)
            {
                AssetVersionUtility.BeginDownLoadTask(false);
            }
        }
        GameNotice.OpenGameNotice();
        if (!AssetSource.allFromEditor)
        {
            StartCoroutine(AssetBundleUtility.Instance.Initialize());
Core/GameEngine/Login/LoginStage.cs
@@ -18,6 +18,11 @@
            backGroundWin.ShowLoginEffect();
        }
        if (VersionUtility.Instance.InIosAuditTime())
        {
            ServerListCenter.Instance.ParseServerLocalServerList();
        }
        if (VersionConfig.Get().isBanShu)
        {
            WindowCenter.Instance.Open<BanShuLoginWin>(true);
@@ -47,7 +52,7 @@
        SoundPlayer.Instance.PlayLoginMusic();
        if (!AssetVersionUtility.hasDownLoadFullAsset)
        if (VersionUtility.Instance.NeedDownAsset() && !AssetVersionUtility.hasDownLoadFullAsset)
        {
            InGameDownLoad.Instance.inGameDownLoadAllow = true;
            InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.None);
Core/GameEngine/Model/Config/DemonJarConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Tuesday, August 28, 2018
//    [  Date ]:           Friday, September 28, 2018
//--------------------------------------------------------
using UnityEngine;
@@ -26,6 +26,7 @@
        public int[] Job3;
        public int KillHurtMin { get ; private set ; }
        public int KillHurtMax { get ; private set ; }
        public string RewardDescription { get ; private set; }
        public override string getKey()
        {
@@ -84,6 +85,8 @@
                KillHurtMin=IsNumeric(rawContents[13]) ? int.Parse(rawContents[13]):0; 
            
                KillHurtMax=IsNumeric(rawContents[14]) ? int.Parse(rawContents[14]):0; 
                RewardDescription = rawContents[15].Trim();
            }
            catch (Exception ex)
            {
Core/GameEngine/Model/Config/DemonJarConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 7e442059ea96745478dd5787f9e84ef5
timeCreated: 1535448421
timeCreated: 1538136681
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Config/LoginSeverListConfig.cs
New file
@@ -0,0 +1,50 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Saturday, September 29, 2018
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class LoginSeverListConfig : ConfigBase {
        public int ID { get ; private set ; }
        public string ip { get ; private set; }
        public string pagePort { get ; private set; }
        public int gatePort { get ; private set ; }
        public string serverName { get ; private set; }
        public override string getKey()
        {
            return ID.ToString();
        }
        public override void Parse() {
            try
            {
                ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                ip = rawContents[1].Trim();
                pagePort = rawContents[2].Trim();
                gatePort=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0;
                serverName = rawContents[4].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/LoginSeverListConfig.cs.meta
copy from Fight/Stage/PaintMapLine.cs.meta copy to Core/GameEngine/Model/Config/LoginSeverListConfig.cs.meta
File was copied from Fight/Stage/PaintMapLine.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 9202015b1077a91488a691347bdeafae
timeCreated: 1508832157
guid: 26aef6c81733c0440a426102e8c58da7
timeCreated: 1538225014
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/ConfigManager.cs
@@ -27,10 +27,16 @@
        SnxxzGame.Instance.AddApplicationOutAction(OnApplicationOut);
    }
    public void LoadPriorBundleConfig()
    {
        StartSyncTask<PriorBundleConfig>(AssetPath.Resource);
    }
    public void PreLoadConfigs()
    {
        StartSyncTask<PriorBundleConfig>(AssetPath.Resource);
        StartSyncTask<PriorLanguageConfig>(AssetPath.Resource);
        StartSyncTask<LoginSeverListConfig>(AssetSource.refdataFromEditor ? AssetPath.ResourceOut : AssetPath.External);
    }
    List<ConfigTask> configTasks = new List<ConfigTask>();
@@ -204,7 +210,7 @@
                }
            }
            var allowTaskCount = completedCount <= 7 ? GetMinWorkingTaskCount() : GetMaxWorkingTaskCount();
            var allowTaskCount = completedCount <= 8 ? GetMinWorkingTaskCount() : GetMaxWorkingTaskCount();
            var workingCount = 0;
            for (int i = 0; i < configTasks.Count; i++)
            {
Core/GameEngine/SnxxzGame.cs
@@ -43,13 +43,51 @@
        }
    }
#if UNITY_EDITOR
    private void OnDrawGizmos()
    {
        if (m_OnDrawGizmosActions != null)
        {
            m_OnDrawGizmosActions();
        }
        Gizmos.color = Color.black;
        if (RuntimeLogUtility.s_ShowMapLine)
        {
            GA_Hero _hero = PlayerDatas.Instance.hero;
            int row = 50;
            int column = 50;
            float size = 0.5f;
            float _startX = (int)_hero.Pos.x - 12.5f;
            float _startZ = (int)_hero.Pos.z - 12.5f;
            if (_hero != null)
            {
                Vector3 _start;
                Vector3 _end;
                for (int i = 0; i < row + 1; ++i)
                {
                    _start = new Vector3(_startX, _hero.Pos.y + 0.1f, _startZ + i * size);
                    _end = new Vector3(_startX + column * .5f, _hero.Pos.y + 0.1f, _startZ + i * size);
                    Gizmos.DrawLine(_start, _end);
                }
                for (int i = 0; i < column + 1; ++i)
                {
                    _start = new Vector3(_startX + i * size, _hero.Pos.y + 0.1f, _startZ);
                    _end = new Vector3(_startX + i * size, _hero.Pos.y + 0.1f, _startZ + row* .5f);
                    Gizmos.DrawLine(_start, _end);
                }
            }
        }
    }
#endif
    protected sealed override void OnDestroy()
    {
Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0439_tagPlayerChangeDienstgrad.cs
@@ -30,8 +30,8 @@
        GActorPlayerBase _player = GAMgr.Instance.GetBySID(vNetData.PlayerID) as GActorPlayerBase;
        if (_player != null)
        {
            var titleId = PlayerDatas.Instance.baseData.MapID == 31160 ? 0 : vNetData.GradID;//上古战场不显示称号
            _player.SwitchTitle(titleId);
            //var titleId = PlayerDatas.Instance.baseData.MapID == 31160 ? 0 : vNetData.GradID;//上古战场不显示称号
            _player.SwitchTitle(vNetData.GradID);
        }
    }
Core/NetworkPackage/DTCFile/ServerPack/HAC_Activity/DTCAC09_tagGCFairyCeremonyInfo.cs
@@ -6,7 +6,8 @@
public class DTCAC09_tagGCFairyCeremonyInfo : DtcBasic {
public class DTCAC09_tagGCFairyCeremonyInfo : DtcBasic
{
    FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
Core/NetworkPackage/DebugPkgCache.cs
New file
@@ -0,0 +1,31 @@
using System.Collections.Generic;
public class DebugPkgCache
{
    private string dataTime;
    private int code;
    private static List<DebugPkgCache> m_List = new List<DebugPkgCache>();
    public static void Push(GameNetPackBasic package)
    {
        if (m_List.Count != 0)
        {
            if (m_List[m_List.Count - 1].code == 258)
            {
                return;
            }
        }
        DebugPkgCache _p = new DebugPkgCache();
        _p.dataTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
        _p.code = package.cmd;
        m_List.Add(_p);
    }
    public static void UpLoad()
    {
    }
}
Core/NetworkPackage/DebugPkgCache.cs.meta
copy from Fight/Stage/PaintMapLine.cs.meta copy to Core/NetworkPackage/DebugPkgCache.cs.meta
File was copied from Fight/Stage/PaintMapLine.cs.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 9202015b1077a91488a691347bdeafae
timeCreated: 1508832157
licenseType: Pro
guid: 90b1b61b46516f047a22f3e5920983cd
timeCreated: 1538230240
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
Core/NetworkPackage/ServerPack/HAC_Activity/HAC09_tagGCFairyCeremonyInfo.cs
@@ -8,6 +8,7 @@
    public string EndtDate;    // 结束日期 y-m-d
    public ushort WorldLV;    // 世界等级
    public ushort LimitLV;    // 限制等级
    public byte ResetType;    // 重置类型 0-0点重置 1-5点重置
    public HAC09_tagGCFairyCeremonyInfo () {
        _cmd = (ushort)0xAC09;
@@ -18,6 +19,7 @@
        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out WorldLV, vBytes, NetDataType.WORD);
        TransBytes (out LimitLV, vBytes, NetDataType.WORD);
        TransBytes (out ResetType, vBytes, NetDataType.BYTE);
    }
}
Fight/BossFakeLineUtility.cs
@@ -15,8 +15,18 @@
    bool m_ShowFakeLine = false;
    public bool showFakeLine {
        get { return m_ShowFakeLine; }
        set { m_ShowFakeLine = value; }
        get {
            if (TimeUtility.OpenDay < GeneralConfig.Instance.bossShuntDays
                && GeneralConfig.Instance.neutralMaps.Contains(PlayerDatas.Instance.baseData.MapID))
            {
                return true;
            }
            return m_ShowFakeLine;
        }
        set {
            m_ShowFakeLine = value;
        }
    }
    public BossFakeLineUtility()
@@ -70,6 +80,15 @@
    public void RecordSawStone(int npcId, int lineId)
    {
        var bossInfo = BossInfoConfig.GetBossInfoByStoneId(npcId);
        if (bossInfo != null)
        {
            if (HasSawLineBossRecently(bossInfo.NPCID, lineId))
            {
                bossSawRecorder.Clear();
            }
        }
        stoneSawRecorder.Record(npcId, lineId, Time.realtimeSinceStartup);
    }
@@ -93,6 +112,11 @@
    public void RecordSawBoss(int bossId, int lineId)
    {
        if (HasSawLineStoneRecently(bossId, lineId))
        {
            stoneSawRecorder.Clear();
        }
        bossSawRecorder.Record(bossId, lineId, Time.realtimeSinceStartup);
    }
Fight/GameActor/GA_Hero.cs
@@ -210,10 +210,9 @@
            if (Time.realtimeSinceStartup - m_ChkOpenAutoEscapeTime > 2f)
            {
                int _dgDataID = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
                var dungeonOpen = Config.Instance.Get<DungeonOpenTimeConfig>(_dgDataID);
                if (dungeonOpen != null)
                if (Config.Instance.ContainKey<DungeonOpenTimeConfig>(_dgDataID))
                {
                    var dungeonOpen = Config.Instance.Get<DungeonOpenTimeConfig>(_dgDataID);
                    if (dungeonOpen.DoFight == 1)
                    {
                        forceAutoFight = true;
@@ -419,8 +418,7 @@
        var titleModel = ModelCenter.Instance.GetModel<TitleModel>();
        var _title = titleModel.GetTitleEquip();
        uint _titleID = 0;
        if (_title != null && titleModel.IsTitleGain(_title.id)
            && PlayerDatas.Instance.baseData.MapID != 31160)//上古战场不显示称号
        if (_title != null && titleModel.IsTitleGain(_title.id))//上古战场不显示称号
        {
            _titleID = (uint)_title.id;
        }
@@ -440,7 +438,6 @@
        }
        base.SetFairyLeagueHeadUp(PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
        CheckAncientHeadUp();
    }
    public sealed override void SwitchRedName(bool on)
Fight/GameActor/GA_Player.cs
@@ -352,8 +352,7 @@
            m_HeadUpName = HeadUpName.RequireHeadUpName(HeadUpName.Pattern.Player, MP_Name, 0, CameraController.Instance.CameraObject);
        }
        var titleId = PlayerDatas.Instance.baseData.MapID == 31160 ? 0 : ActorInfo.titleID;
        m_HeadUpName.SetPlayerInfo((int)ActorInfo.realm, titleId, ActorInfo.PlayerName, ActorInfo.familyName, m_H0434.State == 1);
        m_HeadUpName.SetPlayerInfo((int)ActorInfo.realm, ActorInfo.titleID, ActorInfo.PlayerName, ActorInfo.familyName, m_H0434.State == 1);
        if (StatusMgr.Instance.IsExist(ServerInstID, StatusMgr.Instance.bossBelongBuffID))
        {
@@ -361,7 +360,6 @@
        }
        base.SetFairyLeagueHeadUp(PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
        CheckAncientHeadUp();
    }
    public sealed override void SwitchRedName(bool on)
Fight/GameActor/GActorPlayerBase.cs
@@ -43,8 +43,6 @@
    public JobSetupConfig JobSetup { get; protected set; }
    DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
    public override int NextAction
    {
        get
@@ -218,7 +216,6 @@
        MovingState = E_MovingState.Normal;
        SystemSetting.Instance.qualityLevelChangeEvent += OnGameQualityChange;
        dungeonModel.updateMissionEvent += CheckAncientHeadUp;
        base.OnInit(package);
    }
@@ -340,7 +337,6 @@
        JobSetup = null;
        SystemSetting.Instance.qualityLevelChangeEvent -= OnGameQualityChange;
        dungeonModel.updateMissionEvent -= CheckAncientHeadUp;
        base.OnUnit();
    }
@@ -352,20 +348,20 @@
        UpdateRush();
    }
    public void CheckAncientHeadUp()
    {
        if (PlayerDatas.Instance.baseData.MapID == 31160)
        {
            var help = dungeonModel.mission;
            SwitchAncientKing(help.topPlayerID == ServerInstID);
            SwitchAncientEnemy(help.enemyID == ServerInstID && ServerInstID != PlayerDatas.Instance.baseData.PlayerID);
        }
        else
        {
            SwitchAncientKing(false);
            SwitchAncientEnemy(false);
        }
    }
    //public void CheckAncientHeadUp()
    //{
    //    if (PlayerDatas.Instance.baseData.MapID == 31160)
    //    {
    //        var help = dungeonModel.mission;
    //        SwitchAncientKing(help.topPlayerID == ServerInstID);
    //        SwitchAncientEnemy(help.enemyID == ServerInstID && ServerInstID != PlayerDatas.Instance.baseData.PlayerID);
    //    }
    //    else
    //    {
    //        SwitchAncientKing(false);
    //        SwitchAncientEnemy(false);
    //    }
    //}
    #region 装备穿戴相关
Fight/MapTransferUtility.cs
@@ -180,8 +180,15 @@
        }
    }
    public bool forceMove = false;
    public void MoveToNPC(int npcID, int sid = 0)
    {
        if (npcID != NpcID)
        {
            forceMove = false;
        }
        if (sid != 0)
        {
            GActor _actor = GAMgr.Instance.GetBySID((uint)sid);
@@ -352,6 +359,8 @@
                    var mapId = _npcLocation.mapId;
                    var position = new Vector3(_mapConfig.BornPoints[0].x, 0, _mapConfig.BornPoints[0].y);
                    Send_WorldTransfer(mapId, position, MapTransferType.WorldTransport, (byte)_lineID, npcID);
                    forceMove = true;
                    if (BossFakeLineUtility.Instance.IsShuntBoss(npcID))
                    {
@@ -376,14 +385,17 @@
                    if (((lastMoveToWorldBossNpcID == npcID
                        && Time.realtimeSinceStartup - lastMoveToWorldBossTime < 60)
                        && PlayerDatas.Instance.baseData.FBID == 0)
                        || BossFakeLineUtility.Instance.showFakeLine
                        || (BossFakeLineUtility.Instance.showFakeLine && ModelCenter.Instance.GetModel<FindPreciousModel>().IsBossAlive(npcID))
                        || (_fairyBossModel.bosses != null
                        && _fairyBossModel.bosses.Contains(npcID)))
                        && _fairyBossModel.bosses.Contains(npcID))
                        || forceMove)
                    {
                        //Debug.LogFormat(" |-- 非想去的boss为60秒内行为产生且为同一只boss, {0}, {1}", BossFakeLineUtility.Instance.showFakeLine,
                        //PlayerDatas.Instance.baseData.FBID);
                        Vector3 _destPos = new Vector3(_npcLocation.position.x, _hero.Pos.y, _npcLocation.position.y);
                        _hero.MoveToPosition(_destPos, _npcLocation.scope);
                        forceMove = false;
                    }
                    else
                    {
@@ -398,6 +410,7 @@
                            //Debug.LogFormat(" |-- 非想去的boss记录,或则见到boss时差超过60秒");
                            Send_WorldTransfer(_npcLocation.mapId, new Vector3(_hero.Pos.x * 2, 0, _hero.Pos.z * 2), MapTransferType.WorldTransport, 0, npcID);
                            forceMove = true;
                        }
                        else
                        {
Fight/PreFightMission.cs
@@ -1395,7 +1395,11 @@
        m_FabaoEffect = SFXPlayUtility.Instance.PlayWithEulerAngle(1051, new Vector3(129.98f, 51.548f, 33.13f), new Vector3(0, -90.81f, 0));
        PlayerDatas.Instance.hero.MoveToPosition(m_SecondTransferStartPos);
        if (PlayerDatas.Instance.hero!=null)
        {
            PlayerDatas.Instance.hero.MoveToPosition(m_SecondTransferStartPos);
        }
        DebugEx.Log("第四个对话结束...");
    }
@@ -1556,6 +1560,8 @@
        {
            yield break;
        }
        WindowCenter.Instance.Close<MainInterfaceWin>();
        
        CameraController.Instance.MaskCamera.gameObject.SetActive(false);
        
@@ -1746,9 +1752,11 @@
            // }
            AssetBundleUtility.Instance.UnloadAssetBundle("maps/map000_xsdt", true, false);
        }
    }
    private bool mDestroy = false;
    public void Destroy()
    {
        SnxxzGame.Instance.StartCoroutine(Co_Destroy());
Fight/Stage/CreateRoleStage.cs
@@ -22,7 +22,7 @@
        SystemSetting.Instance.SetQualityLevel(SystemSetting.Instance.GetCurrentQualityLevel());
        SoundPlayer.Instance.PlayLoginMusic();
        if (!AssetVersionUtility.hasDownLoadFullAsset)
        if (VersionUtility.Instance.NeedDownAsset() && !AssetVersionUtility.hasDownLoadFullAsset)
        {
            InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.None);
        }
Fight/Stage/PaintMapLine.cs
File was deleted
Fight/Stage/SelectRoleStage.cs
@@ -20,7 +20,7 @@
        SystemSetting.Instance.SetQualityLevel(SystemSetting.Instance.GetCurrentQualityLevel());
        SoundPlayer.Instance.PlayLoginMusic();
        if (!AssetVersionUtility.hasDownLoadFullAsset)
        if (VersionUtility.Instance.NeedDownAsset() && !AssetVersionUtility.hasDownLoadFullAsset)
        {
            InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.None);
        }
Fight/Stage/StageManager.cs
@@ -559,15 +559,15 @@
        _hero.IdleImmediate();
        _hero.SetFairyLeagueHeadUp(PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
        _hero.CheckAncientHeadUp();
        var titleId = 0;
        if (PlayerDatas.Instance.baseData.MapID != 31160)
        {
            var titelModel = ModelCenter.Instance.GetModel<TitleModel>();
            var title = titelModel.GetTitleEquip();
            titleId = title != null && titelModel.IsTitleGain(title.id) ? title.id : 0;
        }
        _hero.SwitchTitle((uint)titleId);
        //_hero.CheckAncientHeadUp();
        //var titleId = 0;
        //if (PlayerDatas.Instance.baseData.MapID != 31160)
        //{
        //    var titelModel = ModelCenter.Instance.GetModel<TitleModel>();
        //    var title = titelModel.GetTitleEquip();
        //    titleId = title != null && titelModel.IsTitleGain(title.id) ? title.id : 0;
        //}
        //_hero.SwitchTitle((uint)titleId);
        // 判断buff
        if (StatusMgr.Instance.IsExist(PlayerDatas.Instance.PlayerId, StatusMgr.Instance.redNameBuffID))
System/AssetVersion/AssetVersionUtility.cs
@@ -18,23 +18,13 @@
    static bool m_PriorAssetDownLoadDone = false;
    public static bool priorAssetDownLoadDone {
        get {
            if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 0)
            if (VersionUtility.Instance.NeedDownAsset())
            {
                return m_PriorAssetDownLoadDone;
            }
            else
            {
                return true;
            }
            else
            {
                switch (VersionConfig.Get().assetAccess)
                {
                    case InstalledAsset.NullAsset:
                    case InstalledAsset.HalfAsset:
                    case InstalledAsset.FullAsset:
                        return m_PriorAssetDownLoadDone;
                    case InstalledAsset.IngoreDownLoad:
                        return true;
                    default:
                        return true;
                }
            }
        }
    }
@@ -42,23 +32,13 @@
    static bool m_UnPriorAssetDownLoadDone = false;
    public static bool unPriorAssetDownLoadDone {
        get {
            if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 0)
            if (VersionUtility.Instance.NeedDownAsset())
            {
                return m_UnPriorAssetDownLoadDone;
            }
            else
            {
                return true;
            }
            else
            {
                switch (VersionConfig.Get().assetAccess)
                {
                    case InstalledAsset.NullAsset:
                    case InstalledAsset.HalfAsset:
                    case InstalledAsset.FullAsset:
                        return m_UnPriorAssetDownLoadDone;
                    case InstalledAsset.IngoreDownLoad:
                        return true;
                    default:
                        return true;
                }
            }
        }
    }
@@ -193,7 +173,14 @@
        }
        else
        {
            path = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, _assetKey);
            if (Application.platform == RuntimePlatform.Android)
            {
                path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, _assetKey);
            }
            else
            {
                path = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, _assetKey);
            }
        }
        return path;
@@ -201,17 +188,14 @@
    public static bool IsUnpriorAssetDownLoadOk()
    {
        if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 0)
        if (VersionUtility.Instance.NeedDownAsset())
        {
            return true;
            return unPriorAssetDownLoadDone;
        }
        if (VersionConfig.Get().assetAccess == InstalledAsset.IngoreDownLoad)
        else
        {
            return true;
        }
        return unPriorAssetDownLoadDone;
    }
System/AssetVersion/DownLoadAndDiscompressTask.cs
@@ -78,6 +78,8 @@
    {
        step = Step.DownLoad;
        SnxxzGame.Instance.StartCoroutine(Co_StartDownLoad());
        GameNotice.OpenGameNotice();
    }
    IEnumerator Co_StartDownLoad()
System/BlastFurnace/BlastFurnaceModel.cs
@@ -40,6 +40,9 @@
    {
        get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
    }
    ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
    PlayerPetDatas petModel { get { return ModelCenter.Instance.GetModel<PlayerPetDatas>(); } }
    PlayerMountDatas mountModel { get { return ModelCenter.Instance.GetModel<PlayerMountDatas>(); } }
    public override void Init()
    {
@@ -91,8 +94,11 @@
        playerPack.RefreshItemSumUseCntAct -= RefreshItemUsce;
        WindowCenter.Instance.windowAfterCloseEvent -= StoveUpgradAfterClose;
        PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshRealm;
        PlayerPetDatas.Event_H0704Add -= AddPetEvent;
        PlayerMountDatas.Event_MountHA301A -= AddMountEvent;
    }
    public void OnAfterPlayerDataInitialize()
    {
        
@@ -106,6 +112,17 @@
        CheckRecycleStoreRed();
    }
    private void AddMountEvent(int _HorseID)
    {
        CheckMakerDandrugCondition();
    }
    private void AddPetEvent()
    {
        CheckMakerDandrugCondition();
    }
    public void OnPlayerLoginOk()
    {
        CheckMakerDandrugCondition();
@@ -117,6 +134,9 @@
        WindowCenter.Instance.windowAfterCloseEvent += StoveUpgradAfterClose;
        playerPack.ItemCntReduceAct += RefreshDanReduce;
        PlayerDatas.Instance.PlayerDataRefreshInfoEvent += RefreshRealm;
        PlayerPetDatas.Event_H0704Add += AddPetEvent;
        PlayerMountDatas.Event_MountHA301A += AddMountEvent;
    }
    public void RefreshAddSpecMat(AlchemySpecConfig alchemySpecModel)
@@ -828,6 +848,20 @@
        if (alchemyModellist == null || !FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlastFurnace)) return;
        for (int i = alchemyModellist.Count - 1; i > -1; i--)
        {
            if (StoveLV >= alchemyModellist[i].BlastFurnaceLV)
            {
                if (IsSpecMatEnough(alchemyModellist[i]) && IsNormalMatEnough(alchemyModellist[i])
                    && !CheckIsHavePetOrMount(alchemyModellist[i]))
                {
                    danDrugRedPointlist[i].state = RedPointState.Simple;
                    return;
                }
            }
        }
        for (int i = alchemyModellist.Count - 1; i > -1; i--)
        {
            if (StoveLV >= alchemyModellist[i].BlastFurnaceLV)
@@ -857,6 +891,43 @@
    }
    private bool CheckIsHavePetOrMount(AlchemyConfig alchemyConfig)
    {
        if (alchemyConfig == null) return true;
        Dictionary<int, List<int>> specDrugDict = null;
        IsSpecMatEnough(alchemyConfig,out specDrugDict);
        foreach(var key in specDrugDict.Keys)
        {
            List<int> idlist = specDrugDict[key];
            for (int i = 0; i < idlist.Count; i++)
            {
                if (tipsModel.unlockPetDict.ContainsKey(idlist[i]))
                {
                    PetInfoConfig petInfo = tipsModel.unlockPetDict[idlist[i]];
                    var petmodel = ModelCenter.Instance.GetModel<PlayerPetDatas>();
                    if (!petmodel._DicPetBack.ContainsKey(petInfo.ID))
                    {
                        return false;
                    }
                }
                if (tipsModel.unlockMountDict.ContainsKey(idlist[i]))
                {
                    HorseConfig horseConfig = tipsModel.unlockMountDict[idlist[i]];
                    var mountModel = ModelCenter.Instance.GetModel<PlayerMountDatas>();
                    if (!mountModel._DicHorse.ContainsKey(horseConfig.HorseID))
                    {
                        return false;
                    }
                }
            }
        }
        return true;
    }
    public bool IsSpecMatEnough(AlchemyConfig alchemyConfig)
    {
        if (alchemyConfig == null) return false;
@@ -876,6 +947,28 @@
        return isEnough;
    }
    public bool IsSpecMatEnough(AlchemyConfig alchemyConfig,out Dictionary<int,List<int>> specDurgDict)
    {
        specDurgDict = new Dictionary<int, List<int>>();
        if (alchemyConfig == null) return false;
        if (alchemyConfig.SpecialItem == null || alchemyConfig.SpecialItem.Length < 1) return false;
        bool isEnough = false;
        for (int i = 0; i < alchemyConfig.SpecialItem.Length; i++)
        {
            AlchemySpecConfig specConfig = Config.Instance.Get<AlchemySpecConfig>(alchemyConfig.SpecialItem[i]);
            int haveCnt = playerPack.GetItemCountByID(PackType.rptItem, specConfig.SpecialMaterialD);
            if (haveCnt >= specConfig.SpecialMateriaNUM)
            {
                isEnough = true;
                List<int> specIdlist = GetPreviewSpecMakeDruglist(specConfig).Keys.ToList();
                specDurgDict.Add(specConfig.SpecialMaterialD,specIdlist);
            }
        }
        return isEnough;
    }
    public bool IsNormalMatEnough(AlchemyConfig alchemyConfig)
    {
        if (alchemyConfig == null) return false;
System/BlastFurnace/GetEquipPathTips.cs
@@ -492,6 +492,16 @@
                gemAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    gemAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum += 1;
            gemAttr.SetActive(true);
            gemTitleText.text = Language.Get("EquipWin_GemPropObj_Text_1");
System/ClientVersion/VersionConfig.cs
@@ -98,24 +98,31 @@
    public void Read(string _data)
    {
        var dataStrings = _data.Split('\t');
        m_AppId = dataStrings[2];
        m_VersionAuthority = (VersionAuthority)int.Parse(dataStrings[3]);
        m_Version = dataStrings[4];
        m_ClientPackageFlag = dataStrings[5];
        m_Branch = int.Parse(dataStrings[6]);
        m_AssetAccess = (InstalledAsset)int.Parse(dataStrings[7]);
        m_PartAssetPackage = int.Parse(dataStrings[8]) == 1;
        m_ProductName = dataStrings[9];
        m_BundleIdentifier = dataStrings[10];
        m_KeystoreFileName = dataStrings[11];
        m_KeystorePassword = dataStrings[12];
        m_KeystoreAlias = dataStrings[13];
        m_KeystoreAliasPassword = dataStrings[14];
        m_AppleDeveloperTeamID = dataStrings[15];
        m_DebugVersion = int.Parse(dataStrings[16]) == 1;
        m_IsBanShu = int.Parse(dataStrings[17]) == 1;
        m_LogoPosition = dataStrings[18].Vector3Parse();
        m_BanHao = dataStrings[19];
        try
        {
            m_AppId = dataStrings[2];
            m_VersionAuthority = (VersionAuthority)int.Parse(dataStrings[3]);
            m_Version = dataStrings[4];
            m_ClientPackageFlag = dataStrings[5];
            m_Branch = int.Parse(dataStrings[6]);
            m_AssetAccess = (InstalledAsset)int.Parse(dataStrings[7]);
            m_PartAssetPackage = int.Parse(dataStrings[8]) == 1;
            m_ProductName = dataStrings[9];
            m_BundleIdentifier = dataStrings[10];
            m_KeystoreFileName = dataStrings[11];
            m_KeystorePassword = dataStrings[12];
            m_KeystoreAlias = dataStrings[13];
            m_KeystoreAliasPassword = dataStrings[14];
            m_AppleDeveloperTeamID = dataStrings[15];
            m_DebugVersion = int.Parse(dataStrings[16]) == 1;
            m_IsBanShu = int.Parse(dataStrings[17]) == 1;
            m_LogoPosition = dataStrings[18].Vector3Parse();
            m_BanHao = dataStrings[19];
        }
        catch (System.Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
#if UNITY_EDITOR
System/ClientVersion/VersionUtility.cs
@@ -115,7 +115,7 @@
    {
        if (IsMaoErGame())
        {
            return versionInfo.downAsset == 0 && versionInfo.VersionCount > 0;
            return versionInfo != null && versionInfo.downAsset == 0 && versionInfo.VersionCount > 0;
        }
        else
        {
@@ -125,7 +125,7 @@
    public bool NeedNormalUpdate()
    {
        return versionInfo.downAsset == 1 && versionInfo.VersionCount > 0;
        return versionInfo != null && versionInfo.downAsset == 1 && versionInfo.VersionCount > 0;
    }
    public string GetApkLocalUrl()
@@ -249,8 +249,6 @@
    private void OnMaoErVersionCheckResult(bool ok, string result)
    {
        Debug.LogFormat("猫耳强更请求返回结果 result:{0}:{1}", ok, result);
        if (ok)
        {
            try
@@ -281,6 +279,49 @@
        }
    }
    public bool InIosAuditTime()
    {
        DateTime dateTime;
        try
        {
            var textAsset = Resources.Load<UnityEngine.TextAsset>("Config/AuditTime");
            var content = string.Empty;
            if (textAsset != null)
            {
                content = textAsset.text;
                if (DateTime.TryParse(content, out dateTime))
                {
                    return DateTime.Now < dateTime;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        catch (System.Exception ex)
        {
            return false;
        }
    }
    public bool NeedDownAsset()
    {
        if (versionInfo != null && versionInfo.downAsset == 1 && VersionConfig.Get().assetAccess != InstalledAsset.IngoreDownLoad)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public class VersionInfo
    {
        public int ForceCount;
System/Dogz/DogzModel.cs
@@ -229,6 +229,22 @@
            }
        }
        public void MakeUseAddAssistNum()
        {
            if (IsAddMaxAssist())
            {
                SysNotifyMgr.Instance.ShowTip("DogzNumLimit");
                return;
            }
            var _itemConfig = Config.Instance.Get<ItemConfig>(AddAssistItem);
            ConfirmCancel.ShowItemConfirm(Language.Get("DogzFunc102", _itemConfig.ItemName,GetAssistItemCnt()),
             AddAssistItem, GetAssistItemCnt(), () =>
             {
                 SendBuyAssistCnt();
             });
        }
        public bool IsAddMaxAssist()
        {
            if (curSumAssistNum < DogzAssistMaxCnt)
@@ -271,6 +287,21 @@
            return false;
        }
        public bool CheckIsPutOn(int id)
        {
            ItemConfig config = Config.Instance.Get<ItemConfig>(id);
            if (config == null) return false;
            int index = config.EquipPlace % 100 - 1;
            int color = GetDogzEquipLimitByIndex(presentSelectDogz, index);
            if (config.ItemColor >= color)
            {
                return true;
            }
            SysNotifyMgr.Instance.ShowTip("DogzQualityAsk", GetDogzPartNameByIndex(index), GetItemColorName(color));
            return false;
        }
        #region 协议
        public int addAssistCnt { get; private set; } //额外购买的助战数
@@ -285,6 +316,7 @@
            }
            UpdateDogzAssistRed();
            UpdateDogzEquipPlaceRed();
            UpdateAssistNumRed();
        }
        public event Action UpdateAssistDogzEvent;
@@ -575,6 +607,11 @@
        private void SendPutOffEquip(int equipPlace)
        {
            if(playerPack.GetReaminGridCount(PackType.rptDogzItem) < 1)
            {
                SysNotifyMgr.Instance.ShowTip("DogzBagFull");
                return;
            }
            GetDogzEquipPlaceStates(presentSelectDogz);
            CA5C1_tagCMDogzUnEquipItem dogzPutOff = new CA5C1_tagCMDogzUnEquipItem();
            dogzPutOff.DogzID = (byte)presentSelectDogz;
@@ -639,6 +676,23 @@
            }
            dogzItemList.Sort(CompareByDogzItemPack);
            return dogzItemList;
        }
        public int GetDogzPackMatNum()
        {
            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzItem);
            if (singlePack == null) return 0;
            int num = 0;
            Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
            foreach (var value in pairs.Values)
            {
               if(value.chinItemModel.EquipPlace == 0)
                {
                    num += 1;
                }
            }
            return num;
        }
        public bool IsReachSelectCondi(int itemId)
@@ -708,6 +762,12 @@
            y = end.equipScore;
            if (x.CompareTo(y) != 0) return -x.CompareTo(y);
            List<int> strenglist = start.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
            x = strenglist != null ? strenglist[0] : 0;
            strenglist = end.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
            y = strenglist != null ? strenglist[0] : 0;
            if (x.CompareTo(y) != 0) return -x.CompareTo(y);
            return 0;
        }
        #endregion
System/Dogz/DogzPackCell.cs
@@ -1,30 +1,41 @@
using Snxxz.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace EnhancedUI.EnhancedScroller
{
    public class DogzPackCell : ScrollerUI
    {
        [SerializeField] List<DogzItemCell> dogzItemlist;
        DogzPackModel m_Model;
        DogzPackModel model
        {
            get
            {
                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DogzPackModel>());
            }
        }
        public override void Refresh(CellView cell)
        {
            var _line = cell.index;
            for (int i = 0; i < 4; i++)
            {
                var _index = _line * 4 + i;
                dogzItemlist[i].Display(_index);
            }
        }
    }
}
using Snxxz.UI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace EnhancedUI.EnhancedScroller
{
    public class DogzPackCell : ScrollerUI
    {
        [SerializeField] List<DogzItemCell> dogzItemlist;
        DogzModel m_Model;
        DogzModel model
        {
            get
            {
                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DogzModel>());
            }
        }
        public override void Refresh(CellView cell)
        {
            var _line = cell.index;
            for (int i = 0; i < 4; i++)
            {
                var _index = _line * 4 + i;
                dogzItemlist[i].gameObject.SetActive(true);
                if (model.SelectDogzItemQuality == 0
                    && model.SelectDogzItemStart == 0)
                {
                    int hideIndex = model.DogzPackGridCnt - model.GetDogzPackMatNum();
                    if (_index >= hideIndex)
                    {
                        dogzItemlist[i].gameObject.SetActive(false);
                    }
                }
                dogzItemlist[i].Display(_index);
            }
        }
    }
}
System/Dogz/DogzPackWin.cs
@@ -208,14 +208,7 @@
            }
            else
            {
                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("DogzFunc101"), (bool isOk)=>
                {
                    if(isOk)
                    {
                    }
                    return;
                });
                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("DogzFunc101"));
            }
        }
@@ -274,12 +267,28 @@
                    }
                    else
                    {
                        int putStrenLv = 0;
                        if (itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus) != null)
                        {
                            putStrenLv = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus)[0];
                        }
                        int selectStrenLv = 0;
                        if (selectModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus) != null)
                        {
                            selectStrenLv = selectModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus)[0];
                        }
                        if (itemModel.chinItemModel.ItemColor < selectModel.chinItemModel.ItemColor
                           || (itemModel.chinItemModel.StarLevel < selectModel.chinItemModel.StarLevel
                           && itemModel.chinItemModel.ItemColor == selectModel.chinItemModel.ItemColor)
                            || (itemModel.equipScore < selectModel.equipScore 
                            && itemModel.chinItemModel.ItemColor == selectModel.chinItemModel.ItemColor
                            && itemModel.chinItemModel.StarLevel == selectModel.chinItemModel.StarLevel))
                            && itemModel.chinItemModel.StarLevel == selectModel.chinItemModel.StarLevel)
                            ||(itemModel.equipScore == selectModel.equipScore
                            && itemModel.chinItemModel.ItemColor == selectModel.chinItemModel.ItemColor
                            && itemModel.chinItemModel.StarLevel == selectModel.chinItemModel.StarLevel
                            && putStrenLv < selectStrenLv))
                        {
                            indexlist.Add(dogzModel.selectEquipPlacelist[0].itemInfo.ItemPlace);
                        }
@@ -290,6 +299,19 @@
            {
                dogzModel.SendPutOnEquip(indexlist);
            }
            else
            {
                if(dogzModel.GetDogzEquips(dogzModel.presentSelectDogz) != null
                    && dogzModel.GetDogzEquips(dogzModel.presentSelectDogz).Count == 5)
                {
                    SysNotifyMgr.Instance.ShowTip("DogzOneKeyBest");
                }
                else
                {
                    SysNotifyMgr.Instance.ShowTip("DogzOneKeyNone");
                }
            }
        }
        private void ClickStarSelect()
System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs
@@ -116,7 +116,7 @@
            if (_isUnLocked)
            {
                var config = Config.Instance.Get<DogzDungeonConfig>(bossId);
                var refreshTime = DateTime.Now;
                var refreshTime = TimeUtility.ServerNow;
                switch (config.MonsterType)
                {
                    case 1:
@@ -135,9 +135,9 @@
                        break;
                }
                if (refreshTime > DateTime.Now)
                if (refreshTime > TimeUtility.ServerNow)
                {
                    m_CoolDown.Begin(refreshTime, OnBossCoolDownCompleted);
                    m_CoolDown.Begin((int)(refreshTime - TimeUtility.ServerNow).TotalSeconds, OnBossCoolDownCompleted);
                }
                else
                {
System/DogzDungeon/DogzDungeonModel.cs
@@ -396,7 +396,7 @@
        public void UpdateBoxRefreshTime(int _seconds)
        {
            refreshTime = DateTime.Now + new TimeSpan(_seconds * TimeSpan.TicksPerSecond);
            refreshTime = TimeUtility.ServerNow + new TimeSpan(_seconds * TimeSpan.TicksPerSecond);
            if (refreshTimeEvent != null)
            {
                refreshTimeEvent();
@@ -428,7 +428,7 @@
        public void UpdateEliteRefreshTime(int _seconds)
        {
            refreshTime = DateTime.Now + new TimeSpan(_seconds * TimeSpan.TicksPerSecond);
            refreshTime = TimeUtility.ServerNow + new TimeSpan(_seconds * TimeSpan.TicksPerSecond);
            if (refreshTimeEvent != null)
            {
                refreshTimeEvent();
System/Dungeon/DungeonAncientTargetWin.cs
@@ -1,57 +1,55 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class DungeonAncientTargetWin : Window
    {
        [SerializeField] Text m_DungeonName;
        [SerializeField] DungeonTargetBehaviour m_DungeonTargetBehaviour;
        DungeonModel m_Model;
        DungeonModel model
        {
            get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>()); }
        }
        protected override void AddListeners()
        {
        }
        protected override void BindController()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            //model.updateMissionEvent -= UpdateTargets;
        }
        protected override void OnPreOpen()
        {
            //model.updateMissionEvent += UpdateTargets;
            var line = PlayerDatas.Instance.baseData.FBID + 1;
            m_DungeonName.text = StringUtility.Contact(Language.Get("AncientBattle"), "(", Language.Get("FBLine", line), ")");
            m_DungeonTargetBehaviour.Init(31160);
            //UpdateTargets();
        }
        private void UpdateTargets()
        {
            //var _help = model.mission;
            //m_DungeonTargets[0].text = _help.topName;
            //m_DungeonTargets[1].text = UIHelper.ReplaceLargeNum(_help.topScore);
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class DungeonAncientTargetWin : Window
    {
        [SerializeField] List<Text> m_DungeonTargets;
        [SerializeField] DungeonTargetBehaviour m_DungeonTargetBehaviour;
        DungeonModel m_Model;
        DungeonModel model
        {
            get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>()); }
        }
        protected override void AddListeners()
        {
        }
        protected override void BindController()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            model.updateMissionEvent -= UpdateTargets;
        }
        protected override void OnPreOpen()
        {
            model.updateMissionEvent += UpdateTargets;
            m_DungeonTargetBehaviour.Init(31160);
            UpdateTargets();
        }
        private void UpdateTargets()
        {
            var _help = model.mission;
            m_DungeonTargets[0].text = _help.topName;
            m_DungeonTargets[1].text = UIHelper.ReplaceLargeNum(_help.topScore);
        }
    }
}
System/Dungeon/DungeonBossBriefInfoBehaviour.cs
@@ -57,7 +57,7 @@
            {
                if (!bossInfo.IsBossAlive())
                {
                    m_RebornTime.Begin(bossInfo.refreshTime);
                    m_RebornTime.Begin((int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds);
                }
                else
                {
@@ -92,7 +92,7 @@
                    }
                }
                var rebornAtOnce = bossInfo.refreshTime < DateTime.Now && !isAlive;
                var rebornAtOnce = bossInfo.refreshTime < TimeUtility.ServerNow && !isAlive;
                if (rebornAtOnce)
                {
System/Dungeon/DungeonFightWin.cs
@@ -27,7 +27,6 @@
        [SerializeField] RectTransform m_ContainerResPoint;
        [SerializeField] RectTransform m_ContainerAncient;
        [SerializeField] Button m_AncientBtn;
        [SerializeField] Button m_AncientKing;
        [SerializeField] DungeonItemCollect m_ItemCollect;
        [SerializeField] DungeonGuardSkyBehaviour m_GuardSky;
        [SerializeField] DungeonBossBriefInfoContainer m_BossInfosContainer;
@@ -56,7 +55,6 @@
        {
            m_ExitDungeon.AddListener(ExitDungeon);
            m_AncientBtn.onClick.AddListener(OnAncientBtn);
            m_AncientKing.onClick.AddListener(AncientKing);
        }
        protected override void OnPreOpen()
@@ -319,18 +317,6 @@
            else
            {
                WindowCenter.Instance.Open<DungeonAncientAchieveWin>();
            }
        }
        private void AncientKing()
        {
            if (WindowCenter.Instance.IsOpen<DungeonAncientKingWin>())
            {
                WindowCenter.Instance.CloseImmediately<DungeonAncientKingWin>();
            }
            else
            {
                WindowCenter.Instance.Open<DungeonAncientKingWin>();
            }
        }
System/Dungeon/DungeonInspireWin.cs
@@ -170,17 +170,35 @@
                        money = PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold;
                        break;
                }
                if (money < model.GetDungeonInspireCost(fairyInspireConfig)
                    && !InGuiding())
                var cost = model.GetDungeonInspireCost(fairyInspireConfig);
                if (money < cost && !InGuiding())
                {
                    WindowCenter.Instance.Open<RechargeTipWin>();
                }
                else
                {
                    CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
                    pak.ActionType = 0;
                    pak.ActionInfo = (uint)fairyInspireConfig.InspireType;
                    GameNetSystem.Instance.SendInfo(pak);
                    bool mix = fairyInspireConfig.InspireType == 5 && PlayerDatas.Instance.baseData.GoldPaper < cost
                        && PlayerDatas.Instance.baseData.GoldPaper > 0;
                    var fairyCost = fairyInspireConfig.InspireType == 5 ? cost - PlayerDatas.Instance.baseData.GoldPaper : cost;
                    if (fairyCost > 0 && (!model.inspireRemindEffective || !model.inspireNoRemind))
                    {
                        ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"),
                            mix ? Language.Get("InspireRemind1", fairyCost, PlayerDatas.Instance.baseData.GoldPaper)
                            : Language.Get("InspireRemind2", fairyCost),
                            Language.Get("InspireNoMention"), (bool isOk, bool toggle) =>
                          {
                              if (isOk)
                              {
                                  SendInspire(fairyInspireConfig.InspireType);
                              }
                              model.inspireNoRemind = toggle;
                              model.inspireRemindEffective = isOk;
                          }, model.inspireNoRemind);
                    }
                    else
                    {
                        SendInspire(fairyInspireConfig.InspireType);
                    }
                }
            }
            else if (coinInspire)
@@ -192,14 +210,19 @@
                }
                else
                {
                    CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
                    pak.ActionType = 0;
                    pak.ActionInfo = (uint)coinInspireConfig.InspireType;
                    GameNetSystem.Instance.SendInfo(pak);
                    SendInspire(coinInspireConfig.InspireType);
                }
            }
        }
        void SendInspire(int inspireType)
        {
            CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
            pak.ActionType = 0;
            pak.ActionInfo = (uint)inspireType;
            GameNetSystem.Instance.SendInfo(pak);
        }
        private void Cancel()
        {
            CloseImmediately();
System/Dungeon/DungeonModel.cs
@@ -97,6 +97,9 @@
        public int[] guardSkyBuffIds { get; private set; }
        public int[] guardSkyGuardNpcs { get; private set; }
        public bool inspireNoRemind { get; set; }
        public bool inspireRemindEffective { get; set; }
        public int cacheGradeMap = 0;
        public bool gradeTween = true;
@@ -595,6 +598,8 @@
            dungeonCoolDowns.Clear();
            m_Mission = default(DungeonMissionData);
            dungeonInspireCounts.Clear();
            inspireRemindEffective = false;
            inspireNoRemind = false;
        }
        public void UpdateRecords(HA320_tagMCPlayerFBInfoData.tagMCFBInfo[] _serverInfos)
System/Dungeon/DungeonNuwaVictoryWin.cs
@@ -153,7 +153,10 @@
            Serveritem.Clear();
               var merged = false;
            var serveritems = dungeonModel.dungeonResult.itemInfo;
            if (serveritems== null)
            {
                return;
            }
            for (int i = 0; i < serveritems.Length; i++)
            {
                Serveritem.Add(serveritems[i]);
System/Dungeon/TrialDungeonModel.cs
@@ -22,12 +22,19 @@
        bool serverInited = false;
        public const int TRIALEXCHANGE_GUIDE = 91;
        int m_TrialExchangeRemindLevel = 250;
        public int trialExchangeRemindLevel
        {
            get { return m_TrialExchangeRemindLevel; }
        }
        public override void Init()
        {
            ParseConfig();
            packModel.RefreshItemCountAct += RefreshItemCountAct;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            dungeonModel.dungeonRecordChangeEvent += DungeonRecordChangeEvent;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
        }
        private void DungeonRecordChangeEvent(int _dungeonId)
@@ -105,10 +112,27 @@
                    dict.Add(trialRewards[i].grade, items);
                }
            }
            funcConfig = Config.Instance.Get<FuncConfigConfig>("MunekadoRedPoint");
            if (funcConfig != null)
            {
                m_TrialExchangeRemindLevel = int.Parse(funcConfig.Numerical1);
            }
        }
        public override void UnInit()
        {
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
        }
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
        {
            if (refreshType == PlayerDataRefresh.LV ||
                refreshType == PlayerDataRefresh.LV2 ||
                refreshType == PlayerDataRefresh.LVEx)
            {
                UpdateRedpoint();
            }
        }
        private void RefreshItemCountAct(PackType packType, int arg2, int itemId)
@@ -277,6 +301,7 @@
                var dict = singlepack.GetPackModelIndexDict();
                if (dict != null)
                {
                    var badCompare = 1;
                    foreach (var itemModel in dict.Values)
                    {
                        if (itemModel.chinItemModel.EquipPlace == config.EquipPlace
@@ -285,11 +310,19 @@
                            && !ModelCenter.Instance.GetModel<PackModelInterface>().IsOverdue(itemModel.itemInfo.ItemGUID, itemModel.itemId, itemModel.useDataDict))
                        {
                            var compare = EquipCompare(itemModel, config);
                            if (compare == -1 || compare == 0)
                            if (compare == 0)
                            {
                                badCompare = compare;
                            }
                            if (compare == -1)
                            {
                                return compare;
                            }
                        }
                    }
                    if (badCompare == 0)
                    {
                        return badCompare;
                    }
                }
            }
@@ -350,7 +383,8 @@
        void UpdateRedpoint()
        {
            dailyQuestModel.trialExchangeRedpoint.state = RedPointState.None;
            if (!FuncOpen.Instance.IsFuncOpen(88))
            if (!FuncOpen.Instance.IsFuncOpen(88) ||
                PlayerDatas.Instance.baseData.LV >= trialExchangeRemindLevel)
            {
                return;
            }
@@ -435,6 +469,10 @@
        public bool IsAnySatisfyExchangeBetter(int _itemId)
        {
            if (PlayerDatas.Instance.baseData.LV >= trialExchangeRemindLevel)
            {
                return false;
            }
            if (!trialTokens.Contains(_itemId))
            {
                return false;
System/Dungeon/TrialExchangeBehaviour.cs
@@ -120,7 +120,8 @@
            m_Down.gameObject.SetActive(equipCompare == -1);
            var exchangeItemConfig = Config.Instance.Get<ItemConfig>(model.GetExchangeItemByJob(config));
            m_Redpoint.gameObject.SetActive(count >= config.tokenCount && (equipBetter || exchangeItemConfig.EquipPlace == 0));
            m_Redpoint.gameObject.SetActive(count >= config.tokenCount && (equipBetter || exchangeItemConfig.EquipPlace == 0)
                && PlayerDatas.Instance.baseData.LV < model.trialExchangeRemindLevel);
        }
    }
}
System/FairylandCeremony/CeremonyCoolTime.cs
New file
@@ -0,0 +1,35 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class CeremonyCoolTime : MonoBehaviour
    {
        [SerializeField] Text m_Time;
        private void OnEnable()
        {
            GlobalTimeEvent.Instance.secondEvent += RefreshSecond;
            RefreshSecond();
        }
        private void OnDisable()
        {
            GlobalTimeEvent.Instance.secondEvent -= RefreshSecond;
        }
        private void RefreshSecond()
        {
            int seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.FairyCeremony);
            if (seconds > 0)
            {
                m_Time.text = StringUtility.Contact("<color=#8DDC11FF>", TimeUtility.SecondsToHMS(seconds), "</color>");
            }
            else
            {
                m_Time.text = UIHelper.GetTextColorByItemColor(TextColType.Red, Language.Get("XMZZ110"));
            }
        }
    }
}
System/FairylandCeremony/CeremonyCoolTime.cs.meta
File was renamed from Fight/Stage/PaintMapLine.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 9202015b1077a91488a691347bdeafae
timeCreated: 1508832157
guid: b611da4d8aa2ca943b69485ca6f3d2a6
timeCreated: 1538223260
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/FairylandCeremony/CeremonyFirepartyWin.cs
@@ -9,6 +9,7 @@
    public class CeremonyFirepartyWin : Window
    {
        [SerializeField] Button buyBtn;
        [SerializeField] Text buyPriceText;
        [SerializeField] Text remainTimeText;
        [SerializeField] CommonItemBaisc fireItem;
        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
@@ -17,6 +18,8 @@
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        StoreConfig storeConfig;
        protected override void BindController()
        {
@@ -54,6 +57,7 @@
            storeConfig = ceremonyModel.GetFireIdByLv();
            if (storeConfig == null) return;
            buyPriceText.text = storeConfig.MoneyNumber.ToString();
            ItemCellModel fireModel = new ItemCellModel(storeConfig.ItemID,true,(ulong)storeConfig.ItemCnt,storeConfig.IsBind);
            fireItem.Init(fireModel);
            fireItem.cellBtn.AddListener(() =>
@@ -108,15 +112,8 @@
                SysNotifyMgr.Instance.ShowTip("BagFull");
                return;
            }
            if(ceremonyModel.CheckIsBuyFireCondi())
            {
                ModelCenter.Instance.GetModel<StoreModel>().SendBuyShopItem(storeConfig,1);
            }
            else
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
            }
            storeModel.OnClickShopCell(storeConfig);
        }
    }
}
System/FairylandCeremony/FairylandCeremonyModel.cs
@@ -326,10 +326,10 @@
            return null;
        }
        public bool CheckIsBuyFireCondi(int buyNum = 1)
        public bool CheckIsBuyFireCondi(StoreConfig storeConfig,int buyNum = 1)
        {
            ulong price =(ulong)(80 * buyNum);
            if(UIHelper.GetMoneyCnt(1) >= price)
            ulong price =(ulong)(storeConfig.MoneyNumber * buyNum);
            if(UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= price)
            {
                return true;
            }
System/FairylandCeremony/FairylandCeremonyWin.cs
@@ -15,6 +15,8 @@
        [SerializeField] Button rightBtn;
        [SerializeField] Button closeBtn;
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        protected override void BindController()
        {
@@ -38,6 +40,17 @@
        protected override void OnActived()
        {
            base.OnActived();
            if(!WindowJumpMgr.Instance.IsJumpState && functionOrder == 0)
            {
                if(ceremonyModel.rechargeRedp.state == RedPointState.Simple)
                {
                    functionOrder = rechargeFunc.order;
                }
                else if(ceremonyModel.peopleRedp.state == RedPointState.Simple)
                {
                    functionOrder = peopleToHiFunc.order;
                }
            }
            funcBtnGroup.TriggerByOrder(functionOrder);
        }
System/FairylandCeremony/ToHiTaskCell.cs
@@ -29,6 +29,7 @@
        public void Init(AllPeoplePartyConfig taskConfig)
        {
            activeNameText.gameObject.SetActive(false);
            this.taskConfig = taskConfig;
            activeIcon.SetSprite(taskConfig.IconKey);
            SetTaskState(ceremonyModel.GetPeopleTaskTimesById(taskConfig.ID),taskConfig.TotalTimes);
System/FindPrecious/DemonJarBossRebornCoolDown.cs
@@ -48,8 +48,8 @@
                if (!bossInfo.IsBossAlive())
                {
                    m_Timer.Begin(bossInfo.refreshTime);
                    m_Timer.timeShow.color = demonJarModel.GetSurplusTimes() > 0 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
                    m_Timer.Begin((int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds);
                    m_Timer.timeShow.color = UIHelper.GetUIColor(demonJarModel.GetSurplusTimes() > 0 ? TextColType.Green : TextColType.Red);
                }
            }
            else
@@ -60,7 +60,7 @@
        private void OnDungeonRecodChange(int _dataMapId)
        {
            m_Timer.timeShow.color = demonJarModel.GetSurplusTimes() > 0 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
            m_Timer.timeShow.color = UIHelper.GetUIColor(demonJarModel.GetSurplusTimes() > 0 ? TextColType.Green : TextColType.Red);
        }
    }
System/FindPrecious/DemonJarWin.cs
@@ -310,7 +310,7 @@
                if (dungeonModel.TryGetCountRemainTime(DemonJarModel.DEMONJAR_MAPID, out endTime))
                {
                    m_CountRemainTime.gameObject.SetActive(true);
                    m_CountRemainTime.Begin(endTime);
                    m_CountRemainTime.Begin((int)(endTime - TimeUtility.ServerNow).TotalSeconds);
                }
                else
                {
@@ -383,15 +383,14 @@
            m_BossIntroduce.Display(_bossId, false);
            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
            var npcConfig = Config.Instance.Get<NPCConfig>(_bossId);
            m_RewardDescription.text = Language.Get(npcConfig.NPCLV >= GeneralConfig.Instance.demonJarLevelLimit ? "FindPrecious_13" : "FindPrecious_18");
            DemonJarBossData bossData;
            model.TryGetBossData(_bossId, out bossData);
            var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(bossData.id);
            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
            var demonJarConfig = Config.Instance.Get<DemonJarConfig>(model.selectedBoss);
            m_RewardDescription.text = Language.Get(demonJarConfig.RewardDescription);
            var doubleShowable = demonJarConfig.CanEnterTimes == 0;
            m_ContainerDouble.gameObject.SetActive(doubleShowable);
            if (doubleShowable)
System/FindPrecious/FindPreciousBossBriefInfoBehaviour.cs
@@ -51,7 +51,7 @@
                FindPreciousModel.BossInfo bossInfo = null;
                if (findPreciousModel.TryGetBossInfo(bossId, out bossInfo))
                {
                    return !findPreciousModel.IsBossAlive(bossId) && DateTime.Now > bossInfo.refreshTime;
                    return !findPreciousModel.IsBossAlive(bossId) && TimeUtility.ServerNow > bossInfo.refreshTime;
                }
                else
                {
@@ -142,13 +142,13 @@
                FindPreciousModel.BossInfo bossInfo;
                if (findPreciousModel.TryGetBossInfo(bossId, out bossInfo) && !bossInfo.IsBossAlive())
                {
                    if (DateTime.Now > bossInfo.refreshTime)
                    if (TimeUtility.ServerNow > bossInfo.refreshTime)
                    {
                        m_CoolDown.gameObject.SetActive(false);
                    }
                    else
                    {
                        m_CoolDown.Begin(bossInfo.refreshTime, OnBossCoolDownCompleted);
                        m_CoolDown.Begin((int)(bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds, OnBossCoolDownCompleted);
                    }
                }
                else
System/FindPrecious/FindPreciousModel.cs
@@ -189,7 +189,7 @@
                        }
                        else
                        {
                            if ((bossInfos[bossId].refreshTime - DateTime.Now).TotalSeconds < PREPOSE_SECONDS)
                            if ((bossInfos[bossId].refreshTime - TimeUtility.ServerNow).TotalSeconds < PREPOSE_SECONDS)
                            {
                                AddOneBossRebornNotify(bossId);
                            }
@@ -484,7 +484,7 @@
                }
                else
                {
                    if (IsBossAlive(bossId) || (bossInfos[bossId].refreshTime - DateTime.Now).TotalSeconds < PREPOSE_SECONDS)
                    if (IsBossAlive(bossId) || (bossInfos[bossId].refreshTime - TimeUtility.ServerNow).TotalSeconds < PREPOSE_SECONDS)
                    {
                        AddOneBossRebornNotify(bossId);
                    }
@@ -526,7 +526,7 @@
                    }
                }
                refreshTime = DateTime.Now + new TimeSpan(_bossInfo.RefreshSecond * TimeSpan.TicksPerSecond);
                refreshTime = TimeUtility.ServerNow + new TimeSpan(_bossInfo.RefreshSecond * TimeSpan.TicksPerSecond);
            }
            public bool IsBossAlive()
System/FindPrecious/FindPreciousTimer.cs
@@ -51,7 +51,7 @@
                    for (int i = bossIds.Count - 1; i >= 0; i--)
                    {
                        var clock = clocks[bossIds[i]];
                        if ((clock.rebornTime - DateTime.Now).TotalSeconds < FindPreciousModel.PREPOSE_SECONDS)
                        if ((clock.rebornTime - TimeUtility.ServerNow).TotalSeconds < FindPreciousModel.PREPOSE_SECONDS)
                        {
                            clocks.Remove(bossIds[i]);
                            bossIds.RemoveAt(i);
@@ -68,7 +68,7 @@
        private bool IsValidClockSetting(DateTime _rebornTime)
        {
            return (_rebornTime - DateTime.Now).TotalSeconds >= FindPreciousModel.PREPOSE_SECONDS;
            return (_rebornTime - TimeUtility.ServerNow).TotalSeconds >= FindPreciousModel.PREPOSE_SECONDS;
        }
        public class BossRebornClock
System/FriendSystem/MailAllModel.cs
@@ -63,20 +63,28 @@
    }
    AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
    bool isLogin = true;
    public MailAllModel()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInit;
        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
    }
    private void BeforePlayerDataInit()
    {
        isLogin = true;
        funcType = MailFuncType.Mail;
        mailModelDict.Clear();
        timeOrderMailInfo.Clear();
        mailTitleStr = "";
        mailContentstr = "";
        mailSendPersonStr = "";
    }
    private void OnPlayerLoginOk()
    {
        isLogin = false;
    }
    public MailFuncType funcType = MailFuncType.Mail;
@@ -171,6 +179,16 @@
                    {
                        exchangeModel.SetAwardExchangeModel(info.Items);
                    }
                    if(!isLogin)
                    {
                       if (info.Count > 0 || info.Gold > 0 || info.GoldPaper > 0
                          || info.Silver > 0)
                        {
                            SoundPlayer.Instance.PlayUIAudio(740);
                        }
                    }
                }
            }
            addMailCnt = mailModelDict.Count - preMailCnt;
System/FriendSystem/MailPanel.cs
@@ -94,6 +94,8 @@
        get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
    }
    DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
    private void Awake()
    {
        Init();
@@ -327,6 +329,7 @@
                ItemCell itemCell = _reciveItemParent[giftCount].transform.Find("ItemCell").GetComponent<ItemCell>();
                if (info.Count > 0 || info.Gold > 0 || info.GoldPaper > 0 || info.Silver > 0)
                {
                    _deleteBtn.interactable = false;
                    _reciveItemParent[giftCount].SetActive(true);
                    _goldBox.SetActive(true);
                    _drillBox.SetActive(true);
@@ -625,19 +628,30 @@
        int i = 0;
        int getBagItemCount = 0;
        int getRuneCount = 0;
        int getDogzCount = 0;
        ItemConfig tagChinItem = null;
        for (i = 0; i < mailInfo.Count; i++)
        {
            tagChinItem = Config.Instance.Get<ItemConfig>((int)mailInfo.Items[i].ItemID);
            if (tagChinItem != null)
            {
                if (tagChinItem.Type == RuneModel.RUNE_TYPE || tagChinItem.Type == RuneModel.RUNE_CREAMTYPE)
                switch(tagChinItem.Type)
                {
                    getRuneCount += 1;
                }
                else
                {
                    getBagItemCount += 1;
                    case RuneModel.RUNE_TYPE:
                    case  RuneModel.RUNE_CREAMTYPE:
                         getRuneCount += 1;
                        break;
                    case (int)ItemType.DogzStrengthMat:
                    case (int)ItemType.DogzEquipType1:
                    case (int)ItemType.DogzEquipType2:
                    case (int)ItemType.DogzEquipType3:
                    case (int)ItemType.DogzEquipType4:
                    case (int)ItemType.DogzEquipType5:
                        getDogzCount += 1;
                        break;
                    default:
                        getBagItemCount += 1;
                        break;
                }
            }
        }
@@ -653,6 +667,11 @@
            SysNotifyMgr.Instance.ShowTip("RuneBagFull");
            return;
        }
        else if(getDogzCount > playerPack.GetReaminGridCount(PackType.rptDogzItem))
        {
            SysNotifyMgr.Instance.ShowTip("DogzBagFull");
            return;
        }
        CA53B_tagCMRequestCompensation askRecive = new CA53B_tagCMRequestCompensation();
        askRecive.GUID = id;
System/KnapSack/Logic/BoxGetItemWin.cs
@@ -45,7 +45,7 @@
        FairylandCeremonyModel ceremonyModel { get { return ModelCenter.Instance.GetModel<FairylandCeremonyModel>(); } }
        [SerializeField] float scaleTime = 0.3f;
        Vector3 startPos = Vector3.zero;
        protected override void BindController()
        {
@@ -58,12 +58,18 @@
        protected override void OnPreOpen()
        {
            startPos = getItemParent.anchoredPosition3D;
            WindowCenter.Instance.CloseImmediately<NewItemGetWin>();
            //playerPack.ItemCntReduceAct += RefreshUI;
            getItem.SetActive(false);
            BoxModel.RefreshGetItemAct += RefreshGetIem;
            backBtn.AddListener(ClickBackBtn);
            ShowUICtrl();
        }
        protected override void OnActived()
        {
            UpdateFireEffect();
        }
        protected override void OnAfterOpen()
@@ -91,6 +97,33 @@
        private void RefreshGetIem(int useId, int useCnt, BoxGetItemInfo[] info)
        {
            ShowUICtrl();
        }
        private void UpdateFireEffect()
        {
            if (BoxModel.getItems == null) return;
            bool isFireBox = false;
            foreach (var key in ceremonyModel.fireDict.Keys)
            {
                StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(ceremonyModel.fireDict[key]);
                if (storeConfig != null)
                {
                    if (storeConfig.ItemID == BoxModel.itemId)
                    {
                        isFireBox = true;
                        if (!fireEffect.IsPlaying)
                        {
                            fireEffect.Play();
                            return;
                        }
                    }
                }
            }
            if(!isFireBox)
            {
                fireEffect.Stop();
            }
        }
        private void ShowUICtrl()
@@ -126,27 +159,6 @@
            {
                getCoinsText.gameObject.SetActive(false);
            }
            foreach(var key in ceremonyModel.fireDict.Keys)
            {
                StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(ceremonyModel.fireDict[key]);
                if(storeConfig != null)
                {
                    if(storeConfig.ItemID == BoxModel.itemId)
                    {
                        if (!fireEffect.IsPlaying)
                        {
                            fireEffect.Play();
                            return;
                        }
                    }
                }
            }
            if (fireEffect.IsPlaying)
            {
                fireEffect.Stop();
            }
        }
        private void RefreshUI(PackType type, int index, int id)
@@ -160,6 +172,7 @@
        
        private void CreateGetItem()
        {
            getItemParent.anchoredPosition3D = startPos;
            DestroyGetItemlist();
            GetItemlist.Clear();
            getItemBasiclist.Clear();
System/KnapSack/Logic/EquipDevourWin.cs
@@ -50,6 +50,7 @@
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
        List<ItemModel> devourModellist;
        bool isOpen = true;
@@ -587,6 +588,8 @@
        public void SendEquipdevourQuest()
        {
            if (!modelInterface.isPackResetOk) return;
            playerPack.isAutoDecompose = false;
            CA32C_tagCMEquipDecompose _petEat = new CA32C_tagCMEquipDecompose();
System/KnapSack/Logic/EquipTip.cs
@@ -576,6 +576,18 @@
                washAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    washAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 4;
            washAttr.SetActive(true);
            washTitleText.text = Language.Get("EquipWin_WashPropObj_Text_1");
@@ -584,12 +596,21 @@
        private void SetGemAttrUI()
        {   
            if (itemAttrData.itemConfig.LV < itemTipsModel.gemOpenLvs[0]
                || itemAttrData.packType == PackType.rptDogzEquip
                || itemAttrData.packType == PackType.rptDogzItem)
            if (itemAttrData.itemConfig.LV < itemTipsModel.gemOpenLvs[0])
            {
                gemAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    gemAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 5;
            gemAttr.SetActive(true);
@@ -662,6 +683,17 @@
            {
                suitAttr.SetActive(false);
                return; 
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    suitAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 6;
            suitAttr.SetActive(true);
@@ -846,40 +878,54 @@
        private void SetBottomUI()
        {
            if(itemAttrData.packType != PackType.rptDogzItem && itemAttrData.packType != PackType.rptDogzEquip)
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                if (dogzEquipDesText != null)
                {
                    dogzEquipDesText.gameObject.SetActive(false);
                }
                if (itemAttrData.itemConfig.Description == "" || string.IsNullOrEmpty(itemAttrData.itemConfig.Description))
                {
                    equipSourceNormal.gameObject.SetActive(true);
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                case 12:
                    if (dogzEquipDesText != null)
                    {
                        dogzEquipDesText.gameObject.SetActive(false);
                    }
                    if (itemAttrData.itemConfig.Description == "" || string.IsNullOrEmpty(itemAttrData.itemConfig.Description))
                    {
                        equipSourceNormal.gameObject.SetActive(true);
                        equipSourceDes.gameObject.SetActive(false);
                        equipSourceText.gameObject.SetActive(false);
                        SetBottomText(equipSourceNormal);
                    }
                    else
                    {
                        equipSourceNormal.gameObject.SetActive(false);
                        equipSourceDes.gameObject.SetActive(true);
                        equipSourceText.gameObject.SetActive(true);
                        SetBottomText(equipSourceDes);
                        equipSourceText.text = itemAttrData.itemConfig.Description;
                    }
                    break;
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    equipSourceNormal.gameObject.SetActive(false);
                    equipSourceDes.gameObject.SetActive(false);
                    equipSourceText.gameObject.SetActive(false);
                    SetBottomText(equipSourceNormal);
                }
                else
                {
                    equipSourceNormal.gameObject.SetActive(false);
                    equipSourceDes.gameObject.SetActive(true);
                    equipSourceText.gameObject.SetActive(true);
                    SetBottomText(equipSourceDes);
                    equipSourceText.text = itemAttrData.itemConfig.Description;
                }
                    if (dogzEquipDesText != null)
                    {
                        dogzEquipDesText.gameObject.SetActive(true);
                        dogzEquipDesText.text = itemAttrData.itemConfig.Description;
                    }
                    break;
            }
            else
            {
                equipSourceNormal.gameObject.SetActive(false);
                equipSourceDes.gameObject.SetActive(false);
                equipSourceText.gameObject.SetActive(false);
                if (dogzEquipDesText != null)
                {
                    dogzEquipDesText.gameObject.SetActive(true);
                    dogzEquipDesText.text = itemAttrData.itemConfig.Description;
                }
            }
        }
        private void SetBottomText(EquipSource source)
System/KnapSack/Logic/ItemTipsModel.cs
@@ -815,9 +815,13 @@
            {
                case ItemWinType.equipWin:
                    attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => {
                        List<int> indexlist = new List<int>();
                        indexlist.Add(attrData.index);
                        dogzModel.SendPutOnEquip(indexlist);
                        if(dogzModel.CheckIsPutOn(attrData.itemId))
                        {
                            List<int> indexlist = new List<int>();
                            indexlist.Add(attrData.index);
                            dogzModel.SendPutOnEquip(indexlist);
                        }
                    });
                    break;
            }
System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -93,6 +93,9 @@
            get { return _suitModel ?? (_suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>()); }
        }
        DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } }
        #region 发送穿戴装备的请求
        ItemConfig sendItemConfig = null;
        public ItemModel sendItemModel = null;
@@ -834,6 +837,11 @@
                return;
            }
            if(dogzModel.AddAssistItem == itemModel.itemInfo.ItemID)
            {
                dogzModel.MakeUseAddAssistNum();
                return;
            }
            ulong maxValue = 0;
            playerPack.IsReachUseLimit(itemModel.itemInfo.ItemGUID, out maxValue);
System/KnapSack/Logic/PlayerPackModels.cs
@@ -1276,6 +1276,9 @@
            {
                if (model.chinItemModel.ItemColor >= (int)E_ItemColor.Purple)
                {
                    PetEatEquipConfig eatEquipConfig = PetEatEquipConfig.GetEquipColorAndEquipClass(model.chinItemModel.ItemColor,model.chinItemModel.LV);
                    if (eatEquipConfig == null) return false;
                    if (modelInterface.IsFightUp(model.itemId, model.equipScore) != 1)
                    {
                        if (model.chinItemModel.ItemColor <= (int)colorType
@@ -1395,7 +1398,7 @@
        public void SendEquipdevourQuest()
        {
            List<ItemModel> itemModels = GetCanDevourModellist();
            if (itemModels == null || itemModels.Count < minDecomposeNum) return;
            if (itemModels == null || itemModels.Count < minDecomposeNum || !modelInterface.isPackResetOk) return;
            isAutoDecompose = true;
            recordAutoDecomNum = itemModels.Count;
System/KnapSack/New/BatchBuyWin.cs
New file
@@ -0,0 +1,178 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, September 08, 2017
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
namespace Snxxz.UI
{
    public class BatchBuyWin : Window
    {
        #region 成员变量
        private Text _itemName;
        private Slider _splitSlider;
        private Text _number;
        private Button _addBtn;
        private Button _reduceBtn;
        private Button _splitBtn;
        private Button _closeBtn;
        private ItemCell _itemCell;
        #endregion
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack
        {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        PlayerBuffDatas _buffModel;
        PlayerBuffDatas Buffmodel
        {
            get
            {
                return _buffModel ?? (_buffModel = ModelCenter.Instance.GetModel<PlayerBuffDatas>());
            }
        }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        #region Built-in
        protected override void BindController()
        {
            _itemName = transform.Find("ItemNameText").GetComponent<Text>();
            _number = transform.Find("SplitSlider/Background/Fill/SplitIcon/NumBG/NumText").GetComponent<Text>();
            _splitSlider = transform.Find("SplitSlider").GetComponent<Slider>();
            _addBtn = transform.Find("Addbtn").GetComponent<Button>();
            _splitBtn = transform.Find("Usebtn").GetComponent<Button>();
            _reduceBtn = transform.Find("Reducebtn").GetComponent<Button>();
            _closeBtn = transform.Find("Closebtn").GetComponent<Button>();
            _itemCell = transform.Find("ItemCell").GetComponent<ItemCell>();
        }
        protected override void AddListeners()
        {
            _splitSlider.onValueChanged.RemoveAllListeners();
            _addBtn.onClick.RemoveAllListeners();
            _reduceBtn.onClick.RemoveAllListeners();
            _splitBtn.onClick.RemoveAllListeners();
            _closeBtn.onClick.RemoveAllListeners();
            _splitSlider.onValueChanged.AddListener(
             delegate
             {
                 OnSplitValueChange();
             }
             );
            _addBtn.onClick.AddListener(OnClickAddBtn);
            _reduceBtn.onClick.AddListener(OnClickReduceBtn);
            _splitBtn.onClick.AddListener(OnClickBatchUseBtn);
            _closeBtn.onClick.AddListener(OnClickCloseBtn);
        }
        protected override void OnPreOpen()
        {
            //OpenBatchWin(itemInfoModel.CurItemModel);
            OpenBatchWin();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            BatchUseModel.Instance.ClearBatchBuyModel();
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void OpenBatchWin()
        {
            if (BatchUseModel.Instance.storeConfig == null)
                return;
            InitPanel();
        }
        public void InitPanel()
        {
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(BatchUseModel.Instance.storeConfig.ItemID);
            if (itemConfig == null) return;
            ItemCellModel cellModel = new ItemCellModel(itemConfig.ID);
            _itemCell.Init(cellModel);
            _itemName.text = itemConfig.ItemName;
            _splitSlider.minValue = 1;
            _splitSlider.maxValue = itemConfig.PackCount;
            OnSplitValueChange();
        }
        public void OnSplitValueChange()
        {
            _number.text = Mathf.Ceil(_splitSlider.value).ToString();
        }
        public void OnClickAddBtn()
        {
            if (_splitSlider.value < _splitSlider.maxValue)
            {
                _splitSlider.value++;
            }
        }
        public void OnClickReduceBtn()
        {
            if (_splitSlider.value > _splitSlider.minValue)
            {
                _splitSlider.value--;
            }
        }
        public void OnClickBatchUseBtn()
        {
            if (BatchUseModel.Instance.storeConfig == null) return;
            if(BatchUseModel.Instance.CheckIsBuy(BatchUseModel.Instance.storeConfig, (int)_splitSlider.value))
            {
                storeModel.SendBuyShopItem(BatchUseModel.Instance.storeConfig, (int)_splitSlider.value);
                OnClickCloseBtn();
            }
            else
            {
                WindowCenter.Instance.Open<RechargeTipWin>();
            }
        }
        public void OnClickCloseBtn()
        {
            Close();
        }
    }
}
System/KnapSack/New/BatchBuyWin.cs.meta
copy from Fight/Stage/PaintMapLine.cs.meta copy to System/KnapSack/New/BatchBuyWin.cs.meta
File was copied from Fight/Stage/PaintMapLine.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 9202015b1077a91488a691347bdeafae
timeCreated: 1508832157
guid: b189f464e250e4545973fbd542fab701
timeCreated: 1538221287
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/KnapSack/New/BatchUseModel.cs
@@ -1,26 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Snxxz.UI
{
    public class BatchUseModel : Singleton<BatchUseModel>
    {
        public string guid{ get; private set; }
        public void SetBatchModel(string guid)
        {
            extraPrams = 0;
            this.maxValue = 0;
            this.guid = guid;
        }
        public int extraPrams { get; private set;}
        public int maxValue { get; private set;}
        public void SetExtraInfo(int extraUseInfo,int maxValue)
        {
           this.extraPrams = extraUseInfo;
            this.maxValue = maxValue;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TableConfig;
namespace Snxxz.UI
{
    public class BatchUseModel : Singleton<BatchUseModel>
    {
        #region 批量使用数据
        public string guid { get; private set; }
        public void SetBatchModel(string guid)
        {
            extraPrams = 0;
            this.maxValue = 0;
            this.guid = guid;
        }
        public int extraPrams { get; private set; }
        public int maxValue { get; private set; }
        public void SetExtraInfo(int extraUseInfo, int maxValue)
        {
            this.extraPrams = extraUseInfo;
            this.maxValue = maxValue;
        }
        #endregion
        #region 批量购买数据
        public StoreConfig storeConfig { get; private set; }
        public void SetBatchBuyModel(StoreConfig _storeConfig)
        {
            if (_storeConfig == null) return;
            storeConfig = _storeConfig;
            WindowCenter.Instance.Open<BatchBuyWin>();
        }
        public bool CheckIsBuy(StoreConfig storeConfig, int buyNum = 1)
        {
            ulong price = (ulong)(storeConfig.MoneyNumber * buyNum);
            if (UIHelper.GetMoneyCnt(storeConfig.MoneyType) >= price)
            {
                return true;
            }
            return false;
        }
        public void ClearBatchBuyModel()
        {
            storeConfig = null;
        }
        #endregion
    }
}
System/KnapSack/New/KnapSackWin.cs
@@ -53,6 +53,7 @@
        {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
        public static KnapsackFuncTitle titleType = KnapsackFuncTitle.bag;
@@ -85,7 +86,8 @@
            base.OnActived();
            this.transform.SetAsLastSibling();
            _ornamentTitle.state = TitleBtnState.Locked;
            if(!WindowJumpMgr.Instance.IsJumpState && functionOrder == 0)
            if(!WindowJumpMgr.Instance.IsJumpState && functionOrder == 0
                && playerPack.lookLineIndex == -1)
            {
                if(playerPack.redpointEquipDecom.state == RedPointState.Simple)
                {
@@ -200,6 +202,8 @@
        private void OnClickDevourTitle()
        {
            if (!modelInterface.isPackResetOk) return;
            CloseSubWindows();
            titleType = KnapsackFuncTitle.devour;
System/KnapSack/New/RoleEquipWin.cs
@@ -353,6 +353,7 @@
        private void OnClickOneKeySell()
        {
            if (!modelInterface.isPackResetOk) return;
            if (modelInterface.GetSellItemList().Count > 0)
            {
System/Login/GameNotice.cs
@@ -9,11 +9,23 @@
    public static void OpenGameNotice()
    {
#if !UNITY_EDITOR
        var url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
        if (!string.IsNullOrEmpty(url) && !noticeShowed)
        try
        {
            SDKUtility.Instance.OpenUrl(url);
            noticeShowed = true;
            var url = string.Empty;
            if (VersionUtility.Instance.versionInfo != null)
            {
                url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
            }
            if (!string.IsNullOrEmpty(url) && !noticeShowed)
            {
                SDKUtility.Instance.OpenUrl(url);
                noticeShowed = true;
            }
        }
        catch (System.Exception ex)
        {
            noticeShowed = true;
        }
#endif
    }
@@ -21,8 +33,22 @@
    public static bool HasNotice()
    {
#if !UNITY_EDITOR
        var url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
        return !string.IsNullOrEmpty(url);
        try
        {
            if (VersionUtility.Instance.versionInfo!=null )
            {
                var url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
                return !string.IsNullOrEmpty(url);
            }
            else
            {
                return false;
            }
        }
        catch (System.Exception ex)
        {
            return false;
        }
#else
        return false;
#endif
@@ -31,11 +57,23 @@
    public static void OpenGameNoticeForce()
    {
#if !UNITY_EDITOR
        var url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
        if (!string.IsNullOrEmpty(url) )
        try
        {
            SDKUtility.Instance.OpenUrl(url);
            var url = string.Empty;
            if (VersionUtility.Instance.versionInfo != null)
            {
                url = VersionUtility.Instance.versionInfo.GetNoticeURL(VersionConfig.Get().branch);
            }
            if (!string.IsNullOrEmpty(url))
            {
                SDKUtility.Instance.OpenUrl(url);
            }
        }
        catch (System.Exception ex)
        {
            Debug.Log(ex);
        }
#endif
    }
System/Login/LoginModel.cs
@@ -278,6 +278,8 @@
                    send.Extra = "";
                    break;
                case VersionAuthority.Release:
                    send.ExtraLen = 0;
                    send.Extra = "";
                    if (SDKUtility.Instance.ChannelPlatform == SDKUtility.E_ChannelPlatform.Free)
                    {
                        send.IDType = 1;
System/Login/ServerData.cs
@@ -86,6 +86,23 @@
    public int level;
    public DateTime last_login_time;
    public ServerData(LoginSeverListConfig config)
    {
        region_flag = config.ID;
        name = config.serverName;
        running_status = 1;
        statue = 1;
        is_recommend = 0;
        region_domain = config.ip;
        int.TryParse(config.pagePort, out login_port);
        game_port = config.gatePort;
        start_date = DateTime.Now;
        job = string.Empty;
        roleid = string.Empty;
        level = 0;
        last_login_time = DateTime.Now;
    }
    public static int Compare(ServerData _lhs, ServerData _rhs)
    {
        if (_lhs.is_recommend != _rhs.is_recommend)
System/Login/ServerListCenter.cs
@@ -18,11 +18,9 @@
    public ServerInfoCommon serverInfoCommon { get; private set; }
    ServerData m_CurrentServer;
    public ServerData currentServer
    {
    public ServerData currentServer {
        get { return m_CurrentServer; }
        set
        {
        set {
            m_CurrentServer = value;
            m_SelectedServer = true;
@@ -36,14 +34,11 @@
    }
    string m_CurrentServerGroup = string.Empty;
    public string currentServerGroup
    {
        get
        {
    public string currentServerGroup {
        get {
            return m_CurrentServerGroup;
        }
        set
        {
        set {
            if (m_CurrentServerGroup != value)
            {
                m_CurrentServerGroup = value;
@@ -60,8 +55,7 @@
    bool serverListPlayerPartGot = false;
    bool serverListCommonPartGot = false;
    public bool serverListGot
    {
    public bool serverListGot {
        get { return serverListCommonPartGot; }
    }
@@ -72,14 +66,11 @@
    public event Action serverSelectEvent;
    const string LOGIN_SERVER = "LoginServer";
    public int localSaveServerId
    {
        get
        {
    public int localSaveServerId {
        get {
            return LocalSave.GetInt(LOGIN_SERVER);
        }
        set
        {
        set {
            LocalSave.SetInt(LOGIN_SERVER, value);
        }
    }
@@ -142,6 +133,11 @@
    public void RequestJumpUrl()
    {
        if (VersionUtility.Instance.InIosAuditTime())
        {
            return;
        }
        var url = StringUtility.Contact(JUMP_URL[jumpUrlIndex % 2], "flag=", VersionConfig.Get().appId, "_", VersionConfig.Get().branch, "_", VersionConfig.Get().version);
        jumpUrlIndex++;
        HttpRequest.Instance.RequestHttpGet(url, HttpRequest.defaultHttpContentType, 1, OnRequestJumpUrl);
@@ -178,6 +174,11 @@
    void RequestServerCommonList()
    {
        if (VersionUtility.Instance.InIosAuditTime())
        {
            return;
        }
        HttpRequest.Instance.RequestHttpGet(SERVERLIST_URL_COMMON, HttpRequest.defaultHttpContentType, 1, OnGetServerList);
    }
@@ -222,6 +223,11 @@
    public void RequestServerListPlayer(string _accountName)
    {
        if (VersionUtility.Instance.InIosAuditTime())
        {
            return;
        }
        accountNameBuf = _accountName;
        var url = string.Empty;
        var tables = new Dictionary<string, string>();
@@ -293,6 +299,30 @@
        return false;
    }
    public void ParseServerLocalServerList()
    {
        serverListCommonPartGot = true;
        var configs = Config.Instance.GetAllValues<LoginSeverListConfig>();
        var count = configs.Count;
        serverInfoCommon = new ServerInfoCommon();
        serverInfoCommon.common = new ServerGroup[1];
        serverInfoCommon.common[0] = new ServerGroup();
        serverInfoCommon.common[0].group_title = "1区";
        serverInfoCommon.common[0].group_list = new ServerData[count];
        for (var i = 0; i < count; i++)
        {
            var config = configs[i];
            serverInfoCommon.common[0].group_list[i] = new ServerData(config);
        }
        FiltrateDefaultServerAndServerGroup();
        if (onServerListRefreshEvent != null)
        {
            onServerListRefreshEvent();
        }
    }
    public List<string> GetAllServerGroup()
    {
        var serverGroupTitles = new List<string>();
@@ -319,7 +349,6 @@
        return serverGroupTitles;
    }
    private void ProcessRecentServerData()
    {
System/MainInterfacePanel/HighSettingFadeInFadeOut.cs
@@ -538,6 +538,29 @@
                        int IndexOf = GroupLowIndexList.IndexOf(highBtnRecord.Index);
                        if (IndexOf == 0)
                        {
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.FairyCeremony))//精灵盛典
                            {
                                if (AnimationFadeOutDicLow.Count < 6)//------第二层
                                {
                                    SelectCaseRequest selectCaseRequest = new SelectCaseRequest();
                                    selectCaseRequest.Tran = m_GroupIndex_Low.GetChild(i);
                                    selectCaseRequest.IsNagaaki = highBtnRecord.IsNagaaki;
                                    selectCaseRequest.Index = highBtnRecord.Index;
                                    AnimationFadeOutDicLow.Add(highBtnRecord.Index, selectCaseRequest);
                                }
                                else//------第三层
                                {
                                    SelectCaseRequest selectCaseRequest = new SelectCaseRequest();
                                    selectCaseRequest.Tran = m_GroupIndex_Low.GetChild(i);
                                    selectCaseRequest.IsNagaaki = highBtnRecord.IsNagaaki;
                                    selectCaseRequest.Index = highBtnRecord.Index;
                                    AnimationFadeOutDicThree.Add(highBtnRecord.Index, selectCaseRequest);
                                }
                            }
                        }
                        else if (IndexOf == 1)
                        {
                            var _funcOrder = 0;
                            if (OpenServerActivityCenter.Instance.IsAnyActivityOpen(out _funcOrder))//精彩活动
                            {
@@ -561,11 +584,10 @@
                                    }
                                }
                            }
                        }
                        else if (IndexOf == 1)
                        {
                        else if (IndexOf == 2)
                        {
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && limitedTimePackageItemModel.IsExpired())//限时礼包
                            {
                                if (AnimationFadeOutDicLow.Count < 6)//------第二层
@@ -586,8 +608,9 @@
                                }
                            }
                        }
                        else if (IndexOf == 2)
                        else if (IndexOf == 3)
                        {
                            bool Isopen = OpenServerActivityCenter.Instance.IsActivityOpen(4);
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && Isopen)//限时特惠
@@ -609,33 +632,12 @@
                                    AnimationFadeOutDicThree.Add(highBtnRecord.Index, selectCaseRequest);
                                }
                            }
                        }
                        else if (IndexOf == 3)
                        {
                            bool Isopen = impactRankModel.IsInImpactRank;
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && Isopen)//全民冲榜
                            {
                                if (AnimationFadeOutDicLow.Count < 6)//------第二层
                                {
                                    SelectCaseRequest selectCaseRequest = new SelectCaseRequest();
                                    selectCaseRequest.Tran = m_GroupIndex_Low.GetChild(i);
                                    selectCaseRequest.IsNagaaki = highBtnRecord.IsNagaaki;
                                    selectCaseRequest.Index = highBtnRecord.Index;
                                    AnimationFadeOutDicLow.Add(highBtnRecord.Index, selectCaseRequest);
                                }
                                else//------第三层
                                {
                                    SelectCaseRequest selectCaseRequest = new SelectCaseRequest();
                                    selectCaseRequest.Tran = m_GroupIndex_Low.GetChild(i);
                                    selectCaseRequest.IsNagaaki = highBtnRecord.IsNagaaki;
                                    selectCaseRequest.Index = highBtnRecord.Index;
                                    AnimationFadeOutDicThree.Add(highBtnRecord.Index, selectCaseRequest);
                                }
                            }
                        }
                        else if (IndexOf == 4)
                        {
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && OperationTimeHepler.Instance.InOperationTime(Operation.FairyCeremony))//精灵盛典
                            bool Isopen = impactRankModel.IsInImpactRank;
                            if (!AnimationFadeOutDicLow.ContainsKey(highBtnRecord.Index) && Isopen)//全民冲榜
                            {
                                if (AnimationFadeOutDicLow.Count < 6)//------第二层
                                {
System/MainInterfacePanel/HoistingWin.cs
@@ -21,6 +21,7 @@
        [SerializeField] Button PrayerButton;//祈愿
        [SerializeField] Button BountyTaskButton;//赏金
        [SerializeField] Button HangUpButton;//挂机
        [SerializeField] Button FairyTaskButton;//仙盟任务
        private int number = 0;
        DungeonModel m_DungeonModel;
        DungeonModel dungeonModel { get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); } }
@@ -71,6 +72,11 @@
            WorldBossButton.AddListener(() => {
                Close();
                WindowCenter.Instance.Open<FindPreciousFrameWin>();
            });
            FairyTaskButton.AddListener(()=>
            {
                Close();
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.UnionTask);
            });
        }
@@ -150,7 +156,14 @@
            {
                HangUpButton.gameObject.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(16) && TaskAllocation.Instance.FairyAuAllNumber()<70)//仙盟任务
            {
                FairyTaskButton.gameObject.SetActive(true);
            }
            else
            {
                FairyTaskButton.gameObject.SetActive(false);
            }
            for (int i = 0; i < Content.childCount; i++)
            {
System/MainInterfacePanel/SideMission.cs
@@ -90,11 +90,14 @@
            gridCtrl.Refresh();
            foreach (var key in taskmodel.SideQuestsDic.Keys)
            {
                if (TaskIdNow == 0)
                if (taskmodel.SideQuestsDic[key].MissionState != 0)
                {
                    TaskIdNow = key;
                }
                gridCtrl.AddCell(ScrollerDataType.Header, key);
                    if (TaskIdNow == 0)
                    {
                        TaskIdNow = key;
                    }
                    gridCtrl.AddCell(ScrollerDataType.Header, key);
                }
            }
            gridCtrl.Restart();
        }
System/MainInterfacePanel/TaskListTip.cs
@@ -141,20 +141,6 @@
        {
           
        }
        private void TaskIdUpdate(int taskId)
        {
            int leng = Content.childCount;
            for (int i = 0; i < leng; i++)
            {
                GameObject childObj = Content.GetChild(i).gameObject;
                TaskType childObjTaskType = Content.GetChild(i).gameObject.GetComponent<TaskType>();
                if (childObj.activeSelf && childObjTaskType.TaskID == taskId)
                {
                    childObj.GetComponent<FlyingShoesTask>().FlyingShoes_Task(taskId);
                }
            }
        }
        private void CardLevelChangeEvent(int taskID)//卡级状态改变
        {
            if (taskmodel.allMissionDict.ContainsKey(taskID) && taskmodel.allMissionDict[taskID].Type == 3)
@@ -166,9 +152,9 @@
        }
        private void MainCardLevelChange(int _id)//主线任务卡级状态改变
        {
            TaskScheduling();
            ChangeSort();
            TaskJump(_id);
            //TaskScheduling();
            //ChangeSort();
            //TaskJump(_id);
        }
        private void SetLength()
@@ -215,35 +201,23 @@
        }
        void TaskToAdd(int MissionID, int MissionState, int DiscriptionIndex)//添加任务
        {
            TaskScheduling();
            var inDungeon = IsDungeon();
            TaskScheduling();
            if (WindowCenter.Instance.IsOpen<MainInterfaceWin>() && !inDungeon)
            {
                TaskAddAndDelete();
                if (MissionState != 0 && MissionID!=1 && _list.Contains(MissionID))
                {
                    TaskAddAndDelete(MissionID);
                    TaskJump(MissionID);
                    return;
                }
            }
            TaskJump(MissionID);
        }
        void LodingDelTask(int TaskID)
        {
            int LengChild = Content.childCount;
            for (int i = 0; i < LengChild; i++)
            {
                TaskType taskType = Content.GetChild(i).GetComponent<TaskType>();
                FlyingShoesTask flyingShoesTask = Content.GetChild(i).GetComponent<FlyingShoesTask>();
                if (taskType.TaskID == TaskID && taskType.gameObject.activeSelf)
                {
                    taskType.gameObject.SetActive(false);
                    if (TaskID != taskmodel.GetNowTaskID && flyingShoesTask.ImgSelected.activeSelf)
                    {
                        flyingShoesTask.ImgSelected.SetActive(false);
                    }
                    flyingShoesTask.UIEffect.Play();
                }
            }
            SetLength();
        }
        private void TaskAddAndDelete()
        private void TaskAddAndDelete(int TaskID)
        {
            for (int i = 0; i < Content.childCount; i++)
            {
@@ -268,8 +242,30 @@
                        childObj.SetActive(false);
                    }
                }
            }
            //for (int i = 0; i < Content.childCount; i++)
            //{
            //    if (i < _list.Count)
            //    {
            //        GameObject obj = Content.GetChild(i).gameObject;
            //        TaskType childObjTaskType = Content.GetChild(i).gameObject.GetComponent<TaskType>();
            //        if (childObjTaskType.TaskID == TaskID)
            //        {
            //            return;
            //        }
            //        if (childObjTaskType.TaskID == 0)
            //        {
            //            obj.SetActive(true);
            //            childObjTaskType.TaskID = TaskID;
            //            childObjTaskType.IsGameObjectName(TaskID);
            //            childObjTaskType.IsMysteriousTask();
            //            obj.GetComponent<FlyingShoesTask>().FlyingShoes_Task(TaskID);
            //        }
            //    }
            //}
            ChangeSort();//关于任务变更排序
            SetLength();
        }
@@ -322,22 +318,39 @@
                    taskType.TaskID = 0;
                    taskType.ClearTaskName();
                    obj.SetActive(false);
                    obj.transform.SetAsLastSibling();
                    obj.transform.SetAsLastSibling();
                    return;
                }
            }
        }
        private void ChangeSort()//关于任务变更排序
        {
            for (int i = 0; i < Content.childCount; i++)
            for (int i = 0; i < _list.Count; i++)
            {
                GameObject obj = Content.GetChild(i).gameObject;
                TaskType taskType = obj.GetComponent<TaskType>();
                if (taskType.TaskID != 0 && _list.Contains(taskType.TaskID))
                for (int j = 0; j < Content.childCount; j++)
                {
                    int Inedx = _list.IndexOf(taskType.TaskID);
                    obj.transform.SetSiblingIndex(Inedx);
                    GameObject obj = Content.GetChild(j).gameObject;
                    TaskType taskType = obj.GetComponent<TaskType>();
                    if (taskType.TaskID != 0 && taskType.TaskID == _list[i])
                    {
                        int Inedx = _list.IndexOf(taskType.TaskID);
                        obj.transform.SetSiblingIndex(Inedx);
                    }
                }
            }
            //for (int i = 0; i < Content.childCount; i++)
            //{
            //    GameObject obj = Content.GetChild(i).gameObject;
            //    TaskType taskType = obj.GetComponent<TaskType>();
            //    if (taskType.TaskID != 0 && _list.Contains(taskType.TaskID))
            //    {
            //        int Inedx = _list.IndexOf(taskType.TaskID);
            //        obj.transform.SetSiblingIndex(Inedx);
            //    }
            //}
        }
@@ -493,7 +506,15 @@
            }
            else
            {
                var _position = (_list.Count - type) * m_SizeHeight + (_list.Count - type - 1) * 2;
                float _position = 0f;
                if (_list.Count >= 12)
                {
                    _position = (12 - type) * m_SizeHeight + (12 - type - 1) * 2;
                }
                else
                {
                    _position = (_list.Count - type) * m_SizeHeight + (_list.Count - type - 1) * 2;
                }
                _position -= 196;
                m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(_position / ((Content as RectTransform).sizeDelta.y - 196));
            }
System/MainInterfacePanel/TopRightTip.cs
@@ -27,10 +27,8 @@
        private void OpenMapWin()
        {
            var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig();
            var config = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
            if (string.IsNullOrEmpty(mapResConfig.BigMap)
                || PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON)
            var canOpen = ModelCenter.Instance.GetModel<MapModel>().CanOpenLocalMapWin(PlayerDatas.Instance.baseData.MapID);
            if (!canOpen)
            {
                SysNotifyMgr.Instance.ShowTip("MapInfo1");
            }
System/MainWin/AttackButton.cs
@@ -25,7 +25,7 @@
                }
                else
                {
                    return m_IsDown;
                    return Input.GetMouseButton(0) && m_IsDown;
                }
            }
        }
System/Message/BattleHint.cs
@@ -16,15 +16,15 @@
        public void OnStageLoadFinish()
        {
            Clear();
            var mapId = PlayerDatas.Instance.baseData.MapID;
            if (cacheMapId != 0 && cacheMapId != 31160
                && mapId == 31160)
            {
                SnxxzGame.Instance.StartCoroutine(Co_LoadFinish());
            }
            var help = dungeonModel.mission;
            ancientKing = mapId != 31160 ? 0 : help.topPlayerID;
            cacheMapId = PlayerDatas.Instance.baseData.MapID;
            //var mapId = PlayerDatas.Instance.baseData.MapID;
            //if (cacheMapId != 0 && cacheMapId != 31160
            //    && mapId == 31160)
            //{
            //    SnxxzGame.Instance.StartCoroutine(Co_LoadFinish());
            //}
            //var help = dungeonModel.mission;
            //ancientKing = mapId != 31160 ? 0 : help.topPlayerID;
            //cacheMapId = PlayerDatas.Instance.baseData.MapID;
        }
        public event Action battleHintUpdate;
@@ -56,7 +56,7 @@
                    && ancientKing != help.topPlayerID)
                {
                    ancientKing = help.topPlayerID;
                    Receive(1);
                    //Receive(1);
                }
            }
            ancientKing = help.topPlayerID;
@@ -71,24 +71,24 @@
            }
            if (msg.Equals("AncientBattlefield_8"))
            {
                Receive(2);
                //Receive(2);
            }
        }
        public void Receive(int ancientType)
        {
            battleHints.Enqueue(ancientType);
            if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
            {
                WindowCenter.Instance.Open<BattleHintWin>();
            }
            else
            {
                if (battleHintUpdate != null)
                {
                    battleHintUpdate();
                }
            }
            //battleHints.Enqueue(ancientType);
            //if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
            //{
            //    WindowCenter.Instance.Open<BattleHintWin>();
            //}
            //else
            //{
            //    if (battleHintUpdate != null)
            //    {
            //        battleHintUpdate();
            //    }
            //}
        }
        public void ReceiveEvenKill(string message, ArrayList list)
System/Message/SysNotifyMgr.cs
@@ -220,7 +220,7 @@
                    }
                    break;
                case SysNotifyType.SysEvenKill:
                    BattleHint.Instance.ReceiveEvenKill(msg, tipInfoList);
                    //BattleHint.Instance.ReceiveEvenKill(msg, tipInfoList);
                    break;
            }
        }
System/Mount/PlayerMountDatas.cs
@@ -50,8 +50,8 @@
    private List<HorseConfig> SortMount = new List<HorseConfig>();//用于红点排序
    public int MountStoneItemId = 0;
    public bool IsOk = false;
    public bool IsRedPointSingleFeed = true;
    public List<int> ListEffectSkill = new List<int>();
    private int HorseDanExp = 0;//坐骑丹经验
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack
    {
@@ -78,6 +78,8 @@
        }
        string MountRedDotstr = Config.Instance.Get<FuncConfigConfig>("MountPetRedDot").Numerical1;
        DicDefaultMount = ConfigParse.GetDic<int, int>(MountRedDotstr);
        string HorseUpItem = Config.Instance.Get<FuncConfigConfig>("HorseUpItem").Numerical2;
        HorseDanExp = int.Parse(HorseUpItem);
    }
    public override void UnInit()
@@ -96,7 +98,6 @@
        _DicHorse.Clear();
        HorseRidingBool = false;
        Wait = true;
        IsRedPointSingleFeed = true;
    }
    public void OnPlayerLoginOk()
@@ -250,7 +251,6 @@
    private void RedPointMountDan()
    {
        IsRedPointSingleFeed = false;
        MountDanRed();
    }
@@ -281,22 +281,20 @@
        int GetMountID = 0;
        int GetMountLv = 0;
        int NeedExp = 99999999;
        int NeedNumber = 0;//所需要的经验丹
        for (int i = 0; i < SortMount.Count; i++)
        {
            int horseID = SortMount[i].HorseID;
            if (_DicHorse.ContainsKey(horseID))
            if (_DicHorse.ContainsKey(horseID) && _DicHorse[horseID].Lv < Config.Instance.Get<HorseConfig>(horseID).MaxLV)
            {
                var key = horseID;
                if (GetMountID == 0 && _DicHorse[key].Lv < GetMountSkillMaxLV(key))
                int _NeedExp = HorseUpConfig.GetHorseIDAndLV(horseID, (_DicHorse[horseID].Lv)).NeedExp;
                if (_NeedExp - _DicHorse[horseID].Exp < NeedExp)
                {
                    GetMountID = key;
                    GetMountLv = _DicHorse[key].Lv;
                }
                if (_DicHorse[key].Lv < GetMountLv && _DicHorse[key].Lv < GetMountSkillMaxLV(key))
                {
                    GetMountID = key;
                    GetMountLv = _DicHorse[key].Lv;
                    NeedExp = _NeedExp - _DicHorse[horseID].Exp;
                    GetMountID = horseID;
                    GetMountLv = _DicHorse[horseID].Lv;
                    NeedNumber = Mathf.CeilToInt((float)NeedExp / HorseDanExp);
                }
            }
        }
@@ -312,23 +310,11 @@
                ASingleFeedRedPoint[key].state = RedPointState.Simple;
                return;
            }
        }
        if (ASingleFeedRedPoint.ContainsKey(GetMountID) && number > 0 && GetMountLv < horsecon.MaxLV)
        if (ASingleFeedRedPoint.ContainsKey(GetMountID) && number >= NeedNumber && GetMountLv < horsecon.MaxLV)
        {
            if (PlayerDatas.Instance.baseData.LV >= 1500)
            {
                if (IsRedPointSingleFeed)
                {
                    ASingleFeedRedPoint[GetMountID].state = RedPointState.Simple;
                    return;
                }
            }
            else
            {
                ASingleFeedRedPoint[GetMountID].state = RedPointState.Simple;
                return;
            }
            ASingleFeedRedPoint[GetMountID].state = RedPointState.Simple;
            return;
        }
    }
System/OpenServerActivity/FeaturesType.cs
@@ -15,7 +15,9 @@
        [SerializeField] Text m_IconName;//名字
        [SerializeField] Image m_Icon;
        [SerializeField] Button  m_Button;
        [SerializeField] UIEffect m_UIeffect;
        InSevenDayModel m_InSevenDayModel;
        InSevenDayModel inSevenDay { get { return m_InSevenDayModel ?? (m_InSevenDayModel = ModelCenter.Instance.GetModel<InSevenDayModel>()); } }
        public GameObject ImageSelected
        {
            get { return m_ImageSelected; }
@@ -34,6 +36,14 @@
            {
                return;
            }
            if (inSevenDay.RewardForDic.ContainsKey(day) && inSevenDay.RewardForDic[day] == 0)
            {
                m_UIeffect.Play();
            }
            else
            {
                m_UIeffect.Stop();
            }
            DayText(day);
            m_Icon.SetSprite(InsevenConfig.ICON);
            m_IconName.text = InsevenConfig.RewardName;
System/OpenServerActivity/FlashSaleCoolDown.cs
@@ -84,7 +84,7 @@
        void DisplayTime(int seconds)
        {
            m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
            m_Time.Begin(DateTime.Now.AddTicks(seconds * TimeSpan.TicksPerSecond));
            m_Time.Begin(seconds);
        }
        void DisplayAdvance(int seconds)
System/OpenServerActivity/InSevenDayWin.cs
@@ -25,6 +25,9 @@
        [SerializeField] Text m_TextName;
        [SerializeField] Image m_ImageShow;
        [SerializeField] Image m_ImageShowCH;
        [SerializeField] UIEffect m_UIEffect1;
        [SerializeField] UIEffect m_UIEffect2;
        [SerializeField] UIEffect m_UIEffect3;
        [SerializeField] Image m_ImageDay;
        [SerializeField] Image m_ImageTex1;
        [SerializeField] Image m_ImageTex2;
@@ -118,11 +121,12 @@
            {
                return;
            }
            SetUIEffect();
            m_rewardInformation.GetIsDays(SelectedDay);
            m_TextName.text = InsevenConfig.RewardName;
            if (InsevenConfig.IsTitle == 1)
            {
                m_ImageShow.gameObject.SetActive(false);
                m_ImageShow.gameObject.SetActive(false);
                m_ImageShowCH.gameObject.SetActive(true);
                m_ImageShowCH.SetSprite(InsevenConfig.Image);
                m_ImageShowCH.SetNativeSize();
@@ -142,7 +146,31 @@
            m_ImageTex2.SetSprite(InsevenConfig.ImgTxt2);
            m_ImageTex2.SetNativeSize();
        }
        private void SetUIEffect()
        {
            switch (SelectedDay)
            {
                case 1:
                case 4:
                case 6:
                    m_UIEffect1.gameObject.SetActive(true);
                    m_UIEffect2.gameObject.SetActive(false);
                    m_UIEffect3.gameObject.SetActive(false);
                    break;
                case 2:
                case 3:
                    m_UIEffect1.gameObject.SetActive(false);
                    m_UIEffect2.gameObject.SetActive(true);
                    m_UIEffect3.gameObject.SetActive(false);
                    break;
                case 5:
                case 7:
                    m_UIEffect1.gameObject.SetActive(false);
                    m_UIEffect2.gameObject.SetActive(false);
                    m_UIEffect3.gameObject.SetActive(true);
                    break;
            }
        }
        #endregion
    }
System/Pet/PlayerPetDatas.cs
@@ -47,8 +47,7 @@
    public int PetStoneItemId = 0;//用来记录坐骑魂石的ID
    public bool IsOk = false;
    public bool RedPointMaxLv = true;//用来标记灵宠最大限制等级
    private int PetDanExp = 0;//灵宠丹经验
    public List<int> ListEffectSkill = new List<int>();
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack
@@ -98,6 +97,7 @@
        }
        string PetRedDotstr = Config.Instance.Get<FuncConfigConfig>("MountPetRedDot").Numerical2;
        DicDefaultPet = ConfigParse.GetDic<int, int>(PetRedDotstr);
        PetDanExp = int.Parse(Config.Instance.Get<FuncConfigConfig>("PetUpItem").Numerical2);
    }
    public override void UnInit()
@@ -112,7 +112,6 @@
    public void OnBeforePlayerDataInitialize()
    {
        Wait = true;
        RedPointMaxLv = true;
        IsOk = false;
        _TagPetItem.Clear();
        _DicPetBack.Clear();
@@ -234,11 +233,6 @@
            return;
        }
    }
    //Lcj 是否可吞噬装备
    public bool CanDevour
    {
        get { return false; }
    }
    private void PetNumberPreservation()//用来对灵宠个数进行保存
    {
        if (PetRedpoint.Count != 0)
@@ -266,7 +260,6 @@
                CultivateRedPoint.Add(petID, redPointMountStare2);
            }
        }
    }
    private void PetActivateRedPoint()//灵宠激活红点
@@ -291,19 +284,8 @@
            }
        }
    }
    //灵宠进阶和灵宠分解红点
    public bool CanDecom
    {
        get { return false; }
    }
    public bool CanEssence
    {
        get; private set;
    }
    private void IsRedPointCultivate()
    {
        RedPointMaxLv = false;
        GetCultivateRedPoint();
    }
    private void ToAddSorting()
@@ -336,22 +318,20 @@
        }
        int GetPetId = 0;
        int petLv = 0;
        int NeedExp = 99999999;
        int NeedNumber = 0;//所需要的经验丹
        for (int i = 0; i < Sortpet.Count; i++)
        {
            int petID = Sortpet[i].ID;
            if (_DicPetBack.ContainsKey(petID))
            if (_DicPetBack.ContainsKey(petID) && _DicPetBack[petID].PetClass < Config.Instance.Get<PetInfoConfig>(petID).MaxRank)
            {
                var key = petID;
                if (petLv == 0 && _DicPetBack[key].PetClass < GetPetSkillMaxLv(key))
                int _NeedExp = PetClassCostConfig.GetPetIdAndRank(petID, _DicPetBack[petID].PetClass).UpNeedExp;
                if (_NeedExp - _DicPetBack[petID].petExp < NeedExp)
                {
                    petLv = _DicPetBack[key].PetClass;
                    GetPetId = key;
                }
                if (_DicPetBack[key].PetClass < petLv && _DicPetBack[key].PetClass < GetPetSkillMaxLv(key))
                {
                    petLv = _DicPetBack[key].PetClass;
                    GetPetId = key;
                    NeedExp = _NeedExp - _DicPetBack[petID].petExp;
                    petLv = _DicPetBack[petID].PetClass;
                    GetPetId = petID;
                    NeedNumber = Mathf.CeilToInt((float)NeedExp / PetDanExp);
                }
            }
        }
@@ -362,26 +342,14 @@
                && itemCount > 0 && CultivateRedPoint.ContainsKey(key))
            {
                CultivateRedPoint[key].state = RedPointState.Simple;
                CanEssence = true;
                return;
            }
        }
        PetInfoConfig petinfo = Config.Instance.Get<PetInfoConfig>(GetPetId);
        if (PlayerDatas.Instance.baseData.LV >= 1500)
        if (CultivateRedPoint.ContainsKey(GetPetId) && itemCount >= NeedNumber && petinfo.MaxRank > petLv)
        {
            if (CultivateRedPoint.ContainsKey(GetPetId) && itemCount > 0 && RedPointMaxLv && petinfo.MaxRank > petLv)
            {
                CultivateRedPoint[GetPetId].state = RedPointState.Simple;
                CanEssence = true;
            }
        }
        else
        {
            if (CultivateRedPoint.ContainsKey(GetPetId) && itemCount > 0 && petinfo.MaxRank > petLv)
            {
                CultivateRedPoint[GetPetId].state = RedPointState.Simple;
                CanEssence = true;
            }
            CultivateRedPoint[GetPetId].state = RedPointState.Simple;
            return;
        }
    }
System/Role/RolePanel.cs
@@ -104,7 +104,8 @@
        }
        private void OnRenameClick()
        {
            MessageWin.Inst.ShowFixedTip(Language.Get("Z1025"));
            //SysNotifyMgr.Instance.ShowTip("JadeInvestmentLimit1");
            WindowCenter.Instance.Open<RoleRenameWin>();
        }
        private void OnElixirClick()
System/Role/RoleRenameWin.cs
@@ -50,6 +50,7 @@
            if (itemConfig == null) return;
            ItemCellModel cellModel = new ItemCellModel(renameToolId, false,(ulong)GetRenameToolNum());
            itemCell.Init(cellModel);
            itemCell.countText.gameObject.SetActive(true);
            if(GetRenameToolNum() > 0)
            {
                itemCell.countText.text = StringUtility.Contact(UIHelper.GetTextColorByItemColor(TextColType.Green,GetRenameToolNum().ToString()),
@@ -120,7 +121,7 @@
              {
                  if (isOk)
                  {
                      LanguageVerify.Instance.VerifyPlayerName(renameInput.text, 0,
                      LanguageVerify.Instance.VerifyPlayerName(renameInput.text, (int)PlayerDatas.Instance.baseData.PlayerID,
                        UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName), PlayerDatas.Instance.baseData.LV,
                         PlayerDatas.Instance.baseData.VIPLv, (bool ok, string name) =>
                         {
System/RolePromote/RolePromoteWin.cs
@@ -79,8 +79,11 @@
                case PlayerDataRefresh.LV:
                case PlayerDataRefresh.LV2:
                case PlayerDataRefresh.LVEx:
                    UpdateGrade();
                    break;
                case PlayerDataRefresh.FightPower:
                    UpdateGrade();
                    DisplayFightPower();
                    break;
            }
        }
@@ -133,7 +136,7 @@
                }
            }
            scrollerController.Restart();
            m_FightPowerTxt.text = Language.Get("RolePromoteFightPower", PlayerDatas.Instance.baseData.FightPoint);
            DisplayFightPower();
        }
        void InitResourceData()
@@ -147,6 +150,11 @@
            scrollerController.Restart();
        }
        private void DisplayFightPower()
        {
            m_FightPowerTxt.text = Language.Get("RolePromoteFightPower", PlayerDatas.Instance.baseData.FightPoint);
        }
        private void UpdateGrade()
        {
            var _playerLvCfg = Config.Instance.Get<PlayerLVConfig>(PlayerDatas.Instance.baseData.LV);
System/Rune/RuneModel.cs
@@ -1105,6 +1105,40 @@
            return false;
        }
        public void IsSameRune(int id, ref List<int> sameHoles)
        {
            sameHoles.Clear();
            var _runeConfig = Config.Instance.Get<RuneConfig>(id);
            if (_runeConfig == null)
            {
                return;
            }
            for (int i = 0; i < _runeConfig.AttrType.Length; i++)
            {
                var sameHole = SameRuneHole(_runeConfig.AttrType[i]);
                if (sameHole != -1)
                {
                    sameHoles.Add(sameHole);
                }
            }
        }
        public int SameRuneHole(int type)
        {
            foreach (int key in runeHoleData.Keys)
            {
                RuneConfig _runeCfg = Config.Instance.Get<RuneConfig>(runeHoleData[key].id);
                for (int i = 0; i < _runeCfg.AttrType.Length; i++)
                {
                    if (type == _runeCfg.AttrType[i])
                    {
                        return key;
                    }
                }
            }
            return -1;
        }
        public int GetOpenTowerCnt(bool includeSpecial = false)
        {
            int Cnt = 0;
System/Rune/RunePackCell.cs
@@ -79,12 +79,32 @@
                MessageWin.Inst.ShowFixedTip(Language.Get("L1061"));
                return;
            }
            if (model.IsSameInHoleRune(_rune.id, model.sltRuneHole))
            {
                MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
                return;
            }
            var sltHoleRune = model.GetHoleRune(model.sltRuneHole);
            bool switchOtherSameHole = false;
            List<int> sameHoles = new List<int>();
            if (sltHoleRune == null || runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)
                || !runeComposeModel.m_RuneBothPropertys.Contains(_rune.id))
            {
                if (model.IsSameInHoleRune(_rune.id, model.sltRuneHole))
                {
                    MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
                    return;
                }
            }
            else
            {
                model.IsSameRune(_rune.id, ref sameHoles);
                if (sameHoles.Count > 0 && !sameHoles.Contains(model.sltRuneHole))
                {
                    MessageWin.Inst.ShowFixedTip(Language.Get("L1078"));
                    return;
                }
                if (sameHoles.Count > 1)
                {
                    switchOtherSameHole = true;
                }
            }
            if (runeComposeModel.m_RuneBothPropertys.Contains(_rune.id)
                && model.GetDoublePropLimitCount() <= model.GetCurrentDoublePropCount()
                && (sltHoleRune == null || !runeComposeModel.m_RuneBothPropertys.Contains(sltHoleRune.id)))
@@ -93,13 +113,36 @@
                SysNotifyMgr.Instance.ShowTip("RuneGridUnEnough", _count);
                return;
            }
            C073D_tagCPackItemExchange runeInlayPack = new C073D_tagCPackItemExchange();
            runeInlayPack.SrcBackpack = (byte)_rune.packtype;
            runeInlayPack.SrcIndex = (ushort)_rune.index;
            runeInlayPack.DesBackPack = (int)PackType.rptInterimPack;
            runeInlayPack.DestIndex = (ushort)model.sltRuneHole;
            GameNetSystem.Instance.SendInfo(runeInlayPack);
            WindowCenter.Instance.CloseImmediately<RunePackWin>();
            if (switchOtherSameHole)
            {
                var otherSameHole = sameHoles[0] == model.sltRuneHole ? sameHoles[1] : sameHoles[0];
                var otherRune = model.GetHoleRune(otherSameHole);
                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("SwitchDoublePropertyRune"), (bool isOk) =>
                  {
                      if (isOk)
                      {
                          SwitchRune(otherRune.packtype, otherSameHole, _rune.packtype, 0);
                          SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
                          WindowCenter.Instance.CloseImmediately<RunePackWin>();
                      }
                  });
            }
            else
            {
                SwitchRune(_rune.packtype, _rune.index, (int)PackType.rptInterimPack, model.sltRuneHole);
                WindowCenter.Instance.CloseImmediately<RunePackWin>();
            }
        }
        void SwitchRune(int srcpackType,int scrIndex,int destpackType,int destIndex)
        {
            C073D_tagCPackItemExchange pak = new C073D_tagCPackItemExchange();
            pak.SrcBackpack = (byte)srcpackType;
            pak.SrcIndex = (ushort)scrIndex;
            pak.DesBackPack = (byte)destpackType;
            pak.DestIndex = (ushort)destIndex;
            GameNetSystem.Instance.SendInfo(pak);
        }
    }
}
System/Store/Logic/BuyEquipTip.cs
@@ -540,6 +540,16 @@
                washAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    washAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 4;
            washAttr.SetActive(true);
            washTitleText.text = Language.Get("EquipWin_WashPropObj_Text_1");
@@ -552,6 +562,16 @@
            {
                gemAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    gemAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 5;
            gemAttr.SetActive(true);
@@ -626,6 +646,16 @@
                suitAttr.SetActive(false);
                return;
            }
            switch (itemAttrData.itemConfig.EquipPlace)
            {
                case 101:
                case 102:
                case 103:
                case 104:
                case 105:
                    suitAttr.SetActive(false);
                    return;
            }
            curAttrTypeNum = 6;
        }
System/Store/StoreModel.cs
@@ -1059,6 +1059,7 @@
        }
    }
    public void ClearPetAndMountRedpoint(StoreConfig storeConfig)
    {
        ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(storeConfig.ItemID);
@@ -1074,7 +1075,23 @@
                }
                break;
        }
    }
    public void ClearAllPetAndMountRedpoint(StoreFunc storeFunc)
    {
        if (storeFuncType == StoreFunc.BindStore && storeFunc != StoreFunc.BindStore)
        {
            foreach(var key in shopRedDict.Keys)
            {
                if(shopRedDict[key].state != RedPointState.None)
                {
                    string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId",key);
                    shopRedDict[key].state = RedPointState.None;
                    LocalSave.SetBool(record, false);
                }
            }
        }
    }
    #endregion
System/Store/StoreWin.cs
@@ -146,6 +146,8 @@
        protected override void OnPreClose()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.WeekStore);
            m_storeModel.storeFuncType = StoreFunc.WeekStore;
            m_storeModel.shoplist.Clear();
            m_storeModel.RefreshBuyShopLimitEvent -= OnCreate;
            GlobalTimeEvent.Instance.secondEvent -= RefreshResetTime;
@@ -432,6 +434,7 @@
        private void OnClickIntegralStore()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.IntegralStore);
            m_storeModel.shoplist.Clear();
            m_storeModel.storeFuncType = StoreFunc.IntegralStore;
            OnCreate();
@@ -441,6 +444,7 @@
        private void OnClickBindStore()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.BindStore);
            m_storeModel.shoplist.Clear();
            m_storeModel.storeFuncType = StoreFunc.BindStore;
            OnCreate();
@@ -450,6 +454,7 @@
        private void OnClickStrengthStore()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.GrowStrongerStore);
            m_storeModel.shoplist.Clear();
            m_storeModel.storeFuncType = StoreFunc.GrowStrongerStore;
            OnCreate();
@@ -459,6 +464,7 @@
        private void OnClickCommonStore()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.CommonStore);
            m_storeModel.shoplist.Clear();
            m_storeModel.storeFuncType = StoreFunc.CommonStore;
            OnCreate();
@@ -468,6 +474,7 @@
        private void OnClickWeekStore()
        {
            m_storeModel.ClearAllPetAndMountRedpoint(StoreFunc.WeekStore);
            m_storeModel.storeFuncType = StoreFunc.WeekStore;
            OnCreate();
            RefreshResetTime();
System/Strengthening/EquipWashModel.cs
@@ -44,9 +44,13 @@
    public delegate void OnRefreshWashModel();
    public event OnRefreshWashModel RefreshWashModelEvent;
    public int[] washGroups1 { get; private set; }
    public int[] washGroups2 { get; private set; }
    public int[] washGroups3 { get; private set; }
    private Dictionary<int, WashProCount> washEquipProDict = new Dictionary<int, WashProCount>();
    private FuncConfigConfig funcModel;
    private Dictionary<int, int> _equipWashLimitDict;
    private Dictionary<int, Dictionary<int, int>> _equipWashLimitDict = new Dictionary<int, Dictionary<int, int>>();
    private List<WashProCount> orderWashProlist = new List<WashProCount>();
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack
@@ -88,10 +92,31 @@
    public override void Init()
    {
        _equipWashLimitDict = null;
        funcModel = Config.Instance.Get<FuncConfigConfig>("EquipWashMaxLV");
        if (funcModel != null)
            _equipWashLimitDict = ConfigParse.GetDic<int, int>(funcModel.Numerical1);
        _equipWashLimitDict.Clear();
        FuncConfigConfig washGroup1Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup1");
        FuncConfigConfig washGroup2Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup2");
        FuncConfigConfig washGroup3Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup3");
        washGroups1 = ConfigParse.GetMultipleStr<int>(washGroup1Model.Numerical1);
        washGroups2 = ConfigParse.GetMultipleStr<int>(washGroup2Model.Numerical1);
        washGroups3 = ConfigParse.GetMultipleStr<int>(washGroup3Model.Numerical1);
        SetEquipWashMaxLV(washGroups1, washGroup1Model.Numerical2);
        SetEquipWashMaxLV(washGroups2, washGroup2Model.Numerical2);
        SetEquipWashMaxLV(washGroups3, washGroup3Model.Numerical2);
    }
    private void SetEquipWashMaxLV(int[] groups,string limit)
    {
        Dictionary<int,int> limitDict = ConfigParse.GetDic<int, int>(limit);
        if (groups != null && limitDict != null)
        {
            for (int i = 0; i < groups.Length; i++)
            {
                if (!_equipWashLimitDict.ContainsKey(groups[i]))
                {
                    _equipWashLimitDict.Add(groups[i], limitDict);
                }
            }
        }
    }
    public override void UnInit()
@@ -302,28 +327,22 @@
    //得到洗练群组类型
    public int OnGetWashType(int itemPlace)
    {
        FuncConfigConfig washGroup1Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup1");
        FuncConfigConfig washGroup2Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup2");
        FuncConfigConfig washGroup3Model = Config.Instance.Get<FuncConfigConfig>("EquipWashGroup3");
        int[] _equipPlacelist1 = ConfigParse.GetMultipleStr<int>(washGroup1Model.Numerical1);
        int[] _equipPlacelist2 = ConfigParse.GetMultipleStr<int>(washGroup2Model.Numerical1);
        int[] _equipPlacelist3 = ConfigParse.GetMultipleStr<int>(washGroup3Model.Numerical1);
        int i = 0;
        for (i = 0; i < _equipPlacelist1.Length; i++)
        for (i = 0; i < washGroups1.Length; i++)
        {
            if (_equipPlacelist1[i] == itemPlace)
            if (washGroups1[i] == itemPlace)
                return 1;
        }
        for (i = 0; i < _equipPlacelist2.Length; i++)
        for (i = 0; i < washGroups2.Length; i++)
        {
            if (_equipPlacelist2[i] == itemPlace)
            if (washGroups2[i] == itemPlace)
                return 2;
        }
        for (i = 0; i < _equipPlacelist3.Length; i++)
        for (i = 0; i < washGroups3.Length; i++)
        {
            if (_equipPlacelist3[i] == itemPlace)
            if (washGroups3[i] == itemPlace)
                return 3;
        }
        return 0;
@@ -391,16 +410,31 @@
    /// </summary>
    /// <param name="equipLv"></param>
    /// <returns></returns>
    public int GetWashFullLv(int equipLv)
    public int GetWashFullLv(int equipPlace,int equipLv)
    {
        if (_equipWashLimitDict == null)
            return 0;
        if (_equipWashLimitDict.ContainsKey(equipLv))
            return _equipWashLimitDict[equipLv];
        else
            return 0;
        if (_equipWashLimitDict.ContainsKey(equipPlace))
        {
            if(_equipWashLimitDict[equipPlace].ContainsKey(equipLv))
            {
                return _equipWashLimitDict[equipPlace][equipLv];
            }
        }
        return 0;
    }
    public int GetEquipWashMinLv(int equipPlace)
    {
        if (_equipWashLimitDict.ContainsKey(equipPlace))
        {
            List<int> lvlist = _equipWashLimitDict[equipPlace].Keys.ToList();
            if (lvlist != null && lvlist.Count > 0)
            {
                return lvlist[0];
            }
        }
        return 0;
    }
    /// <summary>
    /// 判断当前装备是否洗练满阶
@@ -413,7 +447,7 @@
            return false;
        chinItemModel = Config.Instance.Get<ItemConfig>((int)model.itemInfo.ItemID);
        int fullLv = GetWashFullLv(chinItemModel.LV);
        int fullLv = GetWashFullLv(chinItemModel.EquipPlace,chinItemModel.LV);
        if (washPro.XLAttrLV == fullLv)
        {
            if (washPro.proValuelist[0].XLAttrValue < tagEquipWash.attMax1)
@@ -443,41 +477,37 @@
    public bool IsCanWash(ItemModel model)
    {
        if (model == null || _equipWashLimitDict == null)
        if (model == null)
            return false;
        chinItemModel = Config.Instance.Get<ItemConfig>((int)model.itemInfo.ItemID);
        int[] equipLvs = _equipWashLimitDict.Keys.ToArray();
        if (chinItemModel.LV >= equipLvs[0])
        if(chinItemModel.LV >= GetEquipWashMinLv(chinItemModel.EquipPlace))
        {
            return true;
        else
            return false;
    }
    public int WashMinLV()
    {
        if (_equipWashLimitDict == null)
            return -1;
        int[] equipLvs = _equipWashLimitDict.Keys.ToArray();
        return equipLvs[0];
        }
        return false;
    }
    /// <summary>
    /// 得到装备位最大洗练等级
    /// </summary>
    /// <returns></returns>
    public int GetMaxWashLv()
    public int GetMaxWashLv(int equipPlace)
    {
        if (_equipWashLimitDict == null)
            return 0;
        int[] washLvs = _equipWashLimitDict.Values.ToArray();
        return washLvs[washLvs.Length - 1];
        if (_equipWashLimitDict.ContainsKey(equipPlace))
        {
            List<int> washLvlist = _equipWashLimitDict[equipPlace].Values.ToList();
            if (washLvlist != null && washLvlist.Count > 0)
            {
                return washLvlist[washLvlist.Count - 1];
            }
        }
        return 0;
    }
    public string GetCurWashLvStr(WashProCount washPro, EquipWashConfig tagEquipWash)
    {
        int maxWashLv = GetMaxWashLv();
        int maxWashLv = GetMaxWashLv(washPro.EquipPlace);
        if (washPro.XLAttrLV < maxWashLv)
        {
System/Strengthening/GodBeastAttributes.cs
@@ -40,6 +40,9 @@
        [SerializeField] Button m_StrengthenDoubleBtn;//双倍强化按钮
        [SerializeField] Text m_NeedFairy;//所需的仙玉
        [SerializeField] GameObject m_BottomBox;
        [SerializeField] Text m_Text_Attributes3;
        [SerializeField] Text m_Text_Attributes4;
        DogzModel Dogz_model;
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        PlayerPackModel _playerPack;
@@ -72,6 +75,8 @@
            }
            GodBeastReinforcementWin.ChooseToModify += ChooseToModify;
            godBeastModel.AbsorbEvent += AbsorbEvent;
            m_Text_Attributes3.gameObject.SetActive(false);
            m_Text_Attributes4.gameObject.SetActive(false);
        }
        private void OnDisable()
        {
@@ -286,6 +291,8 @@
                m_FullLevel.SetActive(false);
                m_UIAlphaTween.gameObject.SetActive(false);
                m_BottomBox.SetActive(false);
                m_Text_Attributes3.gameObject.SetActive(false);
                m_Text_Attributes4.gameObject.SetActive(false);
            }
        }
@@ -327,7 +334,8 @@
                }
                else
                {
                    m_Text_Attributes3.gameObject.SetActive(false);
                    m_Text_Attributes4.gameObject.SetActive(false);
                    m_StrengthenDoubleBtn.interactable = true;
                    m_StrengthenBtn.interactable = true;
                    m_Text_two.SetActive(true);
@@ -348,6 +356,8 @@
            }
            else
            {
                m_Text_Attributes3.gameObject.SetActive(false);
                m_Text_Attributes4.gameObject.SetActive(false);
                if (m_DoubleToggle.isOn)
                {
                    m_StrengthenBtn.gameObject.SetActive(false);
@@ -596,25 +606,28 @@
        }
        private void FullLevelAttributes()//设置满级属性
        {
            m_TextAttributes1.gameObject.SetActive(false);
            m_TextAttributesAdd1.gameObject.SetActive(false);
            m_TextAttributes2.gameObject.SetActive(false);
            m_TextAttributesAdd2.gameObject.SetActive(false);
            var DogzEquipConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(GodBeastPart, DogZLv);
            int[] AttType = ConfigParse.GetMultipleStr<int>(DogzEquipConfig.attType);
            int[] AttValue = ConfigParse.GetMultipleStr<int>(DogzEquipConfig.attValue);
            m_TextAttributesAdd1.gameObject.SetActive(false);
            m_TextAttributesAdd2.gameObject.SetActive(false);
            if (AttType.Length > 1)
            {
                m_TextAttributes1.gameObject.SetActive(true);
                m_TextAttributes2.gameObject.SetActive(true);
                m_Text_Attributes3.gameObject.SetActive(true);
                m_Text_Attributes4.gameObject.SetActive(true);
                string StrName1 = Config.Instance.Get<PlayerPropertyConfig>(AttType[0]).Name;
                string StrName2 = Config.Instance.Get<PlayerPropertyConfig>(AttType[1]).Name;
                m_TextAttributes1.text = StrName1 + ":" + AttValue[0];
                m_TextAttributes2.text = StrName2 + ":" + AttValue[1];
                m_Text_Attributes3.text = StrName1 + ":" + AttValue[0];
                m_Text_Attributes4.text = StrName2 + ":" + AttValue[1];
            }
            else
            {
                m_TextAttributes2.gameObject.SetActive(false);
                m_Text_Attributes3.gameObject.SetActive(true);
                m_Text_Attributes4.gameObject.SetActive(false);
                string StrName1 = Config.Instance.Get<PlayerPropertyConfig>(AttType[0]).Name;
                m_TextAttributes1.text = StrName1 + ":" + AttValue[0];
                m_Text_Attributes3.text = StrName1 + ":" + AttValue[0];
            }
        }
    }
System/Strengthening/GodBeastEntry.cs
@@ -17,7 +17,7 @@
        [SerializeField] GameObject m_Selectedbar_Image;
        [SerializeField] Text m_Item_Text;
        [SerializeField] Button m_GodBeastButton;
        [SerializeField] RedpointBehaviour m_RedPoint;
        public Button GodBeastButton
        {
            get { return m_GodBeastButton; }
@@ -25,7 +25,8 @@
        }
        DogzModel Dogz_model;
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
        GodBeastModel godBeastModel { get { return ModelCenter.Instance.GetModel<GodBeastModel>(); } }
        public void GetGodBeastLocationMarker(int locationMarker, int currentlySelected)
        {
            int godBeastNumber = locationMarker % 100;//神兽编号
@@ -38,6 +39,10 @@
                    if (itemModel[i].EquipPlace == godBeastPart)
                    {
                        ItemCellModel ItemModel = new ItemCellModel(itemModel[i].itemId, true, 0, 0);//不显示绑定
                        if (godBeastModel.GodBeastRedPointDic.ContainsKey(itemModel[i].itemInfo.ItemPlace))
                        {
                            m_RedPoint.redpointId = godBeastModel.GodBeastRedPointDic[(itemModel[i].itemInfo.ItemPlace)].id;
                        }
                        m_itemCell.Init(ItemModel);
                        var itemConfig = Config.Instance.Get<ItemConfig>(itemModel[i].itemId);
                        var IudetDogzEquipPlus = itemModel[i].GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 神兽装备强化信息列表 [强化等级, 强化熟练度]
System/Strengthening/GodBeastModel.cs
@@ -23,6 +23,8 @@
    DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
    public Dictionary<int, Redpoint> GodBeastRedPointDic = new Dictionary<int, Redpoint>();//key装备位置下标(红点)
    private List<int> RedPointLIst = new List<int>();
    private const int Redpoint_key1 = 11202;//神兽强化红点
    public Redpoint redPointStre1 = new Redpoint(112, Redpoint_key1);
    public override void Init()
@@ -45,11 +47,22 @@
        playerPack.ItemCntReduceAct -= ItemCntReduceAct;
        dogz_model.UpdateAssistDogzEvent -= UpdateAssistDogzEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent -= MakeItemAnswerEvent;
        DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent += MakeItemAnswerEvent;
        playerPack.ItemCntAddAct += ItemCntAddAct;//物品数量增加
        playerPack.ItemCntReduceAct += ItemCntReduceAct;//物品数量减少
        dogz_model.UpdateAssistDogzEvent += UpdateAssistDogzEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        SetRedPointID();
        GodBeastRedPoint();
    }
    private void MakeItemAnswerEvent(H0721_tagMakeItemAnswer obj)
    {
        if ((int)obj.MakeType == (int)MakeType.Def_mitDogzEquipPlus)
        {
            GodBeastRedPoint();
        }
    }
    private void OnFuncStateChangeEvent(int obj)
@@ -62,6 +75,11 @@
    private void UpdateAssistDogzEvent()
    {
        foreach (var key in GodBeastRedPointDic.Keys)
        {
            GodBeastRedPointDic[key].state = RedPointState.None;
        }
        SetRedPointID();
        GodBeastRedPoint();
    }
@@ -200,7 +218,7 @@
                    if (_IudetDogzEquipPlus != null)
                    {
                        SingleProficiency += _IudetDogzEquipPlus[1];
                        DoubleProficiency += item_Model.chinItemModel.EffectValueA1+ _IudetDogzEquipPlus[1];
                        DoubleProficiency += item_Model.chinItemModel.EffectValueA1 + _IudetDogzEquipPlus[1];
                    }
                    else
                    {
@@ -233,12 +251,93 @@
        }
    }
    private void SetRedPointID()//设置红点ID
    {
        GodBeastRedPointDic.Clear();
        RedPointLIst.Clear();
        var DogzEquipDict = dogz_model.dogzAssistStateDict;
        foreach (var key in DogzEquipDict.Keys)
        {
            if (DogzEquipDict[key] == 1)
            {
                List<ItemModel> itemModel = dogz_model.GetDogzEquips(key);
                for (int i = 0; i < itemModel.Count; i++)
                {
                    int IndexId = itemModel[i].itemInfo.ItemPlace;
                    int RedPoint = Redpoint_key1 * 1000 + IndexId;
                    Redpoint redPointStare = new Redpoint(Redpoint_key1, RedPoint);
                    if (!GodBeastRedPointDic.ContainsKey(IndexId))
                    {
                        GodBeastRedPointDic.Add(IndexId, redPointStare);
                        RedPointLIst.Add(IndexId);
                    }
                }
            }
        }
        RedPointLIst.Sort(Compare);
    }
    int Compare(int x, int y)
    {
        ItemModel IindexitemModelx = playerPack.GetItemModelByIndex(PackType.rptDogzEquip, x);
        ItemModel IindexitemModely = playerPack.GetItemModelByIndex(PackType.rptDogzEquip, y);
        if (IindexitemModelx.chinItemModel.ItemColor.CompareTo(IindexitemModely.chinItemModel.ItemColor) != 0)//品质
        {
            return -IindexitemModelx.chinItemModel.ItemColor.CompareTo(IindexitemModely.chinItemModel.ItemColor);
        }
        if (IindexitemModelx.chinItemModel.StarLevel.CompareTo(IindexitemModely.chinItemModel.StarLevel) != 0)//星级
        {
            return -IindexitemModelx.chinItemModel.StarLevel.CompareTo(IindexitemModely.chinItemModel.StarLevel);
        }
        if (IindexitemModelx.chinItemModel.EquipPlace.CompareTo(IindexitemModely.chinItemModel.EquipPlace) != 0)//装备位
        {
            return IindexitemModelx.chinItemModel.EquipPlace.CompareTo(IindexitemModely.chinItemModel.EquipPlace);
        }
        if (GetLV(IindexitemModelx).CompareTo(GetLV(IindexitemModely)) != 0)//强化等级
        {
            return -GetLV(IindexitemModelx).CompareTo(GetLV(IindexitemModely));
        }
        if (GetProficiency(IindexitemModelx).CompareTo(GetProficiency(IindexitemModely)) != 0)//熟练度
        {
            return -GetProficiency(IindexitemModelx).CompareTo(GetProficiency(IindexitemModely));
        }
        if (IindexitemModelx.equipScore.CompareTo(IindexitemModely.equipScore) != 0)//装备评分
        {
            return -IindexitemModelx.equipScore.CompareTo(IindexitemModely.equipScore);
        }
        return 1;
    }
    private int GetLV(ItemModel _ItemModel)
    {
        var IudetDogzEquipPlus = _ItemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
        if (IudetDogzEquipPlus != null)
        {
            return IudetDogzEquipPlus[0];
        }
        return 0;
    }
    private int GetProficiency(ItemModel _ItemModel)
    {
        var IudetDogzEquipPlus = _ItemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
        if (IudetDogzEquipPlus != null)
        {
            return IudetDogzEquipPlus[1];
        }
        return 0;
    }
    public int IndexId = 0;
    private void GodBeastRedPoint()//神兽强化红点
    {
        bool Istrue = false;
        bool IsRedPoint = false;
        int ItemColor = 10;
        var DogzEquipDict = dogz_model.dogzAssistStateDict;
        redPointStre1.state = RedPointState.None;
        IndexId = 0;
        foreach (var key in GodBeastRedPointDic.Keys)
        {
            GodBeastRedPointDic[key].state = RedPointState.None;
        }
        int Type = 0;
        foreach (var key in DogzEquipDict.Keys)
        {
@@ -278,25 +377,55 @@
                        var itemModelBack = BackpackDic[keyBack];
                        if (itemModelBack.chinItemModel.Type == 70)//有神兽水晶时的红点
                        {
                            redPointStre1.state = RedPointState.Simple;
                            return;
                            IsRedPoint = true;
                        }
                        if (itemModelBack.chinItemModel.ItemColor < _ItemColor)
                        {
                            _ItemColor = itemModelBack.chinItemModel.ItemColor;
                        }
                    }
                    if (Type >= dogz_model.curSumAssistNum && ItemColor> _ItemColor)//出战神兽已满,且神兽背包有品质低于已助战神兽品质颜色时
                    if (Type >= dogz_model.curSumAssistNum && ItemColor > _ItemColor)//出战神兽已满,且神兽背包有品质低于已助战神兽品质颜色时
                    {
                        redPointStre1.state = RedPointState.Simple;
                        return;
                        IsRedPoint = true;
                    }
                }
            }
        }
        if (IsRedPoint)
        {
            int Lv = 100;
            for (int i = 0; i < RedPointLIst.Count; i++)
            {
                ItemModel _itemModel = playerPack.GetItemModelByIndex(PackType.rptDogzEquip, RedPointLIst[i]);
               int MaxLv= QualityLimit[_itemModel.chinItemModel.ItemColor];//获取最大强化等级
                var _IudetDogzEquipPlus = _itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
                if (_IudetDogzEquipPlus != null)
                {
                    if (_IudetDogzEquipPlus[0]<MaxLv && _IudetDogzEquipPlus[0] < Lv)
                    {
                        Lv = _IudetDogzEquipPlus[0];
                        IndexId = RedPointLIst[i];
                    }
                }
                else
                {
                    if (0 < Lv)
                    {
                        Lv = 0;
                        IndexId = RedPointLIst[i];
                    }
                }
            }
            if (GodBeastRedPointDic.ContainsKey(IndexId))
            {
                GodBeastRedPointDic[IndexId].state = RedPointState.Simple;
            }
        }
    }
    public bool  IsNeedEquipment()//是否有极品装备需要弹框
    public bool IsNeedEquipment()//是否有极品装备需要弹框
    {
        bool IsBool = false;
        foreach (var key in Absorption_Dic.Keys)
@@ -309,7 +438,7 @@
                    IsBool = true;
                }
            }
        }
        return IsBool;
    }
System/Strengthening/GodBeastReinforcementWin.cs
@@ -3,6 +3,7 @@
//    [  Date ]:           Thursday, August 16, 2018
//--------------------------------------------------------
using EnhancedUI.EnhancedScroller;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -40,22 +41,24 @@
        private List<GodBeastClass> GodBeastList = new List<GodBeastClass>();
        private int CurrentlySelected = 0;
        private int JumpIndex = 0;
        public int Offset = 0;//偏移量
        #region Built-in
        protected override void BindController()
        {
        {
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
        }
        protected override void AddListeners()
        {
        {
        }
        protected override void OnPreOpen()
        {
            CurrentlySelected = 0;
            GetGodBeast();//获取神兽强化装备信息
            m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
            if (godBeastModel.ItemPlace != -1)
            if (godBeastModel.ItemPlace != -1)//装备强化跳转选中
            {
                for (int i = 0; i < GodBeastList.Count; i++)
                {
@@ -74,23 +77,45 @@
            }
            else
            {
                if (GodBeastList.Count > 0)
                if (godBeastModel.redPointStre1.state == RedPointState.Simple)//强化红点选中
                {
                    CurrentlySelected = GodBeastList[0].LocationMarker;
                    GetDogZBagIndex();
                    JumpIndex = 0;
                    for (int i = 0; i < GodBeastList.Count; i++)
                    {
                        if (GodBeastList[i].ItemPlace == godBeastModel.IndexId)
                        {
                            JumpIndex = i;
                            CurrentlySelected = GodBeastList[i].LocationMarker;
                            GetDogZBagIndex();
                        }
                    }
                }
                else
                {
                    if (GodBeastList.Count > 0)//默认选中个
                    {
                        CurrentlySelected = GodBeastList[0].LocationMarker;
                        GetDogZBagIndex();
                        JumpIndex = 0;
                    }
                }
            }
            OnCreateGridLineCell(m_ScrollerController);
            m_GodBeastSlidingList.Init();
            m_GodBeastAttributes.Init();
            m_GodBeastAttributes.GetGodBeastLocationMarker(CurrentlySelected);
            m_ScrollerController.JumpIndex(JumpIndex);
        }
        protected override void OnActived()
        {
            var offset = 0f;
            m_ScrollerController.JumpIndex(JumpIndex,ref offset);
            m_ScrollerController.JumpIndex(Offset + offset, 0, EnhancedScroller.TweenType.immediate);
        }
        protected override void OnAfterOpen()
        {
            playerPack.RefreshItemCountAct += RefreshItemCountAct;
@@ -102,7 +127,6 @@
            JumpIndex = 0;
            godBeastModel.ItemPlace = -1;
            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
            m_ScrollerController.OnRefreshCell -= OnRefreshGridCell;
            DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent -= MakeItemAnswerEvent;
        }
System/Strengthening/GodBeastSlidingList.cs
@@ -45,7 +45,10 @@
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
        GodBeastModel godBeastModel { get { return ModelCenter.Instance.GetModel<GodBeastModel>(); } }
        private void Awake()
        {
        }
        private void Start()
        {
            m_Arrow.AddListener(OnClickArrow);
@@ -132,6 +135,7 @@
        public void Init()
        {
            Quality = 10;
            LINE = Mathf.CeilToInt((float)100 / 3);
            ContentSelect(Quality);
            if (m_ScrollViewFirst.activeSelf)
            {
@@ -303,7 +307,7 @@
                        else
                        {
                            return;
                        }
                        }
                    }
                }
            }
@@ -381,12 +385,19 @@
            int childCode = 0;
            for (childCode = 0; childCode < cell.transform.childCount; childCode++)
            {
                GodBeastChildNodes GodBeastChildNodes = cell.transform.GetChild(childCode).GetComponent<GodBeastChildNodes>();
                int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
                if (cellCount > 100)
                {
                    GodBeastChildNodes.gameObject.SetActive(false);
                    continue;
                }
                GodBeastChildNodes.gameObject.SetActive(true);
                GodBeastChildNodes.ItemCell.gameObject.SetActive(false);
                GodBeastChildNodes.ChoosenImg.SetActive(false);
                GodBeastChildNodes.TextNumber.gameObject.SetActive(false);
                GodBeastChildNodes.NumberNow.gameObject.SetActive(false);
                int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1);
                GodBeastChildNodes.ButtonDown.RemoveAllListeners();
                if (cellCount - 1 < GodBeastBagList.Count)
                {
@@ -401,7 +412,7 @@
                    if (godBeastModel.Absorption_Dic.ContainsKey(godBeastBagClass.Index))
                    {
                        GodBeastChildNodes.ChoosenImg.SetActive(true);
                        if (itemModel.EquipPlace <= 0)
                        if (itemModel.EquipPlace <= 0 && itemModel.itemInfo.ItemCount>1)
                        {
                            GodBeastChildNodes.NumberNow.gameObject.SetActive(true);
                            GodBeastChildNodes.NumberNow.text = godBeastModel.Absorption_Dic[godBeastBagClass.Index].ToString();
@@ -424,9 +435,26 @@
                        }
                        else//选中的物品为水晶
                        {
                            godBeastModel.Crystal_ItemModel = itemModel;
                            godBeastModel.ItemInde = godBeastBagClass.Index;
                            WindowCenter.Instance.Open<CrystalSelectionWin>();
                            if (itemModel.itemInfo.ItemCount <= 1)
                            {
                                if (godBeastModel.Absorption_Dic.ContainsKey(godBeastBagClass.Index))
                                {
                                    godBeastModel.Absorption_Dic.Remove(godBeastBagClass.Index);
                                }
                                else
                                {
                                    godBeastModel.Absorption_Dic.Add(godBeastBagClass.Index, 1);
                                }
                                m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
                            }
                            else
                            {
                                godBeastModel.Crystal_ItemModel = itemModel;
                                godBeastModel.ItemInde = godBeastBagClass.Index;
                                WindowCenter.Instance.Open<CrystalSelectionWin>();
                            }
                        }
                        godBeastModel.AbsorbEventUpdate();
                    });
System/Strengthening/WashTips.cs
@@ -490,14 +490,14 @@
                {
                    if (equipWashModel.IsWashFull(_itemModel, _washProModel, _tagWashModel))
                    {
                        if(_washProModel.XLAttrLV  >= equipWashModel.GetMaxWashLv()
                            && _washProModel.XLAttrLV <= equipWashModel.GetWashFullLv(_itemModel.chinItemModel.LV))
                        if(_washProModel.XLAttrLV  >= equipWashModel.GetMaxWashLv(_itemModel.chinItemModel.EquipPlace)
                            && _washProModel.XLAttrLV <= equipWashModel.GetWashFullLv(_itemModel.chinItemModel.EquipPlace, _itemModel.chinItemModel.LV))
                        {
                            _washFullLvText.text = Language.Get("WashLevelFulled");
                        }
                        else
                        {
                            _washFullLvText.text = Language.Get("EquipWash113", _itemModel.chinItemModel.LV, equipWashModel.GetWashFullLv(_itemModel.chinItemModel.LV));
                            _washFullLvText.text = Language.Get("EquipWash113", _itemModel.chinItemModel.LV, equipWashModel.GetWashFullLv(_itemModel.chinItemModel.EquipPlace, _itemModel.chinItemModel.LV));
                        }
                        ObjHideOrShow(false, false, false, false, true);
                    }
@@ -536,7 +536,7 @@
            }
            else
            {
                _washFullLvText.text = Language.Get("EquipWash114", equipWashModel.WashMinLV());
                _washFullLvText.text = Language.Get("EquipWash114", equipWashModel.GetEquipWashMinLv(_itemModel.chinItemModel.EquipPlace));
                ObjHideOrShow(false, false, false, false, true);
            }
System/Team/MyTeamWin.cs
@@ -412,7 +412,7 @@
            m_MatchState.text = model.isMatching ? Language.Get("StopMatching") : Language.Get("TeamListAutoMatching");
            if (model.isMatching)
            {
                m_MatchingCoolDown.Begin(model.matchingEndTime);
                m_MatchingCoolDown.Begin((int)(model.matchingEndTime - DateTime.Now).TotalSeconds);
            }
            else
            {
System/Tip/ItemConfirmWin.cs
@@ -77,7 +77,21 @@
        private void ShowItemGetPath()
        {
            ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(ConfirmCancel.generalItemId);
            ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(ConfirmCancel.generalItemId);
            if(itemConfig != null)
            {
                if(itemConfig.GetWay != null && itemConfig.GetWay.Length > 0)
                {
                    ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(ConfirmCancel.generalItemId);
                }
                else
                {
                    ItemAttrData attrData = new ItemAttrData(ConfirmCancel.generalItemId);
                    var tipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>();
                    tipsModel.SetItemTipsModel(attrData);
                }
            }
        }
    }
System/Treasure/TreasureData.cs
@@ -83,6 +83,8 @@
            get; private set;
        }
        public int autoSelectPotential { get; set; }
        Dictionary<int, List<TreasurePotential>> jobToPotentials = new Dictionary<int, List<TreasurePotential>>();
        public List<TreasurePotential> potentials
@@ -197,6 +199,23 @@
            }
        }
        public TreasurePotential GetPotentialByIndex(int index)
        {
            if (potentials == null)
            {
                return null;
            }
            else
            {
                if (index >= 0 && index < potentials.Count)
                {
                    return potentials[index];
                }
                return null;
            }
        }
        public void UpdatePotentialLevel(int _potentialId, int _level)
        {
            for (int i = 0; i < potentials.Count; i++)
System/Treasure/TreasureLevelUpWin.cs
@@ -58,6 +58,8 @@
        [SerializeField] FairyTreasureCollectPanel m_TreasureFairyBehaviour;
        [SerializeField] RectTransform m_ContainerSelect;
        [SerializeField] Image m_LeftRedpoint;
        [SerializeField] Image m_RightRedpoint;
        [SerializeField] Button m_LeftBtn;
        [SerializeField] Button m_RightBtn;
        [SerializeField] Button m_BackBtn;
@@ -342,6 +344,11 @@
            m_RightBtn.gameObject.SetActive(_leftRifht != null);
            _leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure - 1);
            m_LeftBtn.gameObject.SetActive(_leftRifht != null);
            var skillLevelUpRedpointTreasure = model.GetSkillLevelUpRedpointTreasure();
            m_LeftRedpoint.gameObject.SetActive(skillLevelUpRedpointTreasure != 0
                && model.selectedTreasure > skillLevelUpRedpointTreasure && model.currentCategory == TreasureCategory.Human);
            m_RightRedpoint.gameObject.SetActive(skillLevelUpRedpointTreasure != 0
                && model.selectedTreasure < skillLevelUpRedpointTreasure && model.currentCategory == TreasureCategory.Human);
        }
        private void HideHuman()
@@ -1196,6 +1203,14 @@
                    UpdateLevelUpSfx(false);
                }
            }
            if (_id == TreasureModel.CATEGORY_REDPOINTIDS[(int)TreasureCategory.Human - 1])
            {
                var skillLevelUpRedpointTreasure = model.GetSkillLevelUpRedpointTreasure();
                m_LeftRedpoint.gameObject.SetActive(skillLevelUpRedpointTreasure != 0
                    && model.selectedTreasure > skillLevelUpRedpointTreasure && model.currentCategory == TreasureCategory.Human);
                m_RightRedpoint.gameObject.SetActive(skillLevelUpRedpointTreasure != 0
                    && model.selectedTreasure < skillLevelUpRedpointTreasure && model.currentCategory == TreasureCategory.Human);
            }
        }
        protected override void LateUpdate()
System/Treasure/TreasureModel.cs
@@ -662,10 +662,7 @@
                    {
                        potentialLevelChangeEvent(key, config.SkillTypeID);
                    }
                    if (FuncOpen.Instance.IsFuncOpen(82))
                    {
                        UpdateSkillLevelUpRedpoint(treasure.id);
                    }
                    UpdateSkillLevelUpRedpoints();
                    break;
                }
            }
@@ -819,14 +816,102 @@
        private void UpdateSkillLevelUpRedpoints()
        {
            var list = GetTreasureCategory(TreasureCategory.Human);
            for (int i = 0; i < list.Count; i++)
            {
                var id = list[i];
                if (treasures[id].skillLevelUpRedpoint != null)
                {
                    treasures[id].skillLevelUpRedpoint.state = RedPointState.None;
                }
            }
            var functionOpen = FuncOpen.Instance.IsFuncOpen(82);
            if (functionOpen)
            {
                foreach (var id in treasures.Keys)
                for (int k = 0; k < 3; k++)
                {
                    UpdateSkillLevelUpRedpoint(id);
                    for (int i = 0; i < list.Count; i++)
                    {
                        var treasure = treasures[list[i]];
                        if (k < treasure.potentials.Count)
                        {
                            var potential = treasure.potentials[k];
                            Item item;
                            if (SatisfyLevelUpUnlock(list[i], k)
                                && SatisyPotentialLevelUp(list[i], potential.id, out item))
                            {
                                treasure.skillLevelUpRedpoint.state = RedPointState.Simple;
                                treasure.autoSelectPotential = k;
                                return;
                            }
                        }
                    }
                }
                int minCostTreasure = 0;
                int minCostPotentialIndex = 0;
                int minCostItemColor = 0;
                int minCostItemCount = 0;
                bool step = false;
                for (int i = 0; i < list.Count; i++)
                {
                    var treasure = treasures[list[i]];
                    if (treasure.state != TreasureState.Collected || !treasure.IsHighestStage)
                    {
                        continue;
                    }
                    for (int k = 0; k < treasure.potentials.Count; k++)
                    {
                        Item item;
                        if (SatisyPotentialLevelUp(treasure.id, treasure.potentials[k].id, out item))
                        {
                            if (item.id != 0)
                            {
                                var itemConfig = Config.Instance.Get<ItemConfig>(item.id);
                                var itemColor = itemConfig.ItemColor;
                                if (minCostItemColor == 0 || itemColor < minCostItemColor ||
                                    (itemColor == minCostItemColor && minCostItemCount < item.count))
                                {
                                    minCostItemColor = itemColor;
                                    minCostItemCount = item.count;
                                    minCostTreasure = treasure.id;
                                    minCostPotentialIndex = k;
                                }
                            }
                            else
                            {
                                minCostTreasure = treasure.id;
                                minCostPotentialIndex = k;
                                step = true;
                                break;
                            }
                        }
                    }
                    if (step)
                    {
                        break;
                    }
                }
                if (minCostTreasure != 0)
                {
                    treasures[minCostTreasure].skillLevelUpRedpoint.state = RedPointState.Simple;
                    treasures[minCostTreasure].autoSelectPotential = minCostPotentialIndex;
                }
            }
        }
        public int GetSkillLevelUpRedpointTreasure()
        {
            var list = GetTreasureCategory(TreasureCategory.Human);
            for (int i = 0; i < list.Count; i++)
            {
                var treasure = treasures[list[i]];
                if (treasure.skillLevelUpRedpoint != null &&
                    treasure.skillLevelUpRedpoint.state == RedPointState.Simple)
                {
                    return list[i];
                }
            }
            return 0;
        }
        private void UpdateAchievementRedpoints()
@@ -927,34 +1012,47 @@
            WindowCenter.Instance.Open<TreasureNewGotWin>();
        }
        private void UpdateSkillLevelUpRedpoint(int _treasureId)
        public bool SatisfyLevelUpUnlock(int treasureId, int index)
        {
            if (treasures.ContainsKey(_treasureId))
            if (treasures.ContainsKey(treasureId))
            {
                var treasure = treasures[_treasureId];
                if (treasure.skillLevelUpRedpoint == null)
                {
                    return;
                }
                var anyPointialLevelupAble = false;
                var treasure = treasures[treasureId];
                if (treasure.state == TreasureState.Collected && treasure.IsHighestStage)
                {
                    for (int i = 0; i < treasure.potentials.Count; i++)
                    if (index >= 0 && index < treasure.potentials.Count - 1)
                    {
                        var potential = treasure.potentials[i];
                        if (SatisyPotentialLevelUp(treasure.id, potential.id))
                        var potential = treasure.potentials[index];
                        var nextPotential = treasure.potentials[index + 1];
                        var skillConfig = Config.Instance.Get<SkillConfig>(nextPotential.id);
                        if (skillConfig.LearnSkillReq > 0)
                        {
                            anyPointialLevelupAble = true;
                            break;
                            if (potential.level < skillConfig.LearnSkillLV)
                            {
                                return true;
                            }
                        }
                    }
                    else if (index == treasure.potentials.Count - 1)
                    {
                        var potential = treasure.GetPotentialByIndex(index);
                        var config = Config.Instance.Get<SkillConfig>(potential.id);
                        int[] _getSkillArray;
                        if (TryGetPotentialGetSkill(config.SkillTypeID, out _getSkillArray))
                        {
                            if (potential.level < _getSkillArray[0])
                            {
                                return true;
                            }
                        }
                    }
                }
                treasure.skillLevelUpRedpoint.state = anyPointialLevelupAble ? RedPointState.Simple : RedPointState.None;
            }
            return false;
        }
        public bool SatisyPotentialLevelUp(int treasureId, int potentialId)
        public bool SatisyPotentialLevelUp(int treasureId, int potentialId, out Item item)
        {
            item = default(Item);
            var treasure = treasures[treasureId];
            var potential = treasure.GetPotential(potentialId);
            if (potential == null)
@@ -1010,6 +1108,11 @@
                        var own = packageModel.GetItemCountByID(PackType.rptItem, itemId);
                        if (own >= treasureSkillConfig.MeterialNum2[j])
                        {
                            item = new Item()
                            {
                                id = itemId,
                                count = treasureSkillConfig.MeterialNum2[j],
                            };
                            return true;
                        }
                    }
System/Treasure/TreasurePotentialPanel.cs
@@ -34,6 +34,7 @@
        [SerializeField] Button m_RemoveBook;
        [SerializeField] ImageEx m_UpgradeImage;
        [SerializeField] Button m_Upgrade;
        [SerializeField] Image m_LevelUpRed;
        [SerializeField] UIEffect m_FailureEffect;
@@ -94,6 +95,9 @@
                        DisplayUpgradeCost();
                        DisplayGetSkill();
                        DisplaySuccessRatio();
                        m_LevelUpRed.gameObject.SetActive(m_Treasure.id == model.GetSkillLevelUpRedpointTreasure()
                             && m_Treasure.GetPotentialByIndex(m_Treasure.autoSelectPotential).id == selectedPotential);
                    }
                    else
                    {
@@ -142,14 +146,26 @@
                }
            }
            for (int i = 0; i < m_Treasure.potentials.Count; i++)
            if (m_Treasure.skillLevelUpRedpoint.state == RedPointState.Simple)
            {
                if (model.SatisyPotentialLevelUp(_treasure.id, m_Treasure.potentials[i].id))
                if (m_Treasure.autoSelectPotential < m_Treasure.potentials.Count)
                {
                    _index = i;
                    break;
                    _index = m_Treasure.autoSelectPotential;
                }
            }
            else
            {
                for (int i = 0; i < m_Treasure.potentials.Count; i++)
                {
                    Item item;
                    if (model.SatisyPotentialLevelUp(_treasure.id, m_Treasure.potentials[i].id, out item))
                    {
                        _index = i;
                        break;
                    }
                }
            }
            selectedPotential = m_Treasure.potentials[_index].id;
@@ -272,6 +288,8 @@
            if (m_Treasure != null && _id == m_Treasure.skillLevelUpRedpoint.id)
            {
                DisplayAddBookRedpoint();
                m_LevelUpRed.gameObject.SetActive(m_Treasure.id == model.GetSkillLevelUpRedpointTreasure()
                    && m_Treasure.GetPotentialByIndex(m_Treasure.autoSelectPotential).id == selectedPotential);
            }
        }
@@ -615,7 +633,8 @@
                m_AddBookRedpoint.gameObject.SetActive(false);
                return;
            }
            bool levelUpHighSuccess = model.SatisyPotentialLevelUp(model.selectedTreasure, model.selectedPotential);
            Item item;
            bool levelUpHighSuccess = model.SatisyPotentialLevelUp(model.selectedTreasure, model.selectedPotential, out item);
            m_AddBookRedpoint.gameObject.SetActive(levelUpHighSuccess);
        }
System/TreasureFindHost/TreasureFindHostModel.cs
@@ -145,7 +145,7 @@
                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip,condi[3]);
                if(itemModel != null)
                {
                    if(specEquipIds != null && specEquipIds.Contains(condi[3]))
                    if(specEquipIds != null && specEquipIds.Contains(itemModel.itemId))
                    {
                        progress += 1;
                        return true;
System/Vip/LimitedTimePackageModel.cs
@@ -20,10 +20,6 @@
        OpenServerActivityCenter.Instance.Register(7, this);
        OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
    }
    public bool IsShowPanel = false;
    private const int Redpoint_key1 = 20907;
    public Redpoint redPointStre1 = new Redpoint(209, Redpoint_key1);//限时礼包红点
    public bool IsOpen
@@ -52,7 +48,6 @@
    public void OnBeforePlayerDataInitialize()
    {
        IsShowPanel = false;
        DicBuyPackage.Clear();
    }
    public override void UnInit()
@@ -63,9 +58,13 @@
    {
        OperationTimeHepler.Instance.operationStartEvent -= operationStartEvent;
        OperationTimeHepler.Instance.operationStartEvent += operationStartEvent;
        OperationTimeHepler.Instance.operationAdvanceEvent -= operationAdvanceEvent;
        OperationTimeHepler.Instance.operationAdvanceEvent += operationAdvanceEvent;
        IsShowTip();
    }
    private void operationStartEvent(Operation arg1, int arg2)
    {
@@ -78,7 +77,17 @@
            }
        }
    }
    private void operationAdvanceEvent(Operation obj)
    {
        if (obj == Operation.GiftPackage)
        {
           // IsShowTip();
            if (onStateUpate != null)
            {
                onStateUpate(7);
            }
        }
    }
    private void OperationEndEvent(Operation arg1, int arg2)
    {
        if (arg1 == Operation.GiftPackage && arg2 == 0)
@@ -92,13 +101,16 @@
    public void IsShowTip()
    {
        if (OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.GiftPackage))
        {
            return;
        }
        int GetDayOfYear = DateTime.Now.DayOfYear;
        int day = LocalSave.GetInt("IsOpenLimitedTime");
        bool Isbool = IsExpired();
        if (day != GetDayOfYear && IsExpired())
        {
            LocalSave.SetInt("IsOpenLimitedTime", GetDayOfYear);
            IsShowPanel = true;
         //   LocalSave.SetInt("IsOpenLimitedTime", GetDayOfYear);
            redPointStre1.state = RedPointState.Simple;
        }
        else
@@ -143,7 +155,7 @@
    public bool IsExpired()
    {
        bool IsBool = false;
        IsBool =(OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.GiftPackage)|| OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.GiftPackage));
        IsBool = (OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.GiftPackage) || OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.GiftPackage));
        bool IsBuyBool = false;
        OperationBase operationBase;
        if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.GiftPackage, out operationBase))
System/Vip/LimitedTimePackageTime.cs
@@ -7,9 +7,11 @@
using UnityEngine.UI;
using System;
namespace Snxxz.UI {
namespace Snxxz.UI
{
    public class LimitedTimePackageTime:MonoBehaviour {
    public class LimitedTimePackageTime : MonoBehaviour
    {
        [SerializeField] TimerBehaviour m_Time;
        [SerializeField] RectTransform m_ContainerAdvance;
@@ -83,7 +85,7 @@
        void DisplayTime(int seconds)
        {
            m_Time.timeShow.color = seconds > 3600 ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
            m_Time.Begin(DateTime.Now.AddTicks(seconds * TimeSpan.TicksPerSecond));
            m_Time.Begin(seconds);
        }
        void DisplayAdvance(int seconds)
        {
System/Vip/LimitedTimePackageWin.cs
@@ -58,9 +58,10 @@
        protected override void OnAfterOpen()
        {
            if (limitedTimePackageItemModel.IsShowPanel)
            if (limitedTimePackageItemModel.redPointStre1.state == RedPointState.Simple)
            {
                limitedTimePackageItemModel.IsShowPanel = false;
                int GetDayOfYear = DateTime.Now.DayOfYear;
                LocalSave.SetInt("IsOpenLimitedTime", GetDayOfYear);
                limitedTimePackageItemModel.IsShowTip();
            }
           
System/Welfare/OperationBase.cs
@@ -90,6 +90,10 @@
                    {
                        return time.Hour < DayResetHour;
                    }
                    if (indexOfDays < totalDays)
                    {
                        return true;
                    }
                    break;
            }
            return false;
System/Welfare/OperationTimeHepler.cs
@@ -310,6 +310,7 @@
                operation.startDate = ParseOperationDate(package.StartDate);
                operation.endDate = ParseOperationDate(package.EndtDate);
                operation.limitLv = package.LimitLV;
                operation.resetType = package.ResetType;
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.FairyCeremony);
System/WindowJump/WindowJumpMgr.cs
@@ -46,7 +46,7 @@
    TrialDungeonModel trialDungeonModel { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } }
    ImpactRankModel rankModel { get { return ModelCenter.Instance.GetModel<ImpactRankModel>(); } }
    ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
    MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
    public bool IsJumpState { get; private set; }
    public int jumpPhase { get; private set;}
    public int jumpType { get; private set; }
@@ -87,263 +87,8 @@
    public void WindowJumpTo(JumpUIType jumpType)
    {
        _tagWinSearchModel = Config.Instance.Get<WindowSearchConfig>((int)jumpType);
        if (_tagWinSearchModel == null)
        {
            return;
        }
        if (!FuncOpen.Instance.IsFuncOpen(_tagWinSearchModel.Lv) && _tagWinSearchModel.Lv != 0)
        {
            FuncOpen.Instance.ProcessorFuncErrorTip(_tagWinSearchModel.Lv);
            return;
        }
        switch (jumpType)
        {
            case JumpUIType.UnionFunc1:
            case JumpUIType.UnionFunc2:
            case JumpUIType.UnionWarehouse:
            case JumpUIType.UnionHall:
            case JumpUIType.UnionTask:
            case JumpUIType.UnionTask2:
            case JumpUIType.UnionActive1:
            case JumpUIType.UnionActive2:
            case JumpUIType.UnionBoss:
                if (!PlayerDatas.Instance.fairyData.HasFairy)
                {
                    SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit");
                    return;
                }
                break;
            case JumpUIType.UnionMethod:
                if (!fairyModel.fairyMethodToOpen)
                {
                    fairyModel.ProcessMethodToErrorTip();
                    return;
                }
                break;
            case JumpUIType.UnionStore:
                if (!fairyModel.fairyStoreOpen)
                {
                    fairyModel.ProcessErrorTip();
                    return;
                }
                break;
            case JumpUIType.TreasureFindHostFunc1:
            case JumpUIType.TreasureFindHostFunc2:
            case JumpUIType.TreasureFindHostFunc3:
            case JumpUIType.TreasureFindHostFunc1Type2:
            case JumpUIType.TreasureFindHostFunc2Type2:
            case JumpUIType.TreasureFindHostFunc3Type2:
                bool isUnlock = hostModel.IsUnlockTreasure(int.Parse(_tagWinSearchModel.SelectActive));
                if (!isUnlock)
                {
                    hostModel.jumpTreasureId = 0;
                    return;
                }
                break;
            case JumpUIType.FirstRecharge:
                var model = ModelCenter.Instance.GetModel<VipModel>();
                if (model.firstChargeRewardGet)
                {
                    model.AreadyGetFirstRecharge();
                    return;
                }
                break;
            case JumpUIType.XMZZBattle:
            case JumpUIType.AncientBattle:
            case JumpUIType.IceCrystal:
            case JumpUIType.FairyLand:
                DailyQuestConfig dailyConfig = Config.Instance.Get<DailyQuestConfig>(_tagWinSearchModel.SelectActive);
                if (dailyQuestModel.GetQuestState(dailyConfig.ID) != DailyQuestModel.DailyQuestState.Normal)
                {
                    SysNotifyMgr.Instance.ShowTip("FBIsNotOpen");
                    return;
                }
                break;
            case JumpUIType.PlotTaskFunc3:
                var taskmodel = ModelCenter.Instance.GetModel<PlayerTaskDatas>();
                if (taskmodel.SideQuestsDic.Count < 1)
                {
                    SysNotifyMgr.Instance.ShowTip("SideQuest_None");
                    return;
                }
                break;
            case JumpUIType.PrayforDrug:
                var prayModel = ModelCenter.Instance.GetModel<PrayForDurgModel>();
                if(!prayModel.CheckPrayDrugIsOpen())
                {
                    return;
                }
                break;
            case JumpUIType.FaBaoSoul_BenYuan:
            case JumpUIType.FaBaoSoul_FengMo:
            case JumpUIType.FaBaoSoul_Strength:
            case JumpUIType.FaBaoSoul_Rune:
            case JumpUIType.FaBaoSoul_Mount:
            case JumpUIType.FaBaoSoul_Pet:
            case JumpUIType.FaBaoSoul_Boss:
            case JumpUIType.FaBaoSoul_Wings:
            case JumpUIType.FaBaoSoul_Suit:
            case JumpUIType.FaBaoSoul_Wash:
                var soulId = 0;
                if (int.TryParse(_tagWinSearchModel.SelectActive, out soulId))
                {
                    var soulModel = ModelCenter.Instance.GetModel<TreasureSoulModel>();
                    if (!soulModel.IsOpenTreasureSoul(soulId))
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
                break;
            case JumpUIType.TrialExchange:
                if (!trialDungeonModel.CompleteTrialFloor(0))
                {
                    trialDungeonModel.ProcessOpenTrialExchangeError();
                    return;
                }
                break;
            case JumpUIType.Kylin:
            case JumpUIType.Kylin1:
            case JumpUIType.Kylin2:
            case JumpUIType.Kylin3:
            case JumpUIType.Kylin4:
            case JumpUIType.Kylin5:
            case JumpUIType.Kylin6:
                if (!FuncOpen.Instance.IsFuncOpen(85))
                {
                    FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.Kylin);
                    return;
                }
                break;
            case JumpUIType.OpenServerMountRank:
                var type = int.Parse(_tagWinSearchModel.SelectActive);
                if (rankModel.IsLock(type))
                {
                    SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
                    return;
                }
                if (TimeUtility.OpenDay >= rankModel.openServerActivityDays)
                {
                    SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
                    return;
                }
                break;
            case JumpUIType.FlashSale:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.FlashSale);
                        return;
                    }
                }
                break;
            case JumpUIType.ConsumreRebate:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.ConsumeRebate);
                        return;
                    }
                }
                break;
            case JumpUIType.LimitedTimePackage:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.GiftPackage);
                        return;
                    }
                }
                break;
            case JumpUIType.BossReborn:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.BossReborn);
                        return;
                    }
                }
                break;
            case JumpUIType.VipRechargeFunc3:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        ModelCenter.Instance.GetModel<FairyJadeInvestmentModel>().MessageNotification();
                        return;
                    }
                }
                break;
            case JumpUIType.VipRechargeFunc5:
                if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                {
                    return;
                }
                break;
            case JumpUIType.OpenServerRank:
            case JumpUIType.OSTimeLimitGift:
            case JumpUIType.OpenServerActivityFunc2_1:
            case JumpUIType.OpenServerActivityFunc2_2:
                if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                {
                    SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
                    return;
                }
                break;
            case JumpUIType.OpenServerGift1:
            case JumpUIType.OpenServerGift2:
            case JumpUIType.OpenServerGift3:
                var giftModel = ModelCenter.Instance.GetModel<OSGiftModel>();
                int giftId = 0;
                int.TryParse(_tagWinSearchModel.SelectActive, out giftId);
                if (!giftModel.CheckActivate())
                {
                    if (PlayerDatas.Instance.baseData.coinPointTotal <= 0
                        || !ModelCenter.Instance.GetModel<VipModel>().firstChargeRewardGet)
                    {
                        SysNotifyMgr.Instance.ShowTip("GiftNoOpen");
                    }
                    else if (giftModel.IsGiftBuy(giftId))
                    {
                        SysNotifyMgr.Instance.ShowTip("GiftAlreadyBuy");
                    }
                    else if (giftModel.IsGiftOverdue(giftId))
                    {
                        SysNotifyMgr.Instance.ShowTip("MissSell");
                    }
                    return;
                }
                break;
            case JumpUIType.OpenServerGift:
                return;
            case JumpUIType.EquipCompose1:
            case JumpUIType.EquipCompose2:
            case JumpUIType.EquipCompose3:
            case JumpUIType.EquipCompose4:
            case JumpUIType.ComposeTicketFairy:
            case JumpUIType.ComposeTicketGod:
            case JumpUIType.ComposeTicketIce:
                int[] types = ConfigParse.GetMultipleStr<int>(_tagWinSearchModel.SelectActive);
                if (types.Length > 0)
                {
                    if (!composeModel.CheckIsComposeByType(_tagWinSearchModel.TABID+1,types[0],types[1]))
                    {
                        return;
                    }
                }
                break;
        }
        if (!CheckIsJump(jumpType)) return;
        DebugEx.Log("WindowJumpTo" + jumpType);
        GetPreAllOpenWin();
        #region 条件判段
        switch (jumpType)
        {
@@ -773,6 +518,12 @@
                dungeonModel.selectedTrialDungeon = dungeon;
                SetJumpLogic<TrialDungeonEntranceWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.CeremonyRecharge:
            case JumpUIType.CeremonyFire:
            case JumpUIType.CeremonyPeopleToHi:
            case JumpUIType.CeremonyOutof:
                SetJumpLogic<FairylandCeremonyWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.FaBaoSoul_BenYuan:
            case JumpUIType.FaBaoSoul_FengMo:
            case JumpUIType.FaBaoSoul_Strength:
@@ -845,6 +596,286 @@
    }
    private bool CheckIsJump(JumpUIType jumpType)
    {
        _tagWinSearchModel = Config.Instance.Get<WindowSearchConfig>((int)jumpType);
        if (_tagWinSearchModel == null)
        {
            return false;
        }
        if (!FuncOpen.Instance.IsFuncOpen(_tagWinSearchModel.Lv) && _tagWinSearchModel.Lv != 0)
        {
            FuncOpen.Instance.ProcessorFuncErrorTip(_tagWinSearchModel.Lv);
            return false;
        }
        switch (jumpType)
        {
            case JumpUIType.UnionFunc1:
            case JumpUIType.UnionFunc2:
            case JumpUIType.UnionWarehouse:
            case JumpUIType.UnionHall:
            case JumpUIType.UnionTask:
            case JumpUIType.UnionTask2:
            case JumpUIType.UnionActive1:
            case JumpUIType.UnionActive2:
            case JumpUIType.UnionBoss:
                if (!PlayerDatas.Instance.fairyData.HasFairy)
                {
                    SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit");
                    return false;
                }
                break;
            case JumpUIType.UnionMethod:
                if (!fairyModel.fairyMethodToOpen)
                {
                    fairyModel.ProcessMethodToErrorTip();
                    return false;
                }
                break;
            case JumpUIType.UnionStore:
                if (!fairyModel.fairyStoreOpen)
                {
                    fairyModel.ProcessErrorTip();
                    return false;
                }
                break;
            case JumpUIType.BigMap:
                if (!mapModel.CanOpenLocalMapWin(PlayerDatas.Instance.baseData.MapID))
                {
                    SysNotifyMgr.Instance.ShowTip("MapInfo1");
                    return false;
                }
                break;
            case JumpUIType.TreasureFindHostFunc1:
            case JumpUIType.TreasureFindHostFunc2:
            case JumpUIType.TreasureFindHostFunc3:
            case JumpUIType.TreasureFindHostFunc1Type2:
            case JumpUIType.TreasureFindHostFunc2Type2:
            case JumpUIType.TreasureFindHostFunc3Type2:
                bool isUnlock = hostModel.IsUnlockTreasure(int.Parse(_tagWinSearchModel.SelectActive));
                if (!isUnlock)
                {
                    hostModel.jumpTreasureId = 0;
                    return false;
                }
                break;
            case JumpUIType.FirstRecharge:
                var model = ModelCenter.Instance.GetModel<VipModel>();
                if (model.firstChargeRewardGet)
                {
                    model.AreadyGetFirstRecharge();
                    return false;
                }
                break;
            case JumpUIType.XMZZBattle:
            case JumpUIType.AncientBattle:
            case JumpUIType.IceCrystal:
            case JumpUIType.FairyLand:
                DailyQuestConfig dailyConfig = Config.Instance.Get<DailyQuestConfig>(_tagWinSearchModel.SelectActive);
                if (dailyQuestModel.GetQuestState(dailyConfig.ID) != DailyQuestModel.DailyQuestState.Normal)
                {
                    SysNotifyMgr.Instance.ShowTip("FBIsNotOpen");
                    return false;
                }
                break;
            case JumpUIType.PlotTaskFunc3:
                var taskmodel = ModelCenter.Instance.GetModel<PlayerTaskDatas>();
                if (taskmodel.SideQuestsDic.Count < 1)
                {
                    SysNotifyMgr.Instance.ShowTip("SideQuest_None");
                    return false;
                }
                break;
            case JumpUIType.PrayforDrug:
                var prayModel = ModelCenter.Instance.GetModel<PrayForDurgModel>();
                if (!prayModel.CheckPrayDrugIsOpen())
                {
                    return false;
                }
                break;
            case JumpUIType.FaBaoSoul_BenYuan:
            case JumpUIType.FaBaoSoul_FengMo:
            case JumpUIType.FaBaoSoul_Strength:
            case JumpUIType.FaBaoSoul_Rune:
            case JumpUIType.FaBaoSoul_Mount:
            case JumpUIType.FaBaoSoul_Pet:
            case JumpUIType.FaBaoSoul_Boss:
            case JumpUIType.FaBaoSoul_Wings:
            case JumpUIType.FaBaoSoul_Suit:
            case JumpUIType.FaBaoSoul_Wash:
                var soulId = 0;
                if (int.TryParse(_tagWinSearchModel.SelectActive, out soulId))
                {
                    var soulModel = ModelCenter.Instance.GetModel<TreasureSoulModel>();
                    if (!soulModel.IsOpenTreasureSoul(soulId))
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
                break;
            case JumpUIType.TrialExchange:
                if (!trialDungeonModel.CompleteTrialFloor(0))
                {
                    trialDungeonModel.ProcessOpenTrialExchangeError();
                    return false;
                }
                break;
            case JumpUIType.Kylin:
            case JumpUIType.Kylin1:
            case JumpUIType.Kylin2:
            case JumpUIType.Kylin3:
            case JumpUIType.Kylin4:
            case JumpUIType.Kylin5:
            case JumpUIType.Kylin6:
                if (!FuncOpen.Instance.IsFuncOpen(85))
                {
                    FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.Kylin);
                    return false;
                }
                break;
            case JumpUIType.OpenServerMountRank:
                var type = int.Parse(_tagWinSearchModel.SelectActive);
                if (rankModel.IsLock(type))
                {
                    SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
                    return false;
                }
                if (TimeUtility.OpenDay >= rankModel.openServerActivityDays)
                {
                    SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
                    return false;
                }
                break;
            case JumpUIType.FlashSale:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.FlashSale);
                        return false;
                    }
                }
                break;
            case JumpUIType.ConsumreRebate:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.ConsumeRebate);
                        return false;
                    }
                }
                break;
            case JumpUIType.LimitedTimePackage:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.GiftPackage);
                        return false;
                    }
                }
                break;
            case JumpUIType.BossReborn:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        OperationTimeHepler.Instance.ProcessConditionError(Operation.BossReborn);
                        return false;
                    }
                }
                break;
            case JumpUIType.VipRechargeFunc3:
                {
                    if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                    {
                        ModelCenter.Instance.GetModel<FairyJadeInvestmentModel>().MessageNotification();
                        return false;
                    }
                }
                break;
            case JumpUIType.VipRechargeFunc5:
                if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                {
                    return false;
                }
                break;
            case JumpUIType.OpenServerRank:
            case JumpUIType.OSTimeLimitGift:
            case JumpUIType.OpenServerActivityFunc2_1:
            case JumpUIType.OpenServerActivityFunc2_2:
                if (!OpenServerActivityCenter.Instance.IsActivityOpen(_tagWinSearchModel.TABID))
                {
                    SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
                    return false;
                }
                break;
            case JumpUIType.OpenServerGift1:
            case JumpUIType.OpenServerGift2:
            case JumpUIType.OpenServerGift3:
                var giftModel = ModelCenter.Instance.GetModel<OSGiftModel>();
                int giftId = 0;
                int.TryParse(_tagWinSearchModel.SelectActive, out giftId);
                if (!giftModel.CheckActivate())
                {
                    if (PlayerDatas.Instance.baseData.coinPointTotal <= 0
                        || !ModelCenter.Instance.GetModel<VipModel>().firstChargeRewardGet)
                    {
                        SysNotifyMgr.Instance.ShowTip("GiftNoOpen");
                    }
                    else if (giftModel.IsGiftBuy(giftId))
                    {
                        SysNotifyMgr.Instance.ShowTip("GiftAlreadyBuy");
                    }
                    else if (giftModel.IsGiftOverdue(giftId))
                    {
                        SysNotifyMgr.Instance.ShowTip("MissSell");
                    }
                    return false;
                }
                break;
            case JumpUIType.OpenServerGift:
                return false;
            case JumpUIType.EquipCompose1:
            case JumpUIType.EquipCompose2:
            case JumpUIType.EquipCompose3:
            case JumpUIType.EquipCompose4:
            case JumpUIType.ComposeTicketFairy:
            case JumpUIType.ComposeTicketGod:
            case JumpUIType.ComposeTicketIce:
                int[] types = ConfigParse.GetMultipleStr<int>(_tagWinSearchModel.SelectActive);
                if (types.Length > 0)
                {
                    if (!composeModel.CheckIsComposeByType(_tagWinSearchModel.TABID + 1, types[0], types[1]))
                    {
                        return false;
                    }
                }
                break;
            case JumpUIType.CeremonyRecharge:
            case JumpUIType.CeremonyFire:
            case JumpUIType.CeremonyPeopleToHi:
            case JumpUIType.CeremonyOutof:
                if (!OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.FairyCeremony))
                {
                    SysNotifyMgr.Instance.ShowTip("InOperationTimeError");
                    return false;
                }
                break;
        }
        return true;
    }
    private void CheckJumpWin<T>(int _functionalOrder = 0, bool _forceSync = true) where T : Window
    {
        string curOpenWin = typeof(T).Name;
    }
    private void GotoNormalDungeon(int _dailyQuestId, int _lineId = 0)
    {
        var config = Config.Instance.Get<DailyQuestConfig>(_dailyQuestId);
@@ -879,26 +910,20 @@
        SetJumpLogic<MultipleDifficultyDungeonWin>(0);
    }
    private void SetJumpLogic<T>(int _functionalOrder = 0, bool _forceSync = true) where T : Window
    {
        string curOpenWin = typeof(T).Name;
        if(jumpWinNameDict.ContainsKey(jumpPhase - 1))
        if (WindowCenter.Instance.IsOpen(curOpenWin))
        {
            if(jumpWinNameDict[jumpPhase - 1] != curOpenWin)
            {
                jumpWinNameDict.Add(jumpPhase, curOpenWin);
            }
            else
            {
                openWindows[jumpPhase].Clear();
                jumpPhase -= 1;
            }
            Window window = WindowCenter.Instance.Get(curOpenWin);
            window.functionOrder = _functionalOrder;
            window.ChildActive();
            return;
        }
        else
        {
            jumpWinNameDict.Add(jumpPhase, curOpenWin);
        }
        GetPreAllOpenWin();
        jumpWinNameDict.Add(jumpPhase, curOpenWin);
        jumpType = _tagWinSearchModel.Type;
        switch (_tagWinSearchModel.Type)
        {
@@ -950,6 +975,10 @@
            case 1:
            case 4:
                openWinlist = openWindows[jumpPhase];
                if(openWinlist.Contains(obj.name))
                {
                    openWinlist.Remove(obj.name);
                }
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                for (i = 0; i < openWinlist.Count; i++)
                {
@@ -997,6 +1026,10 @@
                break;
            case 2:
                openWinlist = openWindows[1];
                if (openWinlist.Contains(obj.name))
                {
                    openWinlist.Remove(obj.name);
                }
                WindowCenter.Instance.CloseAll(WindowCenter.CloseAllIgnoreType.SystemAndCustom);
                if (!WindowCenter.Instance.IsOpen<MainInterfaceWin>())
                {
@@ -1108,6 +1141,7 @@
        //Match curMatch = regex.Match("4**(abc)?789Y0649");
    }
}
@@ -1330,6 +1364,10 @@
    EquipCompose2 = 236, //装备合成-龙魂红三
    EquipCompose3 = 237, //装备合成-灵瑶红二
    EquipCompose4 = 238, //装备合成-灵瑶红三
    CeremonyRecharge = 244, //仙界盛典充值大礼界面
    CeremonyFire = 245, //仙界盛典烟花狂欢界面
    CeremonyPeopleToHi = 246, //仙界盛典全民来嗨界面
    CeremonyOutof = 247, //仙界盛典绝版降临界面
    DhszTs = 1001,//定海神针功法提升界面
    HyqTs = 1002,//皓月枪功法提升界面
    GyzTs = 1003,//鬼牙刃功法提升界面
System/WorldMap/MapModel.cs
@@ -293,6 +293,21 @@
            return null;
        }
        public bool CanOpenLocalMapWin(int mapId)
        {
            var mapResConfig = DTCA127_tagMCStartChangeMap.GetMapResourcesConfig();
            var config = Config.Instance.Get<MapConfig>(mapId);
            if (string.IsNullOrEmpty(mapResConfig.BigMap)
                || mapId == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        public int GetRecommendHangPoint(int _mapId)
        {
            var eventPoints = new List<int>(GetMapEventPoints(_mapId));
UI/Common/TimerBehaviour.cs
@@ -22,11 +22,11 @@
        float secondTimer = 0f;
        public void Begin(DateTime _endTime, Action _callBack = null)
        public void Begin(int seconds, Action _callBack = null)
        {
            endTime = _endTime;
            endTime = TimeUtility.ServerNow + new TimeSpan(seconds * TimeSpan.TicksPerSecond);
            onTime = _callBack;
            if (endTime > DateTime.Now)
            if (endTime > TimeUtility.ServerNow)
            {
                this.gameObject.SetActive(true);
                UpdateTimeShow();
@@ -46,7 +46,7 @@
        private void LateUpdate()
        {
            if (DateTime.Now > endTime)
            if (TimeUtility.ServerNow > endTime)
            {
                if (onTime != null)
                {
@@ -69,7 +69,7 @@
        protected virtual void UpdateTimeShow()
        {
            var lastSecond = (float)(endTime - DateTime.Now).TotalSeconds;
            var lastSecond = (float)(endTime - TimeUtility.ServerNow).TotalSeconds;
            switch (m_Pattern)
            {
UI/HUD/HeadUpName.cs
@@ -152,12 +152,12 @@
            {
                return;
            }
            m_AncientKing.gameObject.SetActive(isAncientKing);
            if (isAncientKing)
            {
                m_AncientKing.SetSprite("IntegralKing");
                m_AncientKing.SetNativeSize();
            }
            //m_AncientKing.gameObject.SetActive(isAncientKing);
            //if (isAncientKing)
            //{
            //    m_AncientKing.SetSprite("IntegralKing");
            //    m_AncientKing.SetNativeSize();
            //}
        }
        public void SetAncientEnemy(bool isAncientEnemy)
@@ -166,12 +166,12 @@
            {
                return;
            }
            m_AncientEnemy.gameObject.SetActive(isAncientEnemy);
            if (isAncientEnemy)
            {
                m_AncientEnemy.SetSprite("Enemy");
                m_AncientEnemy.SetNativeSize();
            }
            //m_AncientEnemy.gameObject.SetActive(isAncientEnemy);
            //if (isAncientEnemy)
            //{
            //    m_AncientEnemy.SetSprite("Enemy");
            //    m_AncientEnemy.SetNativeSize();
            //}
        }
        public void SetAlliance(string _alliance)
@@ -305,7 +305,7 @@
            {
                m_RebornTime.gameObject.SetActive(true);
                (m_TimeBehaviour as TimerToChsBehaviour).addtionInfo = Language.Get("BossReborn_RefreshTime");
                m_TimeBehaviour.Begin(_bossInfo.refreshTime, () =>
                m_TimeBehaviour.Begin( (int)(_bossInfo.refreshTime - TimeUtility.ServerNow).TotalSeconds, () =>
                 {
                     m_NpcAppearTxt.gameObject.SetActive(true);
                 });
Utility/EnumHelper.cs
@@ -669,12 +669,18 @@
    MakerEquipSuitMat = 34, //装备套装材料
    ComposeSuitStone = 35, //套装石碎片
    WingsMat = 39,  //合成翅膀材料,羽翼精炼材料
    DogzStrengthMat = 70, //提供神兽装备强化的经验
    VipTools = 80, //vip道具
    Box = 81, //宝箱
    Necklaces = 108, //项链
    FairyEquip = 109, //仙器
    Wings = 111, //翅膀
    SpiritAnimal = 112, //灵守
    DogzEquipType1 = 119, //神兽装备兽角
    DogzEquipType2 = 120, //神兽装备魔眼
    DogzEquipType3 = 121, //神兽装备獠牙
    DogzEquipType4 = 122, //神兽装备兽爪
    DogzEquipType5 = 123, //神兽装备鳞甲
}
/** 值为列表形式,枚举值是单数 */
Utility/RuntimeLogUtility.cs
@@ -16,6 +16,7 @@
    public static bool s_UseKeyBoardCastSkill = false;
    public static bool s_LogMoveDistance = false;
    public static bool s_SkillEffectLog = false;
    public static bool s_ShowMapLine = false;
    public static bool s_forceAutoFight
    {
        get
@@ -203,7 +204,8 @@
        RuntimeLogUtility.s_forceAutoFight = EditorGUILayout.Toggle("是否强制开启AI", RuntimeLogUtility.s_forceAutoFight);
        RuntimeLogUtility.s_SkillEffectLog = EditorGUILayout.Toggle("技能效果log输出", RuntimeLogUtility.s_SkillEffectLog);
        RuntimeLogUtility.s_LogMoveDistance = EditorGUILayout.Toggle("位移距离Log输出", RuntimeLogUtility.s_LogMoveDistance);
        RuntimeLogUtility.s_ShowMapLine = EditorGUILayout.Toggle("显示地图网格", RuntimeLogUtility.s_ShowMapLine);
        _navChkPos = EditorGUILayout.Vector3Field("检测点", _navChkPos);
        if (GUILayout.Button("检测"))