少年修仙传客户端代码仓库
client_linchunjie
2018-10-15 788de3fdfa8fd193ae2e1d374aa0587fc91221fb
Merge branch 'master' into 3687天赋功能

Conflicts:
System/WindowBase/ModelCenter.cs
17 文件已复制
1个文件已删除
1 文件已重命名
20个文件已添加
52个文件已修改
2815 ■■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Login/Launch.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/SnxxzGame.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA313_tagCMItemDecompound.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA313_tagCMItemDecompound.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ClientPack.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ClientPack/ClientToMapServer.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA003_tagUniversalGameRecInfo.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DebugPkgCache.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/GameNetSystem.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/ResModule/InstanceResourcesLoader.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/SDK/SDKUtility.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/Status/Status_Polymorph.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcCollect.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorNpcFight.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorNpcNoFight.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorPlayerBase.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/PreFightMission.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Backpack/BackpackData.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionConfig.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionUtility.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeEquipWin.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DogzDungeon/DogzDungeonWin.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FakeDungeon/FakeDemonJarDungeonStage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/GMCommand/GMInputWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackSendQuestMgr.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerStarNumWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/NewItemGetWin.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Launch/LaunchWin.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/PlayerTaskDatas.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainWin/SkillButton.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/NewBieGuidance/FunctionalGuideCenter.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyCoolDown.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyCoolDown.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyModel.cs 363 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyModel.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyNotify.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyNotify.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyWin.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashRushToBuyWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleItemCell.cs 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleItemCell.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleTimeCell.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/FlashSaleTimeCell.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/ImpactRankModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyBase.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyBase.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyModel.cs 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyModel.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyWin.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityNotifyWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OpenServerActivityWin.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OperationFlashRushToBuy.cs 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/OpenServerActivity/OperationFlashRushToBuy.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/RoleTitleCell.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/WashMasterActiveWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SystemSetting/ActivitiesPushMgr.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SystemSetting/SettingMgr.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SystemSetting/SystemSetting.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasurePotentialPanel.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSoulPattern4.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSoulWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/RotatePointer.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/UIEffectFly.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/UIEffectFly.cs.meta 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/WheelOfFortuneModel.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipInvest/WheelOfFortuneWin.cs 226 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/OperationTimeHepler.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/WelfareWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/ItemBehaviour.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI/Common/UI3DModelFactory.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/DebugMousePos.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/DebugMousePos.cs.meta 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/GlobalTimeEvent.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -370,6 +370,8 @@
        Register(typeof(HA318_tagMCFreeGoodsInfo), typeof(DTCA318_tagMCFreeGoodsInfo));
        Register(typeof(HAA12_tagMCFlashGiftbagInfo), typeof(DTCAA12_tagMCFlashGiftbagInfo));
        Register(typeof(HAA13_tagMCFlashGiftbagPlayerInfo), typeof(DTCAA13_tagMCFlashGiftbagPlayerInfo));
        Register(typeof(HAA17_tagMCFlashSaleInfo), typeof(DTCAA17_tagMCFlashSaleInfo));
        Register(typeof(HAA18_tagMCFlashSaleAppointmentInfo), typeof(DTCAA18_tagMCFlashSaleAppointmentInfo));
        #region 仙界盛典
        Register(typeof(HAC09_tagGCFairyCeremonyInfo), typeof(DTCAC09_tagGCFairyCeremonyInfo));
Core/GameEngine/Login/Launch.cs
@@ -43,6 +43,7 @@
        SoundPlayer.CreateSoundPlayer();
        SoundPlayer.Instance.PlayLoginMusic();
        SystemSetting.Instance.SetSoundVolume(SystemSetting.Instance.GetSoundVolume());
        SystemSetting.Instance.SetSoundEffect(SystemSetting.Instance.GetSoundEffect());
        SystemSetting.Instance.SetGameFps(SystemSetting.Instance.GetGameFps());
        SDKUtility.Instance.Init();
Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs
File was deleted
Core/GameEngine/Model/ConfigManager.cs
@@ -125,7 +125,6 @@
        AddAsyncTask<RuneTowerFloorConfig>();
        AddAsyncTask<TreasureRefineConfig>();
        AddAsyncTask<AlchemyConfig>();
        AddAsyncTask<BlastFurnaceLVConfig>();
        AddAsyncTask<AlchemySpecConfig>();
        AddAsyncTask<QuestionBankConfig>();
        AddAsyncTask<WingRefineExpConfig>();
Core/GameEngine/SnxxzGame.cs
@@ -71,16 +71,16 @@
                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);
                    _start = new Vector3(_startX, _hero.Pos.y + 0.001f, _startZ + i * size);
                    _end = new Vector3(_startX + column * .5f, _hero.Pos.y + 0.001f, _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);
                    _start = new Vector3(_startX + i * size, _hero.Pos.y + 0.001f, _startZ);
                    _end = new Vector3(_startX + i * size, _hero.Pos.y + 0.001f, _startZ + row* .5f);
                    Gizmos.DrawLine(_start, _end);
                }
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA313_tagCMItemDecompound.cs
New file
@@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections;
// A3 13 物品拆解 #tagCMItemDecompound
public class CA313_tagCMItemDecompound : GameNetPackBasic {
    public byte Index;    // 拆解物品所在背包索引
    public CA313_tagCMItemDecompound () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA313;
    }
    public override void WriteToBytes () {
        WriteBytes (Index, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA313_tagCMItemDecompound.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA313_tagCMItemDecompound.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 77eef483c79a1a244b31335edb236af7
timeCreated: 1539335657
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// AA 05 限时抢购预约 #tagCMFlashSaleAppointment
public class CAA05_tagCMFlashSaleAppointment : GameNetPackBasic {
    public uint GoodsID;    // 抢购商品标识
    public byte State;    // 1-预约 0-取消
    public CAA05_tagCMFlashSaleAppointment () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xAA05;
    }
    public override void WriteToBytes () {
        WriteBytes (GoodsID, NetDataType.DWORD);
        WriteBytes (State, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/ClientPack/ClientToMapServer/CAA SaleActivity/CAA05_tagCMFlashSaleAppointment.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 0bd4980ed38baa24e8d85722181ec836
timeCreated: 1539228128
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DTCFile/ClientPack.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 722e5e3d30096674e811f5bd191246a0
folderAsset: yes
timeCreated: 1539228128
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ClientPack/ClientToMapServer.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a75d33f87d2bafb4191666d4978b2e08
folderAsset: yes
timeCreated: 1539228128
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0104_tagServerDisconnect.cs
@@ -28,6 +28,15 @@
                {
                    SDKUtility.Instance.FreePlatformLoginout();
                }
                if (vNetData.Reason != 0
                 && vNetData.Reason != 11
                 && vNetData.Reason != 28
                 && vNetData.Reason != 51
                 && vNetData.Reason != 110)
                {
                    DebugPkgCache.UpLoad();
                }
            }
            WindowCenter.Instance.Open<ServerForceExitHintWin>();
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA003_tagUniversalGameRecInfo.cs
@@ -18,12 +18,11 @@
    {
        base.Done(vNetPack);
        var data = vNetPack as HA003_tagUniversalGameRecInfo;
        heavenModel.RefreshBattleInfo(data);
        if (onGetUniversalGameInfo != null)
        {
            onGetUniversalGameInfo(data);
        }
        heavenModel.RefreshBattleInfo(data);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
public class DTCAA17_tagMCFlashSaleInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HAA17_tagMCFlashSaleInfo vNetData = vNetPack as HAA17_tagMCFlashSaleInfo;
        OperationTimeHepler.Instance.UpdateFlashRushToBuy(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA17_tagMCFlashSaleInfo.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: d00087bdecd7d4947a5c1f5e6d0e98a3
timeCreated: 1539228128
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs
New file
@@ -0,0 +1,22 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
public class DTCAA18_tagMCFlashSaleAppointmentInfo : DtcBasic
{
    FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        HAA18_tagMCFlashSaleAppointmentInfo vNetData = vNetPack as HAA18_tagMCFlashSaleAppointmentInfo;
        rushToBuyModel.UpdateFlashSaleAppointmentInfo(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/DTCFile/ServerPack/HAA_SaleActivity/DTCAA18_tagMCFlashSaleAppointmentInfo.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 32d6f801e94f8b84086c12c4672b5dcf
timeCreated: 1539228128
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/DebugPkgCache.cs
@@ -26,6 +26,23 @@
    public static void UpLoad()
    {
        var _contents = new System.Text.StringBuilder();
        foreach (var _content in m_List)
        {
            _contents.Append("[");
            _contents.Append(_content.dataTime);
            _contents.Append("]");
            _contents.Append(_content.code);
            _contents.Append("\r\n");
        }
#if UNITY_EDITOR
        UnityEngine.Debug.Log("登陆异常: " + _contents.ToString());
#else
        ExceptionCatcher.ReportException("登陆异常", _contents.ToString());
#endif
        _contents = null;
        m_List.Clear();
    }
}
Core/NetworkPackage/GameNetSystem.cs
@@ -130,6 +130,7 @@
        if (socketController != null)
        {
            socketController.SendInfo(vNetPack);
            DebugPkgCache.Push(vNetPack);
        }
    }
@@ -157,6 +158,7 @@
                if (PackageRegedit.Contain(_package.cmd))
                {
                    packQueue.Enqueue(_package);
                    DebugPkgCache.Push(_package);
                }
                else
                {
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs
New file
@@ -0,0 +1,81 @@
using UnityEngine;
using System.Collections;
// AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
public class HAA17_tagMCFlashSaleInfo : GameNetPackBasic {
    public string StartDate;    // 开始日期 y-m-d
    public string EndtDate;    // 结束日期 y-m-d
    public ushort AdvanceMinutes;    // 提前显示分钟
    public byte ActivityTimeCount;
    public  tagMCFlashSaleTime[] ActivityTime;    //活动时间
    public byte IsDayReset;    //是否每天重置
    public ushort LimitLV;    // 限制等级
    public byte ShopCount;    // 商店数
    public  tagMCFlashSaleShop[] ShopInfo;    // 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
    public HAA17_tagMCFlashSaleInfo () {
        _cmd = (ushort)0xAA17;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndtDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out AdvanceMinutes, vBytes, NetDataType.WORD);
        TransBytes (out ActivityTimeCount, vBytes, NetDataType.BYTE);
        ActivityTime = new tagMCFlashSaleTime[ActivityTimeCount];
        for (int i = 0; i < ActivityTimeCount; i ++) {
            ActivityTime[i] = new tagMCFlashSaleTime();
            TransBytes (out ActivityTime[i].StartTime, vBytes, NetDataType.Chars, 5);
            TransBytes (out ActivityTime[i].EndtTime, vBytes, NetDataType.Chars, 5);
        }
        TransBytes (out IsDayReset, vBytes, NetDataType.BYTE);
        TransBytes (out LimitLV, vBytes, NetDataType.WORD);
        TransBytes (out ShopCount, vBytes, NetDataType.BYTE);
        ShopInfo = new tagMCFlashSaleShop[ShopCount];
        for (int i = 0; i < ShopCount; i ++) {
            ShopInfo[i] = new tagMCFlashSaleShop();
            TransBytes (out ShopInfo[i].DayIndex, vBytes, NetDataType.BYTE);
            TransBytes (out ShopInfo[i].TimeIndex, vBytes, NetDataType.BYTE);
            TransBytes (out ShopInfo[i].GiftbagCount, vBytes, NetDataType.BYTE);
            ShopInfo[i].GiftbagInfo = new tagMCFlashSaleGiftbag[ShopInfo[i].GiftbagCount];
            for (int j = 0; j < ShopInfo[i].GiftbagCount; j ++) {
                ShopInfo[i].GiftbagInfo[j] = new tagMCFlashSaleGiftbag();
                TransBytes (out ShopInfo[i].GiftbagInfo[j].GiftID, vBytes, NetDataType.DWORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].BuyCountLimit, vBytes, NetDataType.BYTE);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].ServerBuyCountLimit, vBytes, NetDataType.WORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyType, vBytes, NetDataType.BYTE);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyNumber, vBytes, NetDataType.DWORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].MoneyOriginal, vBytes, NetDataType.DWORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].ItemID, vBytes, NetDataType.DWORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].ItemCount, vBytes, NetDataType.WORD);
                TransBytes (out ShopInfo[i].GiftbagInfo[j].IsBind, vBytes, NetDataType.BYTE);
            }
        }
    }
    public struct tagMCFlashSaleGiftbag {
        public uint GiftID;        //商城表的物品ID
        public byte BuyCountLimit;        //限购数
        public ushort ServerBuyCountLimit;        //全服限购数
        public byte MoneyType;        //消耗货币类型
        public uint MoneyNumber;        //消耗货币数量
        public uint MoneyOriginal;        //原价
        public uint ItemID;
        public ushort ItemCount;
        public byte IsBind;
    }
    public struct tagMCFlashSaleShop {
        public byte DayIndex;        // 活动第几天
        public byte TimeIndex;        // 第几个时间段
        public byte GiftbagCount;        // 商店礼包数
        public  tagMCFlashSaleGiftbag[] GiftbagInfo;        // 礼包信息
    }
    public struct tagMCFlashSaleTime {
        public string StartTime;        // 开始时间 H:M
        public string EndtTime;        // 结束时间 H:M
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA17_tagMCFlashSaleInfo.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: ed9668281d90fdc4f97232ce3fcd3c9d
timeCreated: 1539228128
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs
New file
@@ -0,0 +1,31 @@
using UnityEngine;
using System.Collections;
// AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
public class HAA18_tagMCFlashSaleAppointmentInfo : GameNetPackBasic {
    public byte IsAll;    // 是否全部
    public ushort GoodsCount;    // 商品数
    public  tagMCFlashSaleAppointmentState[] GoodsList;    // 预约的商品
    public HAA18_tagMCFlashSaleAppointmentInfo () {
        _cmd = (ushort)0xAA18;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out IsAll, vBytes, NetDataType.BYTE);
        TransBytes (out GoodsCount, vBytes, NetDataType.WORD);
        GoodsList = new tagMCFlashSaleAppointmentState[GoodsCount];
        for (int i = 0; i < GoodsCount; i ++) {
            GoodsList[i] = new tagMCFlashSaleAppointmentState();
            TransBytes (out GoodsList[i].GoodsMark, vBytes, NetDataType.DWORD);
            TransBytes (out GoodsList[i].State, vBytes, NetDataType.BYTE);
        }
    }
    public struct tagMCFlashSaleAppointmentState {
        public uint GoodsMark;        // 商品标识
        public byte State;        // 是否预约
    }
}
Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Core/NetworkPackage/ServerPack/HAA_SaleActivity/HAA18_tagMCFlashSaleAppointmentInfo.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 44e6594130c5e614c8411949a184b843
timeCreated: 1539228128
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/ResModule/InstanceResourcesLoader.cs
@@ -26,6 +26,30 @@
        return LoadModelPrefab(raceSuffix, _m.MODE);
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Fight()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralConfig.Instance.ModeDefaultConfig[1][1]);
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Func()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralConfig.Instance.ModeDefaultConfig[0][1]);
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Horse()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralConfig.Instance.ModeDefaultConfig[3][1]);
    }
    public static RuntimeAnimatorController LoadDefaultMobAnimatorController_Pet()
    {
        return AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix,
                                                          GeneralConfig.Instance.ModeDefaultConfig[2][1]);
    }
    public static GameObject LoadDefaultFightNPC()
    {
        return LoadMob(GeneralConfig.Instance.ModeDefaultConfig[1][0],
Core/SDK/SDKUtility.cs
@@ -712,7 +712,7 @@
                            m_Json["roleID"] = PlayerDatas.Instance.baseData.PlayerID;
                            m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName;
                            m_Json["level"] = PlayerDatas.Instance.baseData.LV.ToString();
                            m_Json["sid"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
                            m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag;
                        }
                        if (ChannelPlatform == E_ChannelPlatform.Mr)
@@ -890,7 +890,7 @@
        m_Json["roleID"] = roleID;
        m_Json["roleName"] = roleName;
        m_Json["sid"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
        m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag;
        m_Json["serverName"] = ServerListCenter.Instance.currentServer.name;
        m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName;
        m_Json["level"] = "1";
@@ -908,7 +908,7 @@
        m_Json["roleID"] = roleID;
        m_Json["roleName"] = roleName;
        m_Json["sid"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
        m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag;
        m_Json["serverName"] = ServerListCenter.Instance.currentServer.name;
        m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName;
        m_Json["level"] = PlayerDatas.Instance.baseData.LV;
@@ -927,7 +927,7 @@
        m_Json["roleID"] = PlayerDatas.Instance.PlayerId.ToString();
        m_Json["roleName"] = PlayerDatas.Instance.baseData.PlayerName;
        m_Json["sid"] = "s" + ServerListCenter.Instance.currentServer.region_flag;
        m_Json["sid"] = ServerListCenter.Instance.currentServer.region_flag;
        m_Json["serverName"] = ServerListCenter.Instance.currentServer.name;
        m_Json["familyName"] = PlayerDatas.Instance.baseData.FamilyName;
        m_Json["level"] = PlayerDatas.Instance.baseData.LV;
Fight/Actor/Status/Status_Polymorph.cs
@@ -49,7 +49,36 @@
        if (_actor != null)
        {
            _actor.Polymorph(false);
            var _config = Config.Instance.Get<TableConfig.SkillConfig>(h0605.SkillID);
            int _npcID = 0;
            if (_config.Effect1 == 1063)
            {
                _npcID = _config.EffectValue11;
            }
            else if (_config.Effect2 == 1063)
            {
                _npcID = _config.EffectValue21;
            }
            else if (_config.Effect3 == 1063)
            {
                _npcID = _config.EffectValue31;
            }
            else if (_config.Effect4 == 1063)
            {
                _npcID = _config.EffectValue41;
            }
            else if (_config.Effect5 == 1063)
            {
                _npcID = _config.EffectValue51;
            }
            else if (_config.Effect6 == 1063)
            {
                _npcID = _config.EffectValue61;
            }
            _actor.Polymorph(false, _npcID);
        }
    }
}
Fight/GameActor/GA_NpcCollect.cs
@@ -109,6 +109,17 @@
                m_Animator = m_Model.GetComponent<Animator>();
                if (m_Animator)
                {
                    RuntimeAnimatorController _controller = null;
                    if (m_LoadDefaultRes)
                    {
                        _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
                    }
                    else
                    {
                        _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NpcConfig.MODE);
                    }
                    m_Animator.runtimeAnimatorController = _controller;
                    m_Animator.enabled = true;
                    m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)clientInstID);
                }
Fight/GameActor/GActorNpcFight.cs
@@ -31,7 +31,7 @@
    {
        get
        {
            if (!m_Animator)
            if (!m_Animator || !m_Animator.runtimeAnimatorController)
            {
                return -1;
            }
@@ -40,7 +40,7 @@
        set
        {
            if (m_Animator)
            if (m_Animator && m_Animator.runtimeAnimatorController)
            {
                if (m_Animator.parameterCount > 0)
                {
@@ -127,7 +127,27 @@
                if (m_Animator)
                {
                    RuntimeAnimatorController _controller = null;
                    if (m_LoadDefaultRes)
                    {
                        if (this is GA_Pet)
                        {
                            _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Pet();
                        }
                        else
                        {
                            _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
                        }
                    }
                    else
                    {
                        _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NpcConfig.MODE);
                    }
                    m_Animator.runtimeAnimatorController = _controller;
                    m_Animator.enabled = true;
                    if (m_Animator.parameterCount > 0)
                    {
                        m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)clientInstID);
@@ -254,6 +274,7 @@
        if (m_Animator)
        {
            m_Animator.runtimeAnimatorController = null;
            NextAction = 0;
            m_Animator.enabled = false;
            m_Animator = null;
@@ -731,6 +752,7 @@
    public sealed override void Polymorph(bool doOrNo, int npcID)
    {
        IsPolyMorph = doOrNo;
        var _npcConfig = Config.Instance.Get<NPCConfig>(npcID);
        if (IsPolyMorph)
        {
@@ -752,6 +774,16 @@
            var _a = m_SheepModel.GetComponent<Animator>();
            if (_a)
            {
                RuntimeAnimatorController _controller = null;
                if (m_SheepIsDefaultNpc)
                {
                    _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Fight();
                }
                else
                {
                    _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, _npcConfig.MODE);
                }
                _a.enabled = true;
                _a.SetInteger(GAStaticDefine.Param_ActorInstID, (int)ClientInstID);
                m_Animator.enabled = false;
@@ -773,13 +805,20 @@
        {
            if (m_SheepModel)
            {
                var _a = m_SheepModel.GetComponent<Animator>();
                if (_a)
                {
                    _a.enabled = false;
                    _a.runtimeAnimatorController = null;
                }
                if (m_SheepIsDefaultNpc)
                {
                    GameObjectPoolManager.Instance.ReleaseDefaultFightNPC(m_SheepModel);
                }
                else
                {
                    var _prefab = InstanceResourcesLoader.LoadNpc(10101001);
                    var _prefab = InstanceResourcesLoader.LoadNpc(npcID);
                    GameObjectPoolManager.Instance.ReleaseGameObject(_prefab, m_SheepModel);
                }
            }
Fight/GameActor/GActorNpcNoFight.cs
@@ -128,6 +128,7 @@
        if (m_Animator)
        {
            m_Animator.runtimeAnimatorController = null;
            m_Animator.enabled = false;
            m_Animator = null;
        }
@@ -141,7 +142,7 @@
            m_Dig = null;
        }
        if(Root)
        if (Root)
        {
            Root.localScale = Vector3.one;
        }
@@ -190,6 +191,16 @@
                m_Animator = m_Model.GetComponent<Animator>();
                if (m_Animator)
                {
                    RuntimeAnimatorController _controller = null;
                    if (m_LoadDefaultRes)
                    {
                        _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Func();
                    }
                    else
                    {
                        _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, NpcConfig.MODE);
                    }
                    m_Animator.runtimeAnimatorController = _controller;
                    m_Animator.enabled = true;
                    m_Animator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)clientInstID);
                }
Fight/GameActor/GActorPlayerBase.cs
@@ -151,7 +151,7 @@
                }
                else
                {
                    var _prefab = InstanceResourcesLoader.LoadNpc(10101001);
                    var _prefab = InstanceResourcesLoader.LoadNpc(npcID);
                    GameObjectPoolManager.Instance.ReleaseGameObject(_prefab, m_SheepModel);
                }
            }
@@ -1135,6 +1135,7 @@
            m_HorseModel = null;
            if (m_HorseAnimator)
            {
                m_HorseAnimator.runtimeAnimatorController = null;
                m_HorseAnimator.enabled = false;
                m_HorseAnimator = null;
            }
@@ -1225,6 +1226,7 @@
                m_HorseModel = null;
                if (m_HorseAnimator)
                {
                    m_HorseAnimator.runtimeAnimatorController = null;
                    m_HorseAnimator.enabled = false;
                    m_HorseAnimator = null;
                }
@@ -1251,6 +1253,18 @@
            m_HorseModel = GameObjectPoolManager.Instance.RequestGameObject(_prefab);
            m_HorseAnimator = m_HorseModel.GetComponent<Animator>();
            RuntimeAnimatorController _controller = null;
            if (m_LoadDefaultHorse)
            {
                _controller = InstanceResourcesLoader.LoadDefaultMobAnimatorController_Horse();
            }
            else
            {
                _controller = AnimatorControllerLoader.LoadMobController(AnimatorControllerLoader.controllerSuffix, _modelResConfig.ResourcesName);
            }
            m_HorseAnimator.runtimeAnimatorController = _controller;
            m_HorseAnimator.enabled = true;
            // 先设置根节点
Fight/PreFightMission.cs
@@ -951,11 +951,17 @@
        yield return WaitingForSecondConst.WaitMS500;
        string _path = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1000";
        if(!WindowCenter.Instance.uiRoot.transform.Find(_path))
        {
            _path = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1001";
        }
        // 打开引导界面
        NewGuideModel _model2 = ModelCenter.Instance.GetModel<NewGuideModel>();
        _model2.showMask = true;
        _model2.content = "点击开始<color=#00ff00>试炼</color>";
        _model2.componentPath = "BaseCanvas/MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1001";
        _model2.componentPath = _path;
        _model2.size = new Vector2(276, 72);
        _model2.direction = 3;
        _model2.clickClosed = true;
@@ -964,7 +970,7 @@
        {
            GA_Hero.s_MapSwitching = false;
            _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/TaskAndTeamTip/TaskListTip/Parent/TaskScroll View/Content/Main_1001");
            _temp = WindowCenter.Instance.uiRoot.transform.Find(_path);
            var _btn = _temp.GetComponent<UnityEngine.UI.Button>();
            if (_btn)
            {
System/Backpack/BackpackData.cs
@@ -13,12 +13,14 @@
        public int id;
        public int count;
        public bool bind;
        public int quality;
        public Item(int _id, int _count)
        {
            this.id = _id;
            this.count = _count;
            this.bind = false;
            this.quality = 0;
        }
        public Item(int _id, int _count, bool _bind)
@@ -26,6 +28,15 @@
            this.id = _id;
            this.count = _count;
            this.bind = _bind;
            this.quality = 0;
        }
        public Item(int _id, int _count, bool _bind, int _quality)
        {
            this.id = _id;
            this.count = _count;
            this.bind = _bind;
            this.quality = _quality;
        }
    }
System/ClientVersion/VersionConfig.cs
@@ -228,4 +228,19 @@
        }
    }
    public static int GetVersionNumber(string version)
    {
        var numberStrings = version.Split('.');
        var number = 0;
        for (var i = 0; i < Mathf.Min(numberStrings.Length, 3); i++)
        {
            var temp = 0;
            int.TryParse(numberStrings[i], out temp);
            number += temp * MathUtility.Power(1000, 2 - i);
        }
        return number;
    }
}
System/ClientVersion/VersionUtility.cs
@@ -322,6 +322,11 @@
        }
    }
    public bool IsShangGu()
    {
        return VersionConfig.Get().appId == "815035927";
    }
    public class VersionInfo
    {
        public int ForceCount;
System/Compose/New/ComposeEquipWin.cs
@@ -24,6 +24,8 @@
        [SerializeField]
        Text successRateText;
        [SerializeField] Text dismantleText;
        [SerializeField]
        Button helpBtn;
@@ -177,8 +179,8 @@
        private void CreateCell()
        {
            dismantleText.gameObject.SetActive(false);
            cellCtrl.Refresh();
            if(curSecondType == 0)
            {
                ChangeUIState(true, false,false);
@@ -313,7 +315,7 @@
                curComposeEquipIndex = -1;
                selectModel.ClearSelectModel();
            }
            CreateCell();
        }
@@ -366,6 +368,24 @@
                ItemCompoundConfig tagItemCompound = thirdTypelist[curComposeEquipIndex];
                ClickEquipTypeCell(tagItemCompound, curComposeEquipIndex);
            }
            if(thirdTypelist.Count > 1)
            {
                ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(thirdTypelist[0].makeID);
                if (itemConfig != null && itemConfig.ItemColor == 6)
                {
                    dismantleText.gameObject.SetActive(true);
                }
                else
                {
                    dismantleText.gameObject.SetActive(false);
                }
            }
            else
            {
                dismantleText.gameObject.SetActive(false);
            }
        }
        private void RefreshEquipTypeLineCell(ScrollerDataType type, CellView cell)
System/DogzDungeon/DogzDungeonWin.cs
@@ -109,6 +109,7 @@
        {
            if (PlayerDatas.Instance.baseData.MapID == DogzDungeonModel.DATA_MAPID)
            {
                WindowJumpMgr.Instance.ClearJumpData();
                WindowCenter.Instance.Close<LootPreciousFrameWin>();
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
System/FakeDungeon/FakeDemonJarDungeonStage.cs
@@ -109,7 +109,7 @@
    {
        if (isReconnected)
        {
            if (surplusTime < 0f)
            if (surplusTime <= 0f)
            {
                if (fighting)
                {
System/GMCommand/GMInputWin.cs
@@ -87,22 +87,6 @@
            {
                OnClickSendBtn();
            }
            //if(Input.GetKeyDown(KeyCode.J))
            //{
            //    EquipWashModel washModel = ModelCenter.Instance.GetModel<EquipWashModel>();
            //    LocalSave.SetBool(washModel.MasterGroup1ActiveKey, false);
            //    washModel.SetMasterGroupActiveRecord(2,1, washModel.MasterGroup1ActiveKey);
            //    WindowCenter.Instance.Open<WashMasterActiveWin>();
            //}
            //if (Input.GetKeyDown(KeyCode.O))
            //{
            //    EquipWashModel washModel = ModelCenter.Instance.GetModel<EquipWashModel>();
            //    LocalSave.SetInt(washModel.MasterGroup1RaiseKey, 2);
            //    washModel.SetMasterGroupRaiseRecord(4, 1, washModel.MasterGroup1RaiseKey);
            //    WindowCenter.Instance.Open<WashMasterActiveWin>();
            //}
        }
        private void CreateCmdCell()
System/KnapSack/Logic/ItemTipsModel.cs
@@ -710,6 +710,12 @@
                attrData.SetTipsFuncBtn(ItemWinBtnType.sell, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendSellQuest(ItemWinBtnType.sell,attrData); });
            }
            List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.Def_IudetItemDecompound);
            if (dismantleReturnlist != null && dismantleReturnlist.Count > 0)
            {
                attrData.SetTipsFuncBtn(ItemWinBtnType.dismantle, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendDismantleQuest(ItemWinBtnType.dismantle, attrData); });
            }
            if (!isOverdue)
            {
                if(attrData.itemConfig.JumpComposeCondi != null && attrData.itemConfig.JumpComposeCondi.Length > 0)
@@ -1092,7 +1098,6 @@
            }
            return s;
        }
        #endregion
        #region 设置传奇属性
@@ -2023,11 +2028,16 @@
            if(type == PackType.rptDogzEquip || type == PackType.rptDogzItem)
            {
                strengthDataDict = new Dictionary<int, int>();
                if (GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus) != null)
                {
                    StrengthLV = GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus)[0];
                }
                strengthDataDict = beastModel.SiteEnhancementAttribute(type,index);
                Dictionary<int,int> getStregthDict = beastModel.SiteEnhancementAttribute(type,index);
                foreach(var key in getStregthDict.Keys)
                {
                    strengthDataDict.Add(key,getStregthDict[key]);
                }
            }
            SetWinType();
@@ -2059,19 +2069,29 @@
        {
            legendIdlist = new List<int>();
            legendValuelist = new List<int>();
            string attrCntKey = StringUtility.Contact(itemConfig.ItemColor, itemConfig.StarLevel);
            if (itemTipsModel.legendAttrIDPreviewDict.ContainsKey(itemConfig.EquipPlace))
            {
                foreach (var attrType in itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace].Keys)
                {
                    switch (attrType)
                    int attrCnt = 0;
                    if (itemTipsModel.legendAttrCntPreviewDict.ContainsKey(attrCntKey))
                    {
                        case LegendAttrType.Pursuit:
                            legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                            break;
                        case LegendAttrType.Fixed:
                            legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                            break;
                        attrCnt = itemTipsModel.legendAttrCntPreviewDict[attrCntKey][attrType];
                    }
                    if(attrCnt > 0)
                    {
                        switch (attrType)
                        {
                            case LegendAttrType.Pursuit:
                                legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                                break;
                            case LegendAttrType.Fixed:
                                legendIdlist.AddRange(itemTipsModel.legendAttrIDPreviewDict[itemConfig.EquipPlace][attrType]);
                                break;
                        }
                    }
                }
            }
            int i = 0;
System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -1083,6 +1083,68 @@
        }
        #endregion
        #region 发送拆解请求
        public void SendDismantleQuest(ItemWinBtnType btnType, ItemAttrData attrData)
        {
            List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.Def_IudetItemDecompound);
            int needGridCnt = 0;
            int fixedMatcnt = 0;
            int unfixedMatId = 0;
            for (int i = 0; i < dismantleReturnlist.Count; i++)
            {
                if (i == 0)
                {
                    if (dismantleReturnlist[i] != 0)
                    {
                        needGridCnt += 1;
                        unfixedMatId = dismantleReturnlist[i];
                    }
                }
                else
                {
                    if ((i - 1) % 3 == 0)
                    {
                        if (dismantleReturnlist[i] != 0)
                        {
                            needGridCnt += 1;
                            fixedMatcnt += dismantleReturnlist[i + 1];
                        }
                    }
                }
            }
            int offsetGrid = needGridCnt - playerPack.GetReaminGridCount(PackType.rptItem);
            if (offsetGrid > 0)
            {
                SysNotifyMgr.Instance.ShowTip("BagFull102", attrData.itemConfig.ItemName, offsetGrid);
                return;
            }
            else
            {
                ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(unfixedMatId);
                if(itemConfig != null)
                {
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("PinkChaiRemind2", fixedMatcnt,itemConfig.LV),
                        (bool isOk)=>
                        {
                            if(isOk)
                            {
                                CA313_tagCMItemDecompound decompound = new CA313_tagCMItemDecompound();
                                decompound.Index = (byte)attrData.index;
                                GameNetSystem.Instance.SendInfo(decompound);
                            }
                        });
                }
                else
                {
                    CA313_tagCMItemDecompound decompound = new CA313_tagCMItemDecompound();
                    decompound.Index = (byte)attrData.index;
                    GameNetSystem.Instance.SendInfo(decompound);
                }
            }
        }
        #endregion
        #region 发送续费请求 
        public void SendRenewalQuest(ItemWinBtnType btnType,int index)
        {
@@ -1116,7 +1178,7 @@
        #endregion
       #region 获取仓库数据
        #region 获取仓库数据
        public void SendOpenWarehouse()
        {
            CA204_tagCMOpenLongWarehouse openWarehouse = new CA204_tagCMOpenLongWarehouse();
System/KnapSack/Logic/PlayerStarNumWin.cs
@@ -269,11 +269,11 @@
            {
                if (_playerProModel.ISPercentage == 0)
                {
                    strPro = _playerProModel.Name + "<color=#109D06FF>" + "    +" + proValue + "</color>";
                    strPro = _playerProModel.Name + "<color=#109D06FF>" + " +" + proValue + "</color>";
                }
                else if (_playerProModel.ISPercentage == 1)
                {
                    strPro = _playerProModel.Name + "<color=#109D06FF>" + "    +" + (float)Math.Round(proValue / 100f, 1) + "%" + "</color>";
                    strPro = _playerProModel.Name + "<color=#109D06FF>" + " +" + (float)Math.Round(proValue / 100f, 1) + "%" + "</color>";
                }
            }
            else
System/KnapSack/NewItemGetWin.cs
@@ -90,8 +90,9 @@
                    var itemBehaviour = RequireBehaviour();
                    if (itemBehaviour != null)
                    {
                        var quality = modelInterface.GetItemQuality(itemId, model.useDataDict);
                        itemBehaviour.transform.SetParentEx(this.transform, Vector3.zero, Quaternion.identity, Vector3.one);
                        itemBehaviour.Begin(new Item(itemId, 1), m_StartPoint.localPosition, m_EndPoint.localPosition, OnBehaviourFinished);
                        itemBehaviour.Begin(new Item(itemId, 1, false, quality), m_StartPoint.localPosition, m_EndPoint.localPosition, OnBehaviourFinished);
                        showingItems.Add(itemBehaviour.gameObject);
                    }
                }
System/Launch/LaunchWin.cs
@@ -16,8 +16,11 @@
    {
        [SerializeField] UIAlphaTween m_AlphaTween;
        [SerializeField] Image m_BackGround;
        [SerializeField] RectTransform m_AndroidProgressContainer;
        [SerializeField] SmoothSlider m_ProgressSlider;
        [SerializeField] Text m_Progress;
        [SerializeField] RectTransform m_IosProgressContainer;
        [SerializeField] Text m_IosProgressTip;
        [SerializeField] Text m_BuildTime;
        [SerializeField] Text m_Version;
@@ -61,11 +64,20 @@
                m_BuildTime.text = "";
            }
            m_Progress.text = StringUtility.Contact(0, "%");
            UpdateLoadingProgress(Launch.currentStage, Launch.progress);
            Launch.progressEvent += UpdateLoadingProgress;
            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                m_AndroidProgressContainer.gameObject.SetActive(false);
                m_IosProgressContainer.gameObject.SetActive(true);
                m_IosProgressTip.text = Language.GetFromLocal(30);
            }
            else
            {
                m_AndroidProgressContainer.gameObject.SetActive(true);
                m_IosProgressContainer.gameObject.SetActive(false);
                m_Progress.text = VersionUtility.Instance.IsShangGu() ? "" : StringUtility.Contact(0, "%");
                UpdateLoadingProgress(Launch.currentStage, Launch.progress);
                Launch.progressEvent += UpdateLoadingProgress;
            }
        }
        protected override void OnAfterOpen()
@@ -112,24 +124,36 @@
        {
            base.LateUpdate();
            if (trueProgress > 0.9599f)
            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                behaviourProgress = Mathf.Clamp01(behaviourProgress + Time.deltaTime * 0.2f);
                m_IosProgressContainer.gameObject.SetActive(Launch.currentStage != Launch.LaunchStage.DownLoad);
                var remainder = ((int)Time.time) % 3;
                var dot = remainder == 0 ? "." : remainder == 1 ? ".." : "...";
                m_IosProgressTip.text = StringUtility.Contact(Language.GetFromLocal(30), dot);
            }
            else
            {
                behaviourProgress = Mathf.SmoothDamp(behaviourProgress, trueProgress, ref refProgress, 0.2f);
                if (trueProgress > 0.9599f)
                {
                    behaviourProgress = Mathf.Clamp01(behaviourProgress + Time.deltaTime * 0.2f);
                }
                else
                {
                    behaviourProgress = Mathf.SmoothDamp(behaviourProgress, trueProgress, ref refProgress, 0.2f);
                }
                m_ProgressSlider.value = behaviourProgress;
                m_Progress.text = VersionUtility.Instance.IsShangGu() ? stepDescription :
                    StringUtility.Contact(stepDescription, Mathf.RoundToInt(behaviourProgress * 100), "%");
                if (!assetBuildTimeShowed && AssetVersionUtility.assetsBuildTime != DateTime.MinValue)
                {
                    assetBuildTimeShowed = true;
                    var totalMinute = (int)(AssetVersionUtility.assetsBuildTime - new DateTime(2018, 1, 1)).TotalMinutes;
                    m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", totalMinute.ToString());
                }
            }
            m_ProgressSlider.value = behaviourProgress;
            m_Progress.text = StringUtility.Contact(stepDescription, Mathf.RoundToInt(behaviourProgress * 100), "%");
            if (!assetBuildTimeShowed && AssetVersionUtility.assetsBuildTime != DateTime.MinValue)
            {
                assetBuildTimeShowed = true;
                var totalMinute = (int)(AssetVersionUtility.assetsBuildTime - new DateTime(2018, 1, 1)).TotalMinutes;
                m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", totalMinute.ToString());
            }
        }
System/MainInterfacePanel/PlayerTaskDatas.cs
@@ -885,7 +885,7 @@
            if (_DicTaskInformation[_MissionId].ContainsKey(_DictKey))
            {
                _DicTaskInformation[_MissionId][_DictKey] = _DictValue.ToString();
                if (_DictKey == "kaji" && _DictValue == 0)
                if (_DictKey == "kaji" && (_DictValue == 0|| _DictValue == 1))//kaji:0为主线卡级变更,kaji:1为魔族卡级变更
                {
                    if (CardLevelChange != null)
                    {
System/MainWin/SkillButton.cs
@@ -32,7 +32,13 @@
        [SerializeField] Image m_Icon;
        public Image icon { get { return m_Icon; } }
        [SerializeField] Transform m_Locked;
        public Transform locked { get { return m_Locked; } }
        public Transform locked
        {
            get
            {
                return m_Locked;
            }
        }
        [SerializeField] Text m_CoolDown;
        [SerializeField] Image m_CoolDownMask;
@@ -46,21 +52,27 @@
        bool isExit = false;
        float m_TotalCoolDown = 0f;
        public float totalCoolDown {
            get {
        public float totalCoolDown
        {
            get
            {
                return m_TotalCoolDown;
            }
            set {
            set
            {
                m_TotalCoolDown = value;
            }
        }
        float m_CoolDownCompleteTime = 0f;
        public float coolDownCompleteTime {
            get {
        public float coolDownCompleteTime
        {
            get
            {
                return m_CoolDownCompleteTime;
            }
            set {
            set
            {
                m_CoolDownCompleteTime = value;
            }
        }
@@ -75,14 +87,15 @@
            m_SkillData = _skillData;
            if (m_SkillData == null)
            {
                m_Locked.gameObject.SetActive(true);
                locked.gameObject.SetActive(true);
                m_Icon.gameObject.SetActive(false);
            }
            else
            {
                if (PreFightMission.Instance.IsFinished())
                if (PreFightMission.Instance.IsFinished()
                 || PreFightMission.Instance.s_MissionDict.ContainsKey(1002))
                {
                    m_Locked.gameObject.SetActive(false);
                    locked.gameObject.SetActive(false);
                    m_Icon.gameObject.SetActive(true);
                }
                var skillConfig = m_SkillData.skillCfg;
System/NewBieGuidance/FunctionalGuideCenter.cs
@@ -271,10 +271,12 @@
                case GuideTriggerType.QuestCanAward:
                    return mainTaskId == config.Condition && taskmodel.currentMissionState == 2;
                case GuideTriggerType.QuestLimit:
                    return taskmodel.currentMission == config.Condition &&
                    return mainTaskId == config.Condition &&
                        (taskmodel.GetTaskStatus(config.Condition) == PlayerTaskDatas.TaskStatus.CardLevel || taskmodel.GetTaskStatus(config.Condition) == PlayerTaskDatas.TaskStatus.TreasureCardLevel);
                case GuideTriggerType.QuestContinue:
                    return taskmodel.currentMission == config.Condition && (taskmodel.GetTaskStatus(config.Condition) == PlayerTaskDatas.TaskStatus.Normal);
                    var questState = taskmodel.SideQuestState(config.Condition);
                    var taskStatus = taskmodel.GetTaskStatus(config.Condition);
                    return questState == 1 && (taskStatus == PlayerTaskDatas.TaskStatus.Normal || taskStatus == PlayerTaskDatas.TaskStatus.TreasureCardLevel);
                case GuideTriggerType.Treasure:
                    if (!model.newGotShowing)
                    {
System/OpenServerActivity/FlashRushToBuyCoolDown.cs
New file
@@ -0,0 +1,85 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class FlashRushToBuyCoolDown : MonoBehaviour
    {
        [SerializeField] Text timeText;
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        bool isReplace = false;
        bool isStartReplace = false;
        private void Awake()
        {
            GlobalTimeEvent.Instance.halfMinuteEvent += UpdateHalfMinute;
        }
        private void OnEnable()
        {
            SecondEvent();
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
        }
        private void OnDisable()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
        }
        private void UpdateHalfMinute()
        {
            if (!isStartReplace) return;
            isReplace = !isReplace;
        }
        private void SecondEvent()
        {
            DisplayTime();
        }
        void DisplayTime()
        {
            var operation = rushToBuyModel.GetOperationFlashRushToBuy();
            if (operation == null) return;
            int seconds = 0;
            OperationTime operationTime;
            OperationFlashRushToBuy.FlashSaleShop saleShop;
            FlashRushToBuyModel.FlashRushToBuySate flashState = rushToBuyModel.GetActivityState(out seconds,out operationTime,out saleShop);
            isStartReplace = false;
            switch (flashState)
            {
                case FlashRushToBuyModel.FlashRushToBuySate.NoOpen:
                    break;
                case FlashRushToBuyModel.FlashRushToBuySate.InAdvance:
                    if(seconds <= 3600)
                    {
                        isStartReplace = true;
                        if(!isReplace)
                        {
                            timeText.text = TimeUtility.SecondsToHMS(seconds);
                        }
                        else
                        {
                            timeText.text = operation.ToDisplayBuyTime(operationTime.startHour, operationTime.startMinute);
                        }
                    }
                    else
                    {
                        timeText.text = operation.ToDisplayBuyTime(operationTime.startHour, operationTime.startMinute);
                    }
                    break;
                case FlashRushToBuyModel.FlashRushToBuySate.Begining:
                    timeText.text = "秒杀中";
                    break;
                case FlashRushToBuyModel.FlashRushToBuySate.End:
                    timeText.text = "活动已结束";
                    break;
            }
        }
    }
}
System/OpenServerActivity/FlashRushToBuyCoolDown.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashRushToBuyCoolDown.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 00bbdfc8d38efc7488d8dc83b041b07a
timeCreated: 1539088207
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/FlashRushToBuyModel.cs
New file
@@ -0,0 +1,363 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Snxxz.UI
{
    public class FlashRushToBuyModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk,IOpenServerActivity
    {
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel<HeavenBattleModel>(); } }
        public override void Init()
        {
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
            OperationTimeHepler.Instance.operationAdvanceEvent += OperationAdvanceEvent;
            OpenServerActivityCenter.Instance.Register((int)OpenServerActivityCenter.OSActivityType.FlashRushToBuy, this);
        }
        public void OnBeforePlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
            //UpdateRedpoint();
        }
        public override void UnInit()
        {
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
            OperationTimeHepler.Instance.operationAdvanceEvent -= OperationAdvanceEvent;
        }
        public bool IsOpen
        {
            get
            {
                var operation = GetOperationFlashRushToBuy();
                if(operation != null)
                {
                    return operation.SatisfyOpenCondition();
                }
                return false;
            }
        }
        public bool priorityOpen
        {
            get
            {
                return flashSaleRedpoint.state == RedPointState.Simple;
            }
        }
        public bool IsAdvance
        {
            get
            {
                return OperationTimeHepler.Instance.SatisfyAdvanceCondition(Operation.FlashRushToBuy);
            }
        }
        public void SetDefaultSelectSaleTime()
        {
            OperationFlashRushToBuy operation = GetOperationFlashRushToBuy();
            if (presentFlashShop != null)
            {
                int seconds = 0;
                int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow,presentFlashShop.dayIndex,presentFlashShop.timeIndex, out seconds);
                if(buyState != 1)
                {
                    return;
                }
            }
            for (int i = 0; i < operation.flashShops.Count; i++)
            {
                int days = operation.totalDays + 1;
                int dayIndex = i / (operation.flashShops.Count / days);
                int timeIndex = i % (operation.flashShops.Count / days);
                int seconds = 0;
                OperationTime operationTime = operation.times[timeIndex];
                var date = operation.startDate;
                int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, dayIndex, timeIndex, out seconds);
                switch(buyState)
                {
                    case -1:
                    case 0:
                        UpdateSelectFlashSaleTime(dayIndex,timeIndex);
                        return;
                }
            }
        }
        public void ResetFlashShop()
        {
            presentFlashShop = null;
        }
        #region 本地数据处理
        public OperationFlashRushToBuy.FlashSaleShop presentFlashShop { get; private set; }
        public event Action UpdateSelectSaleTimeEvent;
        public void UpdateSelectFlashSaleTime(int dayIndex,int timeIndex)
        {
            presentFlashShop = null;
            OperationFlashRushToBuy operation = GetOperationFlashRushToBuy();
            if(operation != null)
            {
                OperationFlashRushToBuy.FlashSaleShop flashShop;
                operation.TryGetFlashShop(dayIndex, timeIndex, out flashShop);
                presentFlashShop = flashShop;
                if(UpdateSelectSaleTimeEvent != null)
                {
                    UpdateSelectSaleTimeEvent();
                }
            }
        }
        public OperationFlashRushToBuy GetOperationFlashRushToBuy()
        {
            OperationBase operationBase;
            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase))
            {
                return operationBase as OperationFlashRushToBuy;
            }
            return null;
        }
        #endregion
        #region 协议
        public event Action UpdateAllAppointmentEvent;
        public event Action<int> UpdateAppointmentEvent;
        public void UpdateFlashSaleAppointmentInfo(HAA18_tagMCFlashSaleAppointmentInfo appointmentInfo)
        {
            var operation = GetOperationFlashRushToBuy();
            if (operation == null) return;
            if (appointmentInfo.IsAll == 1)
            {
                for (int j = 0; j < operation.flashShops.Count; j++)
                {
                    var saleItems = operation.flashShops[j].items;
                    for (int k = 0; k < saleItems.Length; k++)
                    {
                        saleItems[k].isAppointment = 0;
                    }
                }
            }
            for (int i = 0; i < appointmentInfo.GoodsCount; i++)
            {
                var saleItemInfo = appointmentInfo.GoodsList[i];
                for (int j = 0; j < operation.flashShops.Count; j++)
                {
                    var saleItems = operation.flashShops[j].items;
                    for (int k = 0; k < saleItems.Length; k++)
                    {
                       if (saleItems[k].shopGuid == saleItemInfo.GoodsMark)
                        {
                            if(saleItems[k].isAppointment != saleItemInfo.State)
                            {
                                saleItems[k].isAppointment = saleItemInfo.State;
                                if(UpdateAppointmentEvent != null)
                                {
                                    UpdateAppointmentEvent((int)saleItemInfo.GoodsMark);
                                }
                            }
                        }
                    }
                }
            }
            if(appointmentInfo.IsAll == 1)
            {
                if (UpdateAllAppointmentEvent != null)
                {
                    UpdateAllAppointmentEvent();
                }
            }
        }
        /// <summary>
        /// Value1  商品ID  Value2 全服购买次数
        /// </summary>
        /// <returns></returns>
        public GameRecInfo GetFullServerInfo()
        {
            var infolist = battleModel.GetBatterInfoListByType(8);
            if(infolist != null && infolist.Count > 0)
            {
                return infolist[0];
            }
            return null;
        }
        /// <summary>
        ///  限时抢购预约
        /// </summary>
        public void SendFlashSaleAppointment(int shopGuid,int state)
        {
            CAA05_tagCMFlashSaleAppointment appointment = new CAA05_tagCMFlashSaleAppointment();
            appointment.GoodsID = (uint)shopGuid;
            appointment.State = (byte)state;
            GameNetSystem.Instance.SendInfo(appointment);
        }
        #endregion
        /// <summary>
        /// 获得限时抢购活动状态
        /// </summary>
        /// <param name="seconds"></param>
        /// <returns></returns>
        public FlashRushToBuySate GetActivityState(out int seconds,out OperationTime operationTime,out OperationFlashRushToBuy.FlashSaleShop saleShop)
        {
            seconds = 0;
            saleShop = null;
            operationTime = default(OperationTime);
            var operation = GetOperationFlashRushToBuy();
            if (!IsOpen || operation == null) return FlashRushToBuySate.NoOpen;
            int openState = 0;
            int endState = 0;
            int openSeconds = 0;
            int endSeconds = 0;
            for(int i = 0; i < operation.flashShops.Count;i++)
            {
                OperationFlashRushToBuy.FlashSaleShop openSaleShop = operation.flashShops[i];
                operationTime = operation.times[openSaleShop.timeIndex];
                openState = operation.GetBuyTimeState(TimeUtility.ServerNow, openSaleShop.dayIndex, openSaleShop.timeIndex, out openSeconds);
                if(openState != 1)
                {
                    saleShop = openSaleShop;
                    break;
                }
            }
            if(operation.flashShops.Count > 0)
            {
                OperationFlashRushToBuy.FlashSaleShop endSaleShop = operation.flashShops[operation.flashShops.Count - 1];
                endState = operation.GetBuyTimeState(TimeUtility.ServerNow, endSaleShop.dayIndex, endSaleShop.timeIndex, out endSeconds);
            }
            switch(openState)
            {
                case -1:
                    seconds = openSeconds;
                    return FlashRushToBuySate.InAdvance;
                case 0:
                    return FlashRushToBuySate.Begining;
            }
            switch(endState)
            {
                case -1:
                    return FlashRushToBuySate.Begining;
                case 0:
                    return FlashRushToBuySate.Begining;
                case 1:
                    return FlashRushToBuySate.End;
                default:
                    return FlashRushToBuySate.NoOpen;
            }
        }
        public bool CheckIsPush(out OperationFlashRushToBuy.FlashSaleShop saleShop)
        {
            int seconds = 0;
            OperationTime operationTime;
            saleShop = null;
            var buyState = GetActivityState(out seconds,out operationTime,out saleShop);
            switch (buyState)
            {
                case FlashRushToBuySate.NoOpen:
                    break;
                case FlashRushToBuySate.InAdvance:
                    if(saleShop != null && seconds <= 180)
                    {
                       for(int i = 0; i < saleShop.items.Length; i++)
                        {
                            if(saleShop.items[i].isAppointment == 1)
                            {
                                return true;
                            }
                        }
                    }
                    break;
                case FlashRushToBuySate.Begining:
                    return true;
                case FlashRushToBuySate.End:
                    break;
            }
            return false;
        }
        private void OperationEndEvent(Operation type, int state)
        {
            if (type == Operation.FlashRushToBuy && state == 0)
            {
                UpdateRedpoint();
                if (onStateUpate != null)
                {
                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FlashRushToBuy);
                }
            }
        }
        private void OperationAdvanceEvent(Operation type)
        {
            if (type == Operation.FlashRushToBuy)
            {
                if (onStateUpate != null)
                {
                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FlashRushToBuy);
                }
            }
        }
        private void OperationStartEvent(Operation type, int state)
        {
            if (type == Operation.FlashRushToBuy && state == 0)
            {
                UpdateRedpoint();
                if (onStateUpate != null)
                {
                    onStateUpate((int)OpenServerActivityCenter.OSActivityType.FlashRushToBuy);
                }
            }
        }
        private void OnDayEvent()
        {
            UpdateRedpoint();
        }
        public void SetDayRemind()
        {
            if (flashSaleRedpoint.state == RedPointState.Simple)
            {
               // DayRemind.Instance.SetDayRemind(DayRemind.FLASHSALE_REDPOINT, true);
                UpdateRedpoint();
            }
        }
        public Redpoint flashSaleRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20914);
        public event Action<int> onStateUpate;
        private void UpdateRedpoint()
        {
            flashSaleRedpoint.state = RedPointState.None;
        }
        public enum FlashRushToBuySate
        {
            NoOpen, //活动未开启
            InAdvance,//提前
            Begining, //活动中
            End, //结束
        }
    }
}
System/OpenServerActivity/FlashRushToBuyModel.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashRushToBuyModel.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 1155d8a33808d2640ab01bedff0bb06b
timeCreated: 1539086199
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/FlashRushToBuyNotify.cs
New file
@@ -0,0 +1,35 @@
namespace Snxxz.UI
{
    public class FlashRushToBuyNotify : OpenServerActivityNotifyBase
    {
        public FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        public const string iconKey = "TB_BGL_2";
        private void OnEnable()
        {
            Display();
        }
        private void OnDisable()
        {
        }
        protected override void Display()
        {
            base.Display();
            titleText.text = "限时抢购";
            activityIcon.SetSprite(iconKey);
        }
        protected override void ClickGotoBtn()
        {
            base.ClickGotoBtn();
            this.gameObject.SetActive(false);
            WindowCenter.Instance.Open<FlashRushToBuyWin>();
        }
        protected override void ClickCloseBtn()
        {
            base.ClickCloseBtn();
        }
    }
}
System/OpenServerActivity/FlashRushToBuyNotify.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashRushToBuyNotify.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: f1b3cf08873bf564ea2ec5d7d71afd41
timeCreated: 1539423553
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/FlashRushToBuyWin.cs
New file
@@ -0,0 +1,126 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class FlashRushToBuyWin : Window
    {
        [SerializeField] ScrollerController saleItemCtrl;
        [SerializeField] ScrollerController saleTimeCtrl;
        [SerializeField] Text opreationTimeText;
        [SerializeField] Image moneyIcon;
        [SerializeField] Text moneyNumText;
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        OperationFlashRushToBuy operation = null;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            rushToBuyModel.SetDefaultSelectSaleTime();
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
            rushToBuyModel.UpdateSelectSaleTimeEvent += UpdateSelectSaleTime;
            SetDisplayModel();
            Display();
        }
        protected override void OnAfterOpen()
        {
            rushToBuyModel.SetDayRemind();
        }
        protected override void OnPreClose()
        {
            rushToBuyModel.UpdateSelectSaleTimeEvent -= UpdateSelectSaleTime;
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
            rushToBuyModel.ResetFlashShop();
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void SetDisplayModel()
        {
            operation = null;
            OperationBase operationBase;
            if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.FlashRushToBuy, out operationBase))
            {
               operation = operationBase as OperationFlashRushToBuy;
            }
        }
        private void Display()
        {
            if (rushToBuyModel.presentFlashShop == null|| operation == null) return;
            opreationTimeText.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime());
            if (rushToBuyModel.presentFlashShop.items.Length > 0)
            {
                var moneyType = rushToBuyModel.presentFlashShop.items[0].moneyType;
                moneyIcon.SetIconWithMoneyType(moneyType);
                moneyNumText.text = UIHelper.GetMoneyCnt(moneyType).ToString();
            }
            CreateOperationTimes();
            CreateSaleItem();
        }
        private void UpdateSelectSaleTime()
        {
            CreateSaleItem();
            saleTimeCtrl.m_Scorller.RefreshActiveCellViews();
        }
        private void CreateOperationTimes()
        {
            if (operation == null) return;
            saleTimeCtrl.Refresh();
            for (int i = 0; i < operation.flashShops.Count; i++)
            {
                saleTimeCtrl.AddCell(ScrollerDataType.Header, i);
            }
            saleTimeCtrl.Restart();
        }
        public void CreateSaleItem()
        {
            saleItemCtrl.Refresh();
            var flashItems = rushToBuyModel.presentFlashShop.items;
            for (int i = 0; i < flashItems.Length; i++)
            {
                saleItemCtrl.AddCell(ScrollerDataType.Header, i);
            }
            saleItemCtrl.Restart();
        }
        private void OperationTimeUpdateEvent(Operation type)
        {
            if (type == Operation.FlashRushToBuy)
            {
                Display();
            }
        }
        private void OperationStartEvent(Operation type, int state)
        {
            if (type == Operation.FlashRushToBuy && state == 0)
            {
                Display();
            }
        }
    }
}
System/OpenServerActivity/FlashRushToBuyWin.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashRushToBuyWin.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: e1ea7b55e1cc21b42906a2e6984b29cd
timeCreated: 1539069491
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/FlashSaleItemCell.cs
New file
@@ -0,0 +1,186 @@
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class FlashSaleItemCell : ScrollerUI
    {
        [SerializeField] CommonItemBaisc itemBaisc;
        [SerializeField] Text originalPrice;
        [SerializeField] Image originalMoneyIcon;
        [SerializeField] Text presentPrice;
        [SerializeField] Image presentMoneyIcon;
        [SerializeField] Image stateImg;
        [SerializeField] Button flashSaleBtn;
        [SerializeField] Text btnStateText;
        [SerializeField] Text fullServerRemainNum;
        public const int RefreshFullServerBuyType = 8;
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
        HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel<HeavenBattleModel>(); } }
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        OperationFlashRushToBuy.FlashSaleItem saleItem;
        int buyState = -1;
        private void OnEnable()
        {
            battleModel.RefreshGameRecInfoAct += UpdateFullServerBuy;
            storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
            rushToBuyModel.UpdateAllAppointmentEvent += UpdateAllAppointmentInfo;
            rushToBuyModel.UpdateAppointmentEvent += UpdateAppointmentInfo;
        }
        private void OnDisable()
        {
            storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
            battleModel.RefreshGameRecInfoAct -= UpdateFullServerBuy;
            rushToBuyModel.UpdateAllAppointmentEvent -= UpdateAllAppointmentInfo;
            rushToBuyModel.UpdateAppointmentEvent -= UpdateAppointmentInfo;
        }
        public override void Refresh(CellView cell)
        {
            if (rushToBuyModel.presentFlashShop == null) return;
            saleItem = rushToBuyModel.presentFlashShop.items[cell.index];
            ItemCellModel cellModel = new ItemCellModel(saleItem.itemId,true,(ulong)saleItem.itemCount,saleItem.isBind);
            itemBaisc.Init(cellModel);
            itemBaisc.cellBtn.RemoveAllListeners();
            itemBaisc.cellBtn.AddListener(()=>
            {
                ItemAttrData attrData = new ItemAttrData(saleItem.itemId,true, (ulong)saleItem.itemCount, -1,saleItem.isBind);
                tipsModel.SetItemTipsModel(attrData);
            });
            originalMoneyIcon.SetIconWithMoneyType(saleItem.moneyType);
            presentMoneyIcon.SetIconWithMoneyType(saleItem.moneyType);
            originalPrice.text = saleItem.moneyOriginal.ToString();
            presentPrice.text = saleItem.moneyNumber.ToString();
            UpdateSaleItem();
            UpdateSaleItemSellState();
        }
        private void RefreshBuyShopLimitEvent()
        {
            UpdateSaleItemSellState();
        }
        private void UpdateFullServerBuy(int type)
        {
            if (type != RefreshFullServerBuyType) return;
            UpdateSaleItemSellState();
        }
        private void UpdateAllAppointmentInfo()
        {
            UpdateSaleItem();
        }
        private void UpdateAppointmentInfo(int shopGuid)
        {
            if (saleItem == null || shopGuid != saleItem.shopGuid) return;
            UpdateSaleItem();
        }
        private void UpdateSaleItem()
        {
            if (rushToBuyModel.presentFlashShop == null) return;
            StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(saleItem.shopId);
            flashSaleBtn.RemoveAllListeners();
            var operation = rushToBuyModel.GetOperationFlashRushToBuy();
            int seconds = 0;
            buyState = operation.GetBuyTimeState(TimeUtility.ServerNow,rushToBuyModel.presentFlashShop.dayIndex,
                rushToBuyModel.presentFlashShop.timeIndex,out seconds);
            switch(buyState)
            {
                case -1:
                    if(saleItem.isAppointment == 0)
                    {
                        btnStateText.text = "预约";
                        flashSaleBtn.AddListener(() => { rushToBuyModel.SendFlashSaleAppointment(saleItem.shopGuid, 1); });
                    }
                    else
                    {
                        btnStateText.text = "取消预约";
                        flashSaleBtn.AddListener(() => { rushToBuyModel.SendFlashSaleAppointment(saleItem.shopGuid, 0); });
                    }
                    break;
                case 0:
                    btnStateText.text = "秒杀";
                    flashSaleBtn.AddListener(() => { storeModel.SendBuyShopItem(storeConfig,saleItem.itemCount); });
                    break;
            }
        }
        private void UpdateSaleItemSellState()
        {
            int fullSeverRemain = 0;
            int sellState = GetSellSate(out fullSeverRemain);
            fullServerRemainNum.text = fullSeverRemain.ToString();
            switch (sellState)
            {
                case 0:
                    stateImg.gameObject.SetActive(false);
                    flashSaleBtn.gameObject.SetActive(true);
                    break;
                case 1:
                    stateImg.gameObject.SetActive(true);
                    flashSaleBtn.gameObject.SetActive(false);
                    break;
                case 2:
                    stateImg.gameObject.SetActive(true);
                    flashSaleBtn.gameObject.SetActive(false);
                    break;
            }
        }
        /// <summary>
        /// 0 秒杀 1 已买到 2 已抢光
        /// </summary>
        /// <returns></returns>
        private int GetSellSate(out int fullRemainNum)
        {
            fullRemainNum = 0;
            var buyInfo = storeModel.GetBuyShopLimit((uint)saleItem.shopId);
            var buyCount = 0;
            var fullServerInfo = rushToBuyModel.GetFullServerInfo();
            if(buyState != -1)
            {
                if (fullServerInfo != null && fullServerInfo.Value1 == saleItem.shopId)
                {
                    fullRemainNum = saleItem.fullServerLimitNum - fullServerInfo.Value2;
                }
                else
                {
                    fullRemainNum = saleItem.fullServerLimitNum;
                }
                if (buyInfo != null)
                {
                    buyCount = buyInfo.BuyCnt;
                }
                if (buyCount >= saleItem.limitNum)
                {
                    return 1;
                }
                if (fullRemainNum <= 0)
                {
                    return 2;
                }
            }
            else
            {
                fullRemainNum = saleItem.fullServerLimitNum;
            }
            return 0;
        }
    }
}
System/OpenServerActivity/FlashSaleItemCell.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashSaleItemCell.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 0159981474f2dbb4599489e57560e8e6
timeCreated: 1539070008
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/FlashSaleTimeCell.cs
New file
@@ -0,0 +1,87 @@
using UnityEngine;
using UnityEngine.UI;
using EnhancedUI.EnhancedScroller;
using System;
namespace Snxxz.UI
{
    public class FlashSaleTimeCell : ScrollerUI
    {
        [SerializeField] Text remainText;
        [SerializeField] Button saleTimeBtn;
        [SerializeField] GameObject unSelectImg;
        [SerializeField] GameObject selectImg;
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        OperationFlashRushToBuy operation;
        int dayIndex = -1;
        int timeIndex = -1;
        private void Awake()
        {
            saleTimeBtn.AddListener(() =>
            {
                rushToBuyModel.UpdateSelectFlashSaleTime(dayIndex, timeIndex);
            });
        }
        private void OnEnable()
        {
            GlobalTimeEvent.Instance.secondEvent += UpdateBuyState;
        }
        private void OnDisable()
        {
            GlobalTimeEvent.Instance.secondEvent -= UpdateBuyState;
        }
        public override void Refresh(CellView cell)
        {
            operation = rushToBuyModel.GetOperationFlashRushToBuy();
            dayIndex = -1;
            timeIndex = -1;
            if (operation == null) return;
            int days = operation.totalDays + 1;
            dayIndex = cell.index/(operation.flashShops.Count / days);
            timeIndex = cell.index % (operation.flashShops.Count / days);
            if(dayIndex == rushToBuyModel.presentFlashShop.dayIndex
                && timeIndex == rushToBuyModel.presentFlashShop.timeIndex)
            {
                selectImg.SetActive(true);
                unSelectImg.SetActive(false);
            }
            else
            {
                selectImg.SetActive(false);
                unSelectImg.SetActive(true);
            }
            UpdateBuyState();
        }
        public void UpdateBuyState()
        {
            if (operation == null || timeIndex == -1) return;
            int seconds = 0;
            OperationTime operationTime = operation.times[timeIndex];
            var date = operation.startDate;
            int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, dayIndex, timeIndex, out seconds);
            switch (buyState)
            {
                case -1:
                    this.gameObject.SetActive(true);
                    string timeStr = operation.ToDisplayBuyTime(date.month, dayIndex + date.day, operationTime.startHour, operationTime.startMinute);
                    remainText.text = StringUtility.Contact(timeStr, "开抢");
                    break;
                case 0:
                    this.gameObject.SetActive(true);
                    remainText.text = StringUtility.Contact("秒杀进行中", TimeUtility.SecondsToHMS(seconds));
                    break;
                case 1:
                    if(selectImg.activeInHierarchy)
                    {
                        rushToBuyModel.SetDefaultSelectSaleTime();
                    }
                    this.gameObject.SetActive(false);
                    break;
            }
        }
    }
}
System/OpenServerActivity/FlashSaleTimeCell.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/FlashSaleTimeCell.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 45a3148a13dcdbb40b43bf5b9667ca8e
timeCreated: 1539070917
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/ImpactRankModel.cs
@@ -786,6 +786,8 @@
            FairyLeagueNotice,
            [Header("骑宠争夺预告")]
            FairyGrabBossNotice,
            [Header("限时抢购")]
            FlashRushToBuy,
        }
    }
System/OpenServerActivity/OpenServerActivityNotifyBase.cs
New file
@@ -0,0 +1,34 @@
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
     public class OpenServerActivityNotifyBase : MonoBehaviour
    {
        [SerializeField] protected Text titleText;
        [SerializeField] protected Image activityIcon;
        [SerializeField] protected Button gotoBtn;
        [SerializeField] protected Button closeBtn;
        private void Awake()
        {
            gotoBtn.AddListener(ClickGotoBtn);
            closeBtn.AddListener(ClickCloseBtn);
        }
        protected virtual void Display()
        {
        }
        protected virtual void ClickGotoBtn()
        {
        }
        protected virtual void ClickCloseBtn()
        {
            this.gameObject.SetActive(false);
        }
    }
}
System/OpenServerActivity/OpenServerActivityNotifyBase.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/OpenServerActivityNotifyBase.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 22be8e7eacfacb343b53b11b5d22aa29
timeCreated: 1539422752
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/OpenServerActivityNotifyModel.cs
New file
@@ -0,0 +1,193 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Snxxz.UI
{
    public class OpenServerActivityNotifyModel : Model,IBeforePlayerDataInitialize,IPlayerLoginOk
    {
        public override void Init()
        {
        }
        public void OnBeforePlayerDataInitialize()
        {
            FlashRushToBuyActivityClose();
            GlobalTimeEvent.Instance.minuteEvent -= UpdateMinute;
            OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent -= OperationEndEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeEvent;
            OperationTimeHepler.Instance.operationServerCloseEvent -= OperationServerCloseEvent;
            NewBieCenter.Instance.guideCompletedEvent -= GuideCompletedEvent;
        }
        public void OnPlayerLoginOk()
        {
            OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent;
            OperationTimeHepler.Instance.operationEndEvent += OperationEndEvent;
            OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeEvent;
            OperationTimeHepler.Instance.operationServerCloseEvent += OperationServerCloseEvent;
            NewBieCenter.Instance.guideCompletedEvent += GuideCompletedEvent;
            GlobalTimeEvent.Instance.minuteEvent += UpdateMinute;
            SetFlashRushToBuyNotify();
            if (!WindowCenter.Instance.IsOpen<OpenServerActivityNotifyWin>())
            {
                WindowCenter.Instance.Open<OpenServerActivityNotifyWin>();
            }
        }
        public override void UnInit()
        {
        }
        private void UpdateMinute()
        {
            SetFlashRushToBuyNotify();
        }
        private void OperationTimeEvent(Operation type)
        {
            switch (type)
            {
                case Operation.MultipleExp:
                    break;
                case Operation.ConsumeRebate:
                    break;
                case Operation.FlashSale:
                    break;
                case Operation.BossReborn:
                    break;
                case Operation.GiftPackage:
                    break;
                case Operation.FairyCeremony:
                    break;
                case Operation.MultipRealmPoint:
                    break;
                case Operation.FlashRushToBuy:
                    SetFlashRushToBuyNotify();
                    break;
                case Operation.max:
                    break;
            }
        }
        private void OperationStartEvent(Operation type, int state)
        {
            switch (type)
            {
                case Operation.MultipleExp:
                    break;
                case Operation.ConsumeRebate:
                    break;
                case Operation.FlashSale:
                    break;
                case Operation.BossReborn:
                    break;
                case Operation.GiftPackage:
                    break;
                case Operation.FairyCeremony:
                    break;
                case Operation.MultipRealmPoint:
                    break;
                case Operation.FlashRushToBuy:
                    SetFlashRushToBuyNotify();
                    break;
                case Operation.max:
                    break;
            }
        }
        private void OperationServerCloseEvent(Operation type)
        {
            switch (type)
            {
                case Operation.MultipleExp:
                    break;
                case Operation.ConsumeRebate:
                    break;
                case Operation.FlashSale:
                    break;
                case Operation.BossReborn:
                    break;
                case Operation.GiftPackage:
                    break;
                case Operation.FairyCeremony:
                    break;
                case Operation.MultipRealmPoint:
                    break;
                case Operation.FlashRushToBuy:
                    FlashRushToBuyActivityClose();
                    break;
                case Operation.max:
                    break;
            }
        }
        private void OperationEndEvent(Operation type, int state)
        {
            switch (type)
            {
                case Operation.MultipleExp:
                    break;
                case Operation.ConsumeRebate:
                    break;
                case Operation.FlashSale:
                    break;
                case Operation.BossReborn:
                    break;
                case Operation.GiftPackage:
                    break;
                case Operation.FairyCeremony:
                    break;
                case Operation.MultipRealmPoint:
                    break;
                case Operation.FlashRushToBuy:
                    FlashRushToBuyActivityClose();
                    break;
                case Operation.max:
                    break;
            }
        }
        private void GuideCompletedEvent(int id)
        {
            SetFlashRushToBuyNotify();
        }
        #region 限时抢购
        public event Action UpdateFlashRushToBuyEvent;
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        public List<OperationFlashRushToBuy.FlashSaleShop> flashSaleShops = new List<OperationFlashRushToBuy.FlashSaleShop>();
        public void SetFlashRushToBuyNotify()
        {
            if (NewBieCenter.Instance.inGuiding) return;
            OperationFlashRushToBuy.FlashSaleShop saleShop = null;
            bool isPush = rushToBuyModel.CheckIsPush(out saleShop);
            if(isPush && !flashSaleShops.Contains(saleShop))
            {
                flashSaleShops.Add(saleShop);
                if(UpdateFlashRushToBuyEvent != null)
                {
                    UpdateFlashRushToBuyEvent();
                }
            }
        }
        public void FlashRushToBuyActivityClose()
        {
            flashSaleShops.Clear();
            if (UpdateFlashRushToBuyEvent != null)
            {
                UpdateFlashRushToBuyEvent();
            }
        }
        #endregion
    }
}
System/OpenServerActivity/OpenServerActivityNotifyModel.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/OpenServerActivityNotifyModel.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 2a78df4065d071145b2e5877404cd6fd
timeCreated: 1539572551
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/OpenServerActivityNotifyWin.cs
New file
@@ -0,0 +1,54 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class OpenServerActivityNotifyWin : Window
    {
        [SerializeField] FlashRushToBuyNotify flashRushToBuyNotify;
        OpenServerActivityNotifyModel activityNotifyModel { get { return ModelCenter.Instance.GetModel<OpenServerActivityNotifyModel>(); } }
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            activityNotifyModel.UpdateFlashRushToBuyEvent += CheckFlashRushToBuy;
            CheckFlashRushToBuy();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            activityNotifyModel.UpdateFlashRushToBuyEvent -= CheckFlashRushToBuy;
        }
        protected override void OnAfterClose()
        {
        }
        private void CheckFlashRushToBuy()
        {
            if(activityNotifyModel.flashSaleShops.Count > 0)
            {
                flashRushToBuyNotify.gameObject.SetActive(true);
            }
            else
            {
                flashRushToBuyNotify.gameObject.SetActive(false);
            }
        }
    }
}
System/OpenServerActivity/OpenServerActivityNotifyWin.cs.meta
File was renamed from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: aa084ec4d5a2ea446b5ec00c0e1cc687
timeCreated: 1539422752
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/OpenServerActivity/OpenServerActivityWin.cs
@@ -574,6 +574,16 @@
                        WindowCenter.Instance.Open<FairyGrabBossNoticeWin>(true);
                    }
                    break;
                case 14:
                    if (windowState == WindowState.Opened)
                    {
                        WindowCenter.Instance.OpenWithoutAnimation<FlashRushToBuyWin>();
                    }
                    else
                    {
                        WindowCenter.Instance.Open<FlashRushToBuyWin>(true);
                    }
                    break;
            }
        }
@@ -609,6 +619,7 @@
            WindowCenter.Instance.CloseImmediately<VipInvestWin>();
            WindowCenter.Instance.CloseImmediately<FairyLeagueNoticeWin>();
            WindowCenter.Instance.CloseImmediately<FairyGrabBossNoticeWin>();
            WindowCenter.Instance.CloseImmediately<FlashRushToBuyWin>();
        }
        private int Compare(int order_x, int order_y)
System/OpenServerActivity/OperationFlashRushToBuy.cs
New file
@@ -0,0 +1,172 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Snxxz.UI
{
    public class OperationFlashRushToBuy : OperationBase
    {
        public List<FlashSaleShop> flashShops = new List<FlashSaleShop>();
        public bool TryGetFlashShop(int dayIndex,int timeIndex ,out FlashSaleShop flashSaleShop)
        {
           flashSaleShop = null;
           for (int i = 0; i < flashShops.Count; i++)
            {
                var shop = flashShops[i];
                if (shop.dayIndex == dayIndex
                    && shop.timeIndex == timeIndex)
                {
                    flashSaleShop = shop;
                    return true;
                }
            }
            return false;
        }
        public bool TryGetFlashItem(int shopGuid,out FlashSaleShop flashSaleShop, out FlashSaleItem saleItem)
        {
            saleItem = null;
            flashSaleShop = null;
            for (int i = 0; i < flashShops.Count; i++)
            {
                var saleItems = flashShops[i].items;
                for (int j = 0; j < saleItems.Length; j++)
                {
                    if (saleItems[j].shopGuid == shopGuid)
                    {
                        flashSaleShop = flashShops[i];
                        saleItem = saleItems[j];
                        return true;
                    }
                }
            }
            return false;
        }
        /// <summary>
        ///-1 未开始 0 开始 1结束
        /// </summary>
        /// <param name="time"></param>
        /// <param name="dayIndex"></param>
        /// <param name="timeIndex"></param>
        /// <returns></returns>
        public int GetBuyTimeState(DateTime time,int dayIndex,int timeIndex,out int seconds)
        {
            seconds = 0;
            int day = startDate.day + dayIndex;
            OperationTime operationTime = times[timeIndex];
            var startTime = new DateTime(startDate.year, startDate.month,day, operationTime.startHour, operationTime.startMinute,0);
            var endTime = new DateTime(startDate.year, startDate.month,day, operationTime.endHour, operationTime.endHour, 0);
            int advanceSec = Mathf.CeilToInt((float)(startTime - time).TotalSeconds);
            int endSec = Mathf.CeilToInt((float)(endTime - time).TotalSeconds);
            if (advanceSec > 0)
            {
                seconds = advanceSec;
                return -1;
            }
            else if(endSec <= 0)
            {
                return 1;
            }
            else
            {
                seconds = endSec;
                return 0;
            }
        }
        public string ToDisplayBuyTime(int month,int day,int startHour,int startMinute)
        {
            return StringUtility.Contact(month, Language.Get("Month"), day, Language.Get("Day"), startHour.ToString("D2"), ":", startMinute.ToString("D2"));
        }
        public string ToDisplayBuyTime(int startHour, int startMinute)
        {
            return StringUtility.Contact(startHour.ToString("D2"), ":", startMinute.ToString("D2"));
        }
        public override bool SatisfyOpenCondition()
        {
            if(PlayerDatas.Instance.baseData.LV >= limitLv && InDay(TimeUtility.ServerNow))
            {
                return true;
            }
            return false;
        }
        public override void Reset()
        {
            base.Reset();
            flashShops.Clear();
        }
        public override string ToDisplayTime()
        {
            var textBuilder = OperationTimeHepler.textBuilder;
            textBuilder.Length = 0;
            textBuilder.Append(startDate.ToDisplay());
            if (startDate != endDate)
            {
                textBuilder.Append("—");
                textBuilder.Append(endDate.ToDisplay());
            }
            return textBuilder.ToString();
        }
        public void ParsePackage(HAA17_tagMCFlashSaleInfo package)
        {
            for (int i = 0; i < package.ShopCount; i++)
            {
                var gift = new FlashSaleShop();
                var shop = package.ShopInfo[i];
                gift.dayIndex = shop.DayIndex;
                gift.timeIndex = shop.TimeIndex;
                gift.items = new FlashSaleItem[shop.GiftbagCount];
                for (int k = 0; k < shop.GiftbagCount; k++)
                {
                    var item = new FlashSaleItem();
                    var saleItem = shop.GiftbagInfo[k];
                    item.shopId = (int)saleItem.GiftID;
                    item.shopGuid = shop.DayIndex*1000 + shop.TimeIndex*100 + k;
                    item.limitNum = saleItem.BuyCountLimit;
                    item.fullServerLimitNum = saleItem.ServerBuyCountLimit;
                    item.moneyType = saleItem.MoneyType;
                    item.moneyNumber = (int)saleItem.MoneyNumber;
                    item.moneyOriginal = (int)saleItem.MoneyOriginal;
                    item.itemId = (int)saleItem.ItemID;
                    item.itemCount = saleItem.ItemCount;
                    item.isBind = saleItem.IsBind;
                    item.isAppointment = 0;
                    gift.items[k] = item;
                }
                flashShops.Add(gift);
            }
        }
        public class FlashSaleShop
        {
            public int dayIndex; // 活动第几天
            public int timeIndex;//第几个时间段
            public FlashSaleItem[] items;
        }
        public class FlashSaleItem
        {
            public int shopId;
            public int shopGuid;
            public int limitNum;//个人限购数量
            public int fullServerLimitNum; //个人限购数量
            public int moneyType;
            public int moneyNumber;
            public int moneyOriginal;
            public int itemId;
            public int itemCount;
            public int isBind;
            public int isAppointment; //是否预约
        }
    }
}
System/OpenServerActivity/OperationFlashRushToBuy.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/OpenServerActivity/OperationFlashRushToBuy.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
guid: 6b7d522af470b8a42b9127be5090cb6f
timeCreated: 1539088859
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/Role/RoleTitleCell.cs
@@ -37,8 +37,8 @@
            }
            int _titleId = model.roleTitleList[_index];
            TitleData titleData = model.GetGainTitle(_titleId);
            DienstgradConfig _dienstgradCfg = Config.Instance.Get<DienstgradConfig>(_titleId);
            m_TitleIcon.SetSprite(_dienstgradCfg.Image);
            DienstgradConfig config = Config.Instance.Get<DienstgradConfig>(_titleId);
            m_TitleIcon.SetSprite(config.Image);
            m_TitleIcon.SetNativeSize();
            if (model.presentSelectTitle == model.roleTitleList[_index])
            {
@@ -48,7 +48,7 @@
            {
                m_BottomImg.SetSprite("Title_PopupWindow");
            }
            m_TitleGetBtn.gameObject.SetActive(!model.IsTitleGain(_titleId));
            m_TitleGetBtn.gameObject.SetActive(!model.IsTitleGain(_titleId) && config.gotoId > 0);
            m_UseTitleBtn.gameObject.SetActive(model.IsTitleGain(_titleId));
            m_ContainerNewGet.gameObject.SetActive(model.IsNewGet(_titleId));
            m_UseTitleBtn.onClick.RemoveAllListeners();
@@ -61,16 +61,16 @@
                m_TitleEquipImg.gameObject.SetActive(titleData.isEquiped);
            }
            m_TitleGetBtn.RemoveAllListeners();
            if (titleData == null)
            if (titleData == null && config.gotoId > 0)
            {
                m_TitleGetBtn.AddListener(() =>
                {
                    if (_dienstgradCfg.gotoId > 0)
                    if (config.gotoId > 0)
                    {
                        if (_dienstgradCfg.missionId > 0
                             && task.GetQuestState(_dienstgradCfg.missionId) == -1)
                        if (config.missionId > 0
                             && task.GetQuestState(config.missionId) == -1)
                        {
                            var taskConfig = Config.Instance.Get<PyTaskConfig>(_dienstgradCfg.missionId);
                            var taskConfig = Config.Instance.Get<PyTaskConfig>(config.missionId);
                            var taskName = string.Empty;
                            if (taskConfig != null)
                            {
@@ -83,7 +83,7 @@
                            SysNotifyMgr.Instance.ShowTip("RoleTitle_1", taskName);
                            return;
                        }
                        WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)_dienstgradCfg.gotoId);
                        WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.gotoId);
                    }
                });
            }
System/Strengthening/WashMasterActiveWin.cs
@@ -216,7 +216,7 @@
            int[] curAttrValues = ConfigParse.GetMultipleStr<int>(curSpecConfig.attByLevelValue);
            raiseAttrCell.SetActive(false);
            tempCelllist.Add(GetRaiseGo(Language.Get("MainInterfacePanel_HeadPortraitTip_ZL"),preFightNum.ToString(),(curFightNum-preFightNum).ToString()));
            tempCelllist.Add(GetRaiseGo(Language.Get("L1056"),preFightNum.ToString(),(curFightNum-preFightNum).ToString()));
            for (int i = 0; i < preAttrIds.Length; i++)
            {
System/SystemSetting/ActivitiesPushMgr.cs
@@ -11,8 +11,10 @@
    {
        public const int WholePeopleRankStart = 2091000; //全民冲榜开始
        public const int WholePeopleRankEnd = 20910000; //全民冲榜截止
        public const int FlashRushToBuy = 209014; //限时抢购
        ImpactRankModel impactRank { get { return ModelCenter.Instance.GetModel<ImpactRankModel>(); } }
        FlashRushToBuyModel rushToBuyModel { get { return ModelCenter.Instance.GetModel<FlashRushToBuyModel>(); } }
        private List<int> rankTypelist = new List<int>();
        public override void Init()
@@ -29,7 +31,10 @@
        public void OnBeforePlayerDataInitialize()
        {
            rushToBuyModel.UpdateAllAppointmentEvent -= UpdateAllAppointment;
            rushToBuyModel.UpdateAppointmentEvent -= UpdateAppointment;
            GlobalTimeEvent.Instance.minuteEvent -= RefreshMinuteTime;
            OpenServerActivityCenter.Instance.openServerActivityStateChange -= RefreshOpenServerState;
        }
        public void OnAfterPlayerDataInitialize()
@@ -41,10 +46,11 @@
        {
            SetRankStartPushInfo();
            SetRankEndPushInfo();
            GlobalTimeEvent.Instance.minuteEvent -= RefreshMinuteTime;
            SetFlashRushToBuyAppointmentInfo();
            GlobalTimeEvent.Instance.minuteEvent += RefreshMinuteTime;
            OpenServerActivityCenter.Instance.openServerActivityStateChange -= RefreshOpenServerState;
            OpenServerActivityCenter.Instance.openServerActivityStateChange += RefreshOpenServerState;
            rushToBuyModel.UpdateAllAppointmentEvent += UpdateAllAppointment;
            rushToBuyModel.UpdateAppointmentEvent += UpdateAppointment;
        }
        public override void UnInit()
@@ -57,6 +63,7 @@
        {
            RemovePushByTime(PushInfoType.RankStart,11);
            RemovePushByTime(PushInfoType.RankEnd,23);
            RemoveFlashRushToBuyAppointmentByTime();
        }
        private void RefreshOpenServerState()
@@ -65,8 +72,10 @@
            SetRankEndPushInfo();
            RemovePushByActiveClose(PushInfoType.RankStart);
            RemovePushByActiveClose(PushInfoType.RankEnd);
            SetFlashRushToBuyAppointmentInfo();
        }
        #region 开服活动冲榜推送
        private void SetRankStartPushInfo()
        {
            for(int i = 0; i <rankTypelist.Count; i++)
@@ -144,7 +153,7 @@
            }
        }
        private void RemovePushByTime(PushInfoType type,int time)
        private void RemovePushByTime(PushInfoType type, int time)
        {
            int remainHour = time - TimeUtility.ServerNow.Hour;
            int remainMinute = 0 - TimeUtility.ServerNow.Minute;
@@ -181,7 +190,98 @@
                    break;
            }
        }
        #endregion
        #region 限时抢购推送
        private void UpdateAllAppointment()
        {
            SetFlashRushToBuyAppointmentInfo();
        }
        private void UpdateAppointment(int shopGuid)
        {
            if (!rushToBuyModel.IsOpen) return;
            var operation = rushToBuyModel.GetOperationFlashRushToBuy();
            int pushId = FlashRushToBuy * 10 + shopGuid;
            OperationFlashRushToBuy.FlashSaleItem saleItem;
            OperationFlashRushToBuy.FlashSaleShop saleShop;
            bool isSaleItem = operation.TryGetFlashItem(shopGuid,out saleShop,out saleItem);
            if(isSaleItem)
            {
                if(saleItem.isAppointment != 1)
                {
                    RemovePushInfo(pushId);
                }
                else
                {
                    int seconds = 0;
                    int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, saleShop.dayIndex, saleShop.timeIndex, out seconds);
                    if(seconds > 800)
                    {
                        int remainSecond = seconds - 600;
                        SendPushInfo(GetPushJsonData(pushId, remainSecond, "限时抢购", "亲爱的道友,您预约的限时抢购商品即将开抢,请尽快进入游戏秒杀!"));
                    }
                }
            }
        }
        private void SetFlashRushToBuyAppointmentInfo()
        {
            if (!rushToBuyModel.IsOpen) return;
            var operation = rushToBuyModel.GetOperationFlashRushToBuy();
            for(int i = 0; i < operation.flashShops.Count; i++)
            {
                var flashShop = operation.flashShops[i];
                int seconds = 0;
                int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, flashShop.dayIndex,flashShop.timeIndex,out seconds);
                var saleItems = operation.flashShops[i].items;
                for (int j = 0; j < saleItems.Length; j++)
                {
                    int pushId = FlashRushToBuy * 10 + saleItems[j].shopGuid;
                    if (buyState == -1 && seconds > 800 && saleItems[j].isAppointment == 1)
                    {
                        int remainSecond = seconds - 600;
                        SendPushInfo(GetPushJsonData(pushId, remainSecond, "限时抢购", "亲爱的道友,您预约的限时抢购商品即将开抢,请尽快进入游戏秒杀!"));
                    }
                    else
                    {
                        RemovePushInfo(pushId);
                    }
                }
            }
        }
        private void RemoveFlashRushToBuyAppointmentByTime()
        {
            if (!rushToBuyModel.IsOpen) return;
            var operation = rushToBuyModel.GetOperationFlashRushToBuy();
            for (int i = 0; i < operation.flashShops.Count; i++)
            {
                var flashShop = operation.flashShops[i];
                int seconds = 0;
                int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, flashShop.dayIndex, flashShop.timeIndex, out seconds);
                var saleItems = operation.flashShops[i].items;
                for (int j = 0; j < saleItems.Length; j++)
                {
                    int pushId = FlashRushToBuy * 10 + saleItems[j].shopGuid;
                    if (buyState != -1)
                    {
                        RemovePushInfo(pushId);
                    }
                    else
                    {
                        if(seconds <= 180)
                        {
                            RemovePushInfo(pushId);
                        }
                    }
                }
            }
        }
        #endregion
        public void RemovePushInfo(int pushId)
        {
            SDKUtility.Instance.GeTui_RemoveLocalMessage(pushId.ToString());
System/SystemSetting/SettingMgr.cs
@@ -43,8 +43,6 @@
            #endregion
            #region 初始化系统设置
            SystemSetting.Instance.SetSoundVolume(1);
            SystemSetting.Instance.SetSoundEffect(1);
            SystemSetting.Instance.SetSystemSettingSwitch(SystemSwitch.OtherPlayer, false);
            SystemSetting.Instance.SetSystemSettingSwitch(SystemSwitch.HideMonster, false);
            #endregion
System/SystemSetting/SystemSetting.cs
@@ -40,7 +40,7 @@
    public float GetSoundVolume()
    {
        return LocalSave.GetFloat(SOUND_VOLUME_KEY, 1);
        return LocalSave.GetFloat(SOUND_VOLUME_KEY, .55f);
    }
    public void SetSoundEffect(float value)
@@ -50,7 +50,7 @@
    public float GetSoundEffect()
    {
        return LocalSave.GetFloat(SOUND_EFFECT_KEY, 1);
        return LocalSave.GetFloat(SOUND_EFFECT_KEY, .55f);
    }
    public void SetGameFps(GameFps _frame)
System/Treasure/TreasurePotentialPanel.cs
@@ -951,7 +951,9 @@
            {
                DisplayPotentialBook(model.selectedPotentialBook);
                var levelUpConfig = GetPotentialLevelUpConfig();
                m_PotentialCount.text = StringUtility.Contact(levelUpConfig.own, "/", levelUpConfig.need);
                bool satisfy = levelUpConfig.own >= levelUpConfig.need;
                m_PotentialCount.text = StringUtility.Contact(UIHelper.GetTextColorByItemColor(satisfy ?
                    TextColType.LightYellow : TextColType.Red, levelUpConfig.own.ToString()), "/", levelUpConfig.need);
            }
        }
System/Treasure/TreasureSoulPattern4.cs
@@ -94,7 +94,7 @@
                            }
                        }
                        properties[0].gameObject.SetActive(true);
                        properties[0].Display(6, (int)(value * percentWing));
                        properties[0].DisplayUpper(6, (int)(value * percentWing));
                    }
                    break;
            }
System/Treasure/TreasureSoulWin.cs
@@ -368,7 +368,7 @@
                            }
                        }
                        m_PreviewPropretys[0].gameObject.SetActive(true);
                        m_PreviewPropretys[0].Display(6, (int)(value * percentWing));
                        m_PreviewPropretys[0].DisplayUpper(6, (int)(value * percentWing));
                    }
                    break;
                case TreasurePrivilege.DemonJarAtk:
System/Vip/VipInvest/RotatePointer.cs
@@ -13,7 +13,7 @@
    public class RotatePointer : MonoBehaviour
    {
        public bool _isRotate = false;//是否旋转      
        public float Speed = 2000;//旋转速度
        private float Speed = 2000;//旋转速度
        public float Angle = 0; // 这个是设置停止的角度
        private float Acceleration = 0;//加速度
        private float _time;
@@ -43,20 +43,29 @@
        {
        }
        private void OnDisable()
        {
            sequence.Kill();
        }
        private Sequence sequence;
        void Update()
        {
            if (!_isRotate)
            {
                if (Math.Abs((360 - Angle) - transform.eulerAngles.z) > 2)
                if (Math.Abs((360 - Angle) - transform.eulerAngles.z) > 0.2 && Angle - transform.eulerAngles.z != 0)
                {
                    transform.DOPause();
                    sequence.Kill();
                    transform.localRotation = Quaternion.Euler(0, 0, -Angle);
                    m_CheckDisplay.ShowSelected(wheelOfFortuneModel.Lattice);
                    if (IsButtonShow != null)
                    {
                        IsButtonShow(true);
                    }
                    _time = 0;
                    IsRotateBool = false;
                    _isRotate = false;
                }
                return; //不旋转结束
            }
@@ -91,7 +100,8 @@
                {
                    //结束,使用DoTween旋转到结束角度,耗时1秒
                    //这里有个360,使用来防止指针回转的,如果不加这个360,你会看到指针倒退
                    Sequence sequence = DOTween.Sequence();
                    sequence = DOTween.Sequence();
                    sequence.SetAutoKill(false);
                    sequence.Append(transform.DORotate(new Vector3(0, 0, -(360 + Angle)), 2f, RotateMode.FastBeyond360));
                    sequence.AppendCallback(() =>
                    {
System/Vip/VipInvest/UIEffectFly.cs
New file
@@ -0,0 +1,98 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, October 09, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class UIEffectFly:MonoBehaviour {
        [SerializeField] Transform m_tran1;
        [SerializeField] Transform m_tran2;
        [SerializeField] Transform m_tran3;
        [SerializeField] Transform m_tran4;
        [SerializeField] Transform m_tran5;
        [SerializeField] Transform m_tran6;
        [SerializeField] Transform m_tran7;
        [SerializeField] Transform m_tran8;
        [SerializeField] Transform m_tran9;
        [SerializeField] Transform m_endTran;
        [Header("需要生成的个数")]
        public int NUMBER = 5;
        [Header("移动的时间")]
        public float SPEED = 2f;
        [Header("需要进行延迟的时间")]
        public float LOADTIME = 0.1f;
        public void StartFly(int Inedx)
        {
            switch (Inedx)
            {
                case 1:
                    GetVector3Pos(m_tran1.position, m_endTran.position);
                    break;
                case 2:
                    GetVector3Pos(m_tran2.position, m_endTran.position);
                    break;
                case 3:
                    GetVector3Pos(m_tran3.position, m_endTran.position);
                    break;
                case 4:
                    GetVector3Pos(m_tran4.position, m_endTran.position);
                    break;
                case 5:
                    GetVector3Pos(m_tran5.position, m_endTran.position);
                    break;
                case 6:
                    GetVector3Pos(m_tran6.position, m_endTran.position);
                    break;
                case 7:
                    GetVector3Pos(m_tran7.position, m_endTran.position);
                    break;
                case 8:
                    GetVector3Pos(m_tran8.position, m_endTran.position);
                    break;
                case 9:
                    GetVector3Pos(m_tran9.position, m_endTran.position);
                    break;
            }
        }
        private void GetVector3Pos(Vector3 StartVec,Vector3 endVec)
        {
            var direction = Vector3.Normalize(StartVec - endVec);
            var normal = new Vector3(-direction.y, direction.x, 0);
            var distance = Vector3.Distance(StartVec, endVec);
            int Type = 0;
            int Type1 = 0;
            for (int i = 0; i < NUMBER; i++)
            {
                var pivot = StartVec + normal * UnityEngine.Random.Range(-distance, distance) * 0.7f + direction * distance * 0.4f;
                var effect = EffectMgr.Instance.PlayUIEffect(5134,2500, this.transform, true);
                effect.transform.position = StartVec;
                var bezierMove = effect.AddMissingComponent<BezierMove>();
                bezierMove.duration = (SPEED - i * LOADTIME);
                Type += 1;
                bezierMove.Begin(StartVec, pivot, endVec, () =>
                {
                    Type1 += 1;
                    effect.Stop();
                    DestroyObject(bezierMove);
                    if (Type == Type1)
                    {
                      //  OnComplet();
                    }
                });
            }
        }
    }
}
System/Vip/VipInvest/UIEffectFly.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to System/Vip/VipInvest/UIEffectFly.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
licenseType: Pro
guid: cd341680a37e9b14d92099dbcb899a44
timeCreated: 1539072327
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
System/Vip/VipInvest/WheelOfFortuneModel.cs
@@ -89,7 +89,7 @@
        {
            Lattice = Info.Index;
            Number = Info.Cnt;
            if (IsOk)
            if (IsOk && Info.Index!=0)
            {
                if (AngleDic.ContainsKey(Lattice))
                {
@@ -98,6 +98,17 @@
                    if (flo > 360f)
                    {
                        flo = flo - 360f;
                    }
                    if (Math.Abs(flo- AngleSave)<=0.2)
                    {
                        if ((flo + 1f )> (AngleDic[Lattice].AngleStart + 1f) && (flo + 1f) < (AngleDic[Lattice].AngleEnd - 1f))
                        {
                            flo += 1;
                        }
                        else if ((flo - 1f) > (AngleDic[Lattice].AngleStart + 1f) && (flo - 1f) < (AngleDic[Lattice].AngleEnd - 1f))
                        {
                            flo -= 1;
                        }
                    }
                    LocalSave.SetFloat(StrKey, flo);
                    AngleSave = LocalSave.GetFloat(StrKey);
@@ -124,7 +135,7 @@
        }
        private void RedPoint()
        {
            if (!FuncOpen.Instance.IsFuncOpen(144) /*|| Number<=0*/)
            if (!FuncOpen.Instance.IsFuncOpen(144))
            {
                return;
            }
System/Vip/VipInvest/WheelOfFortuneWin.cs
@@ -7,6 +7,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
@@ -16,15 +17,22 @@
    public class WheelOfFortuneWin : Window
    {
        [SerializeField] Button m_LotteryBtn;
        [SerializeField] ImageEx m_LotteryImage;
        [SerializeField] RotatePointer m_RotatePointer;
        [SerializeField] Toggle m_Toggle;
        [SerializeField] CheckDisplay m_CheckDisplay;
        [SerializeField] Text Money1_Text;
        [SerializeField] Text Money2_Text;
        [SerializeField] Text m_Text_remainingTimes;
        [SerializeField] Text m_Text_remainingTimes;//剩余转动次数
        [SerializeField] Text m_Text_VIPuP;//VIP提升转动次数
        [SerializeField] Text m_GO;
        [SerializeField] Button m_PromotionBtn;
        [SerializeField] RotationTween m_RotationTween;
        [SerializeField] GameObject m_RequiredConsumption;
        [SerializeField] Text m_NeedMoney_Text;
        [SerializeField] UIEffect m_UIEffect_1;
        [Header("滚动时间")]
        public  float RollingTime = 1f;
        public float RollingTime = 1f;
        VipModel m_Vipmodel;
        VipModel vipmodel { get { return m_Vipmodel ?? (m_Vipmodel = ModelCenter.Instance.GetModel<VipModel>()); } }
        WheelOfFortuneModel wheelOfFortuneModel { get { return ModelCenter.Instance.GetModel<WheelOfFortuneModel>(); } }
@@ -43,19 +51,30 @@
        }
        protected override void OnPreOpen()
        {
        {
            FairyJade = (int)UIHelper.GetMoneyCnt(2);
            Money1_Text.text = FairyJade.ToString();
            Money2_Text.text = UIHelper.GetMoneyCnt(1).ToString();
            m_NeedMoney_Text.text = wheelOfFortuneModel.NeedJade.ToString();
            m_RotatePointer.Init();
            IsLottery();//判断是否拥有次数
        }
            m_LotteryBtn.interactable = true;
            m_RequiredConsumption.SetActive(true);
            m_LotteryImage.gray = false;
            TextGo();
            IncreaseInFrequency();//次数提升
            RemainingTimes();//剩余次数
        }
        protected override void OnActived()
        {
            Money1_Text.transform.localRotation = Quaternion.Euler(0, 0, 0);
            m_RotationTween.enabled = false;
        }
        protected override void OnAfterOpen()
        {
            wheelOfFortuneModel.WheelOfFortuneUpdate += WheelOfFortuneUpdate;
            RotatePointer.IsButtonShow += IsButtonShow;
            CheckDisplay.EndOfFlashing += EndOfFlashing;
            CheckDisplay.EndOfFlashing += EndOfFlashing;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418)
            if (wheelOfFortuneModel.redPointStre1.state == RedPointState.Simple)
            {
                int GetDayOfYear = DateTime.Now.DayOfYear;
@@ -70,18 +89,38 @@
            wheelOfFortuneModel.WheelOfFortuneUpdate -= WheelOfFortuneUpdate;
            RotatePointer.IsButtonShow -= IsButtonShow;
            CheckDisplay.EndOfFlashing -= EndOfFlashing;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418)
        }
        private void Updatefighting(PlayerDataRefresh obj)
        {
            if (obj == PlayerDataRefresh.VIPLv)
            {
                TextGo();
                RemainingTimes();//剩余次数
                IncreaseInFrequency();//次数提升
            }
            if (obj == PlayerDataRefresh.Gold)
            {
                Money2_Text.text = UIHelper.GetMoneyCnt(1).ToString();
            }
        }
        private void EndOfFlashing()
        {
            TiedJadeChange();
            m_UIEffect_1.Play();
        }
        private void WheelOfFortuneUpdate(float Angel)
        {
            m_LotteryBtn.interactable = false;
            m_RequiredConsumption.SetActive(false);
            m_LotteryImage.gray = true;
            m_RotatePointer.SetTime(m_Toggle.isOn);
            IsLottery();
            TextGo();
            RemainingTimes();//剩余次数
            IncreaseInFrequency();//次数提升
        }
        protected override void OnAfterClose()
@@ -90,8 +129,24 @@
        private void OnClickButton()
        {
            m_CheckDisplay.CloseAll();
            wheelOfFortuneModel.StartTheDraw();//开始抽奖
            int LotteryNumber = vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.BindJadeWheel);
            if (LotteryNumber <= wheelOfFortuneModel.Number)
            {
                LackOfVIP(); //VIP 不足
                return;
            }
            else if (LotteryNumber > wheelOfFortuneModel.Number && (int)UIHelper.GetMoneyCnt(1) < wheelOfFortuneModel.NeedJade)
            {
                LackFairyJade();//仙玉不足
                return;
            }
            else if (LotteryNumber > wheelOfFortuneModel.Number && (int)UIHelper.GetMoneyCnt(1) >= wheelOfFortuneModel.NeedJade)
            {
                m_CheckDisplay.CloseAll();
                FairyJade = (int)UIHelper.GetMoneyCnt(2);
                Money1_Text.text = FairyJade.ToString();
                wheelOfFortuneModel.StartTheDraw();//开始抽奖
            }
        }
        private void OnClickToggle(bool _bool)
        {
@@ -105,39 +160,154 @@
            }
        }
        private void OnClickPromotionBtn()
        {
            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc4);
        {
            if (PlayerDatas.Instance.baseData.VIPLv >= 10)
            {
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1);
            }
            else
            {
                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc4);
            }
        }
        private void IsButtonShow(bool _bool)//是否可点击旋转
        {
            m_LotteryBtn.interactable = _bool;
        }
        private void IsLottery()
        {
            int LotteryNumber = vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.BindJadeWheel);
            if (LotteryNumber > wheelOfFortuneModel.Number)
            {
                remainingTimes = LotteryNumber - wheelOfFortuneModel.Number;
                m_LotteryBtn.interactable = true;
            }
            else
            {
                m_LotteryBtn.interactable = false;
            }
            m_RequiredConsumption.SetActive(_bool);
            m_LotteryImage.gray = !_bool;
        }
        private Sequence mScoreSequence;
        private void TiedJadeChange()//绑玉变化
        {
            m_RotationTween.enabled = true;
            mScoreSequence = DOTween.Sequence();
            mScoreSequence.SetAutoKill(false);
            mScoreSequence.Append(DOTween.To(delegate(float value)
            mScoreSequence.Append(DOTween.To(delegate (float value)
            {
                var temp = Math.Floor(value);
                Money1_Text.text = temp + "";
            }, FairyJade,(int)UIHelper.GetMoneyCnt(2), RollingTime));
            }, FairyJade, (int)UIHelper.GetMoneyCnt(2), RollingTime));
            mScoreSequence.AppendCallback(() =>
            {
                Money1_Text.transform.localRotation = Quaternion.Euler(0, 0, 0);
                m_RotationTween.enabled = false;
            });
            FairyJade = (int)UIHelper.GetMoneyCnt(2);
        }
        private void LackOfVIP()//VIP 不足
        {
            string str = Language.Get("Turntable_2");
            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), str, (bool isOk) =>
             {
                 if (isOk)
                 {
                     WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc4);
                 }
             });
        }
        private void LackFairyJade()//仙玉不足
        {
            if (VersionConfig.Get().isBanShu)
            {
                SysNotifyMgr.Instance.ShowTip("GoldErr");
                return;
            }
            WindowCenter.Instance.Open<RechargeTipWin>();
        }
        private void RemainingTimes()//剩余次数
        {
            int LotteryNumber = vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.BindJadeWheel);
            if (LotteryNumber > wheelOfFortuneModel.Number)
            {
                m_Text_remainingTimes.text =(LotteryNumber - wheelOfFortuneModel.Number).ToString();
            }
            else
            {
                m_Text_remainingTimes.text = 0.ToString();
            }
        }
        private void IncreaseInFrequency()//次数提升
        {
            if (PlayerDatas.Instance.baseData.VIPLv >= 10)
            {
                m_Text_VIPuP.gameObject.SetActive(false);
                return;
            }
            else
            {
                m_Text_VIPuP.gameObject.SetActive(true);
            }
            int LotteryNumber = vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.BindJadeWheel);
            for (int i = 0; i <= 10; i++)
            {
                var VipConfig = VipPrivilegeConfig.GetVipPrivilegeData(VipPrivilegeType.BindJadeWheel, i);
                if (VipConfig != 0 && VipConfig > LotteryNumber)
                {
                    int type = i;
                    int number = VipConfig - LotteryNumber;
                    m_Text_VIPuP.text = string.Format(Language.Get("Turntable_1"), type, Number(number));
                    return;
                }
            }
        }
        private string Number(int number)
        {
            string Str = string.Empty;
            switch (number)
            {
                case 1:
                    Str = Language.Get("Num_CHS_1");
                    return Str;
                case 2:
                    Str = Language.Get("Num_CHS_2");
                    return Str;
                case 3:
                    Str = Language.Get("Num_CHS_3");
                    return Str;
                case 4:
                    Str = Language.Get("Num_CHS_4");
                    return Str;
                case 5:
                    Str = Language.Get("Num_CHS_5");
                    return Str;
                case 6:
                    Str = Language.Get("Num_CHS_6");
                    return Str;
                case 7:
                    Str = Language.Get("Num_CHS_7");
                    return Str;
                case 8:
                    Str = Language.Get("Num_CHS_8");
                    return Str;
                case 9:
                    Str = Language.Get("Num_CHS_9");
                    return Str;
                case 10:
                    Str = Language.Get("Num_CHS_10");
                    return Str;
            }
            return Str;
        }
        private void TextGo()
        {
            if (PlayerDatas.Instance.baseData.VIPLv >= 10)
            {
                m_GO.text = Language.Get("Turntable_4");
            }
            else
            {
                m_GO.text = Language.Get("Turntable_3");
            }
        }
        #endregion
    }
System/Welfare/OperationTimeHepler.cs
@@ -223,6 +223,45 @@
        }
        /// <summary>
        /// 限时抢购
        /// </summary>
        /// <param name="package"></param>
        public void UpdateFlashRushToBuy(HAA17_tagMCFlashSaleInfo package)
        {
            OperationBase operationBase = null;
            operationDict.TryGetValue(Operation.FlashRushToBuy, out operationBase);
            if (string.IsNullOrEmpty(package.StartDate) || string.IsNullOrEmpty(package.EndtDate))
            {
                ForceStopOperation(Operation.FlashRushToBuy);
            }
            else
            {
                if (operationBase == null)
                {
                    operationBase = new OperationFlashRushToBuy();
                    operationDict.Add(Operation.FlashRushToBuy, operationBase);
                }
                OperationFlashRushToBuy operation = operationBase as OperationFlashRushToBuy;
                operation.Reset();
                operation.limitLv = package.LimitLV;
                operation.startDate = ParseOperationDate(package.StartDate);
                operation.endDate = ParseOperationDate(package.EndtDate);
                operation.dayReset = package.IsDayReset == 1;
                operation.inAdvanceMinute = package.AdvanceMinutes;
                for (int i = 0; i < package.ActivityTimeCount; i++)
                {
                    operation.times.Add(ParseOperationTime(package.ActivityTime[i].StartTime,
                        package.ActivityTime[i].EndtTime));
                }
                operation.ParsePackage(package);
                if (operationTimeUpdateEvent != null)
                {
                    operationTimeUpdateEvent(Operation.FlashRushToBuy);
                }
            }
        }
        /// <summary>
        /// 限时礼包
        /// </summary>
        /// <param name="package"></param>
@@ -643,11 +682,12 @@
    {
        MultipleExp,
        ConsumeRebate,
        FlashSale,
        FlashSale,//限时特惠
        BossReborn,
        GiftPackage,
        FairyCeremony, //仙界盛典
        MultipRealmPoint, //N倍修行点
        FlashRushToBuy, //限时抢购
        max,
    }
}
System/Welfare/WelfareWin.cs
@@ -138,6 +138,14 @@
            {
                Btn_InSeven.gameObject.SetActive(true);
            }
            if (FuncOpen.Instance.IsFuncOpen(144))
            {
                m_TurntableBtn.gameObject.SetActive(true);
            }
            else
            {
                m_TurntableBtn.gameObject.SetActive(false);
            }
            CheckOperationOpen();
System/WindowBase/ModelCenter.cs
@@ -196,7 +196,9 @@
            RegisterModel<FeatureNoticeModel>();
            RegisterModel<AwardExchangeModel>();
            RegisterModel<WheelOfFortuneModel>();
            RegisterModel<FlashRushToBuyModel>();
            RegisterModel<TalentModel>();
            RegisterModel<OpenServerActivityNotifyModel>();
            inited = true;
        }
System/WindowJump/WindowJumpMgr.cs
@@ -333,6 +333,7 @@
            case JumpUIType.WelfareFunc2:
            case JumpUIType.WelfareFunc3:
            case JumpUIType.WelfareFunc2Type2:
            case JumpUIType.BindGoldWheel:
                SetJumpLogic<WelfareWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.SystemSettingFunc1:
@@ -1378,6 +1379,7 @@
    DogzFunc1Type2 = 249, //神兽界面
    DogzFunc2Type1 = 250, //神兽强化界面
    DogzFunc2Type2 = 251, //神兽强化界面
    BindGoldWheel = 252, //绑玉转盘界面
    DhszTs = 1001,//定海神针功法提升界面
    HyqTs = 1002,//皓月枪功法提升界面
    GyzTs = 1003,//鬼牙刃功法提升界面
UI/Common/ItemBehaviour.cs
@@ -60,6 +60,7 @@
        }
        public bool itemBind { get; private set; }
        public int itemQuality { get; private set; }
        private void Awake()
        {
@@ -71,14 +72,15 @@
        public void SetItem(Item _item)
        {
            SetItem(_item.id, _item.count, _item.bind);
            SetItem(_item.id, _item.count, _item.bind, _item.quality);
        }
        public void SetItem(int _id, int _count, bool _bind = false)
        public void SetItem(int _id, int _count, bool _bind = false, int _quality = 0)
        {
            itemId = _id;
            itemCount = _count;
            itemBind = _bind;
            itemQuality = _quality;
            DisplayBaseInfo();
            DisplayCount();
        }
@@ -128,7 +130,8 @@
                if (backGround != null)
                {
                    backGround.gameObject.SetActive(true);
                    backGround.SetItemBackGround(itemInfo.ItemColor);
                    backGround.SetItemBackGround(itemQuality != 0 ? itemQuality : itemInfo.ItemColor);
                }
                if (m_Stars != null)
@@ -139,7 +142,7 @@
                    }
                }
                if (m_Bind!=null)
                if (m_Bind != null)
                {
                    m_Bind.gameObject.SetActive(itemBind);
                }
UI/Common/UI3DModelFactory.cs
@@ -82,9 +82,37 @@
        var animator = model.GetComponent<Animator>();
        if (animator != null)
        {
            var suffix = AnimatorControllerLoader.controllerUISuffix;
            var animatorController = AnimatorControllerLoader.LoadMobController(suffix, config.MODE);
            if (animatorController != null)
            {
                animator.runtimeAnimatorController = animatorController;
            }
            var isDance = false;
            if (config.NPCType == (int)E_NpcType.Func)
            {
                var clipInfos = animator.runtimeAnimatorController.animationClips;
                foreach (var item in clipInfos)
                {
                    if (item.name == "Idle2")
                    {
                        isDance = true;
                        break;
                    }
                }
            }
            animator.enabled = true;
            animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Idle);
            animator.Play(GAStaticDefine.State_IdleHash);
            if (isDance)
            {
                animator.Play(GAStaticDefine.State_Dance);
            }
            else
            {
                animator.SetInteger(GAStaticDefine.Param_Action, GAStaticDefine.Act_Idle);
                animator.Play(GAStaticDefine.State_IdleHash);
            }
        }
        LayerUtility.SetLayer(model, LayerUtility.Monster, true);
Utility/DebugMousePos.cs
New file
@@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DebugMousePos : MonoBehaviour
{
    [SerializeField] Text m_Content;
    float timer = 0.5f;
    private void LateUpdate()
    {
        if (CameraController.Instance == null)
        {
            return;
        }
        timer += Time.deltaTime;
        if (timer > 0.5f)
        {
            timer = 0f;
            Camera _mainCamera = CameraController.Instance.CameraObject;
            RaycastHit _hitInfo;
            Ray _ray = _mainCamera.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(_ray, out _hitInfo, 100, LayerUtility.WalkbleMask) == false)
            {
                return;
            }
            m_Content.text = StringUtility.Contact("M Pos:", new Vector2(_hitInfo.point.x * 2f + GA_Hero.MapOffset.x, _hitInfo.point.z * 2f + GA_Hero.MapOffset.z));
        }
    }
}
Utility/DebugMousePos.cs.meta
copy from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta copy to Utility/DebugMousePos.cs.meta
File was copied from Core/GameEngine/Model/Config/BlastFurnaceLVConfig.cs.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 1bbbc87171e60f949bb6b7572c73fa38
timeCreated: 1515213620
licenseType: Pro
guid: 6162cab73fd1bea43b8c540484a634f3
timeCreated: 1539425015
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
Utility/EnumHelper.cs
@@ -1488,6 +1488,7 @@
    Def_IudetSuiteLV = 30,  //套装等级
    Def_IudetDogzEquipPlus = 31,  // 神兽装备强化信息列表 [强化等级, 强化熟练度]
    Def_IudetHasOpenCnt = 32,  // 物品累积开启次数
    Def_IudetItemDecompound = 33,  //合成物品拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
    Def_IudetCreateItemLoginDay = 34,  //创建物品时的登录天数
    Def_IudetLastOpenItemLoginDay = 36,  //上一次开启物品时的登录天数
    Def_IudetRuneLV = 38,  // 符印等级
@@ -1508,6 +1509,7 @@
{
    makeUse, //使用
    putOn, //穿上
    dismantle, //拆解合成装备
    split, //拆分
    putAway,//上架
    inlay, //镶嵌
Utility/GlobalTimeEvent.cs
@@ -11,6 +11,7 @@
    public event Action tenMinuteEvent;
    public event Action halfHourEvent;
    public event Action hourEvent;
    public event Action halfMinuteEvent;
    int secondBuf = -1;
    int minuteBuf = -1;
@@ -18,6 +19,7 @@
    int tenMinuteBuf = -1;
    int halfHourBuf = -1;
    int hourBuf = -1;
    int halfMinuteBuf = -1;
    public void Begin()
    {
@@ -57,6 +59,26 @@
            }
        }
        var thirtySeconds = second / 30;
        if (halfMinuteBuf != thirtySeconds)
        {
            try
            {
                if (halfMinuteEvent != null)
                {
                    halfMinuteEvent();
                }
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
            }
            finally
            {
                halfMinuteBuf = thirtySeconds;
            }
        }
        var fiveMinute = minute / 5;
        if (fiveMinuteBuf != fiveMinute)
        {