少年修仙传客户端代码仓库
client_Wu Xijin
2019-04-22 a0891169494f5b1d63abae2318c2f9bf67354c05
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

# Conflicts:
# Lua/Gen/XLuaGenAutoRegister.cs
# System/BlastFurnace/FurnaceFireChooseWin.cs
# System/BlastFurnace/LingDanTips.cs
1 文件已复制
47个文件已删除
1 文件已重命名
28个文件已修改
2个文件已添加
7118 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0721_tagMakeItemAnswer.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BE_tagMCMagicWeaponMsg.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorFight.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageLoadProcessor.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/BlastFurnaceModelWrap.cs 2108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/BlastFurnaceModelWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIPackModelWrap.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIPrayForDurgModelWrap.cs 739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIPrayForDurgModelWrap.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Achievement/AchievementGotoPart1.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Achievement/AchievementGotoPart3.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyDrugWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyModel.cs 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyQualityCell.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyRecipeCell.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyScrollBehaviour.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyStoveBehaviour.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/BlastFurnaceModel.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/BlastFurnaceWin.cs 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/BlastFurnaceWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DanDrugRecycleTip.cs 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DanDrugRecycleTip.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DanDrugShopCell.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DanDrugShopCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DandrugCell.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/DandrugCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/FireChooseCell.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/FireChooseCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/FurnaceFireChooseWin.cs 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/FurnaceFireChooseWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/LingDanTips.cs 563 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/LingDanTips.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/MakeDrugSortCell.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/MakeDrugSortCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/MakerDrugFailWin.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/MakerDrugFailWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/MakerDrugSuccessWin.cs 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayDrugCell.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayDrugCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDrugVipLackWin.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDrugVipLackWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDurgModel.cs 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayForDurgModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugGetItemWin.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugGetItemWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugWin.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/PrayforDrugWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/RecycleDrugCell.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/RecycleDrugCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/SortMakeDrugTable.cs 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/SortMakeDrugTable.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/StoveRecipeCell.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/StoveRecipeCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/StoveUpgradWin.cs 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/StoveUpgradWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/TreasureEffectCell.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/BlastFurnace/TreasureEffectCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/MakeDrugCell.cs 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/MakeDrugCell.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackModel.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/RoleElixirTipWin.cs 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/RoleElixirTipWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/HeadPortraitTip.cs 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/PlayerMainDate.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/ActivateShow.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmNewEquipWin.cs 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmNewEquipWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmPromoteWin.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmPromoteWin.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmPropertyUpWin.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmWin.cs 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Role/PropertyBehaviour.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RolePromote/RolePromoteModel.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FairyTreasureCollectPanelPattern5.cs 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H07_PlayerItem/DTC0721_tagMakeItemAnswer.cs
@@ -11,14 +11,12 @@
{
    public static event Action<H0721_tagMakeItemAnswer> MakeItemAnswerEvent;
    BlastFurnaceModel FurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var vNetData = vNetPack as H0721_tagMakeItemAnswer;
        FurnaceModel.GetMakerResult(vNetData);
        if (PlayerDatas.Instance.hero != null && vNetData.Result == 1)
        {
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA321_tagMCPrayElixirResult.cs
@@ -7,14 +7,12 @@
public class DTCA321_tagMCPrayElixirResult : DtcBasic {
    PrayForDurgModel prayModel { get { return ModelCenter.Instance.GetModel<PrayForDurgModel>(); } }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HA321_tagMCPrayElixirResult vNetData = vNetPack as HA321_tagMCPrayElixirResult;
        prayModel.SetPrayResult(vNetData);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA3BE_tagMCMagicWeaponMsg.cs
@@ -8,14 +8,6 @@
public class DTCA3BE_tagMCMagicWeaponMsg : DtcBasic {
    BlastFurnaceModel _furnaceModel;
    BlastFurnaceModel FurnaceModel
    {
        get
        {
            return _furnaceModel ?? (_furnaceModel = ModelCenter.Instance.GetModel<BlastFurnaceModel>());
        }
    }
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
Fight/GameActor/GA_Hero.cs
@@ -685,7 +685,8 @@
         || State == E_ActorState.Mocked
         || IsDaZuo()
         || BossShowModel.Instance.BossShowing
         || heavenBattleModel.IsBattlePrepare)
         || heavenBattleModel.IsBattlePrepare
         || BeBeating)
        {
            return false;
        }
@@ -731,7 +732,7 @@
            && State != E_ActorState.Roll
            && !s_MapSwitching
            && !heavenBattleModel.IsBattlePrepare
            && !m_Beating;
            && !BeBeating;
    }
    public bool CanCastSkill()
@@ -745,7 +746,7 @@
            && State != E_ActorState.Mocked
            && !s_MapSwitching
            && !heavenBattleModel.IsBattlePrepare
            && !m_Beating;
            && !BeBeating;
    }
    public void StopAll()
Fight/GameActor/GActorFight.cs
@@ -196,7 +196,7 @@
    private Vector3 m_StartBeatPos;
    private float m_Factor;
    private float m_BeatStartTime;
    protected bool m_Beating;
    public bool BeBeating { get; protected set; }
    private Vector3 m_BeatDirection;
    private bool m_PushOrPull;
    private uint m_AttackerSID;
@@ -251,13 +251,13 @@
        m_StartBeatPos = Pos;
        m_BeatStartTime = Time.time;
        m_Beating = true;
        BeBeating = true;
        needSyncGroundHeight = false;
    }
    private void UpdateBeatBack()
    {
        if (!m_Beating)
        if (!BeBeating)
        {
            return;
        }
@@ -266,7 +266,7 @@
         || m_BeatCurve == null
         || ActorInfo.serverDie)
        {
            m_Beating = false;
            BeBeating = false;
            return;
        }
@@ -281,7 +281,7 @@
        if (_attacker == null)
        {
            m_Beating = false;
            BeBeating = false;
            return;
        }
@@ -309,7 +309,7 @@
            {
                _end = _attacker.Pos - m_BeatDirection * m_LimitDistance;
                needSyncGroundHeight = true;
                m_Beating = false;
                BeBeating = false;
            }
        }
@@ -331,7 +331,7 @@
        if (Time.time - m_BeatStartTime > m_BeatTime)
        {
            needSyncGroundHeight = true;
            m_Beating = false;
            BeBeating = false;
        }
    }
Fight/Stage/StageLoadProcessor.cs
@@ -401,12 +401,12 @@
                    break;
                case DemonJarModel.DEMONJAR_SINGLEMAPID:
                    stage = stageGameObject.AddComponent<FakeDemonJarDungeonStage>();
                    break;
                case HazyDemonKingModel.Client_MapID:
                    break;
                case HazyDemonKingModel.Client_MapID:
                    stage = stageGameObject.AddComponent<ClientHazyDemonKingStage>();
                    break;
                case HazyGrassModel.Client_FairyGrassMapID:
                case HazyGrassModel.Client_ReikiGrassMapID:
                    break;
                case HazyGrassModel.Client_FairyGrassMapID:
                case HazyGrassModel.Client_ReikiGrassMapID:
                    stage = stageGameObject.AddComponent<ClientHazyGrassStage>();
                    break;
                default:
@@ -529,15 +529,16 @@
            WindowCenter.Instance.Close<LoadingWin>();
            SystemSetting.Instance.SetGameFps(SystemSetting.Instance.GetGameFps());
            GAMgr.Instance.DoReAdjustPos();
            GAMgr.Instance.ClearReJustActor();
            done = true;
        }
        public override void End()
        {
            Application.backgroundLoadingPriority = ThreadPriority.BelowNormal;
            GAMgr.Instance.DoReAdjustPos();
            GAMgr.Instance.ClearReJustActor();
            DebugEx.LogFormat("StageLoad => Load Scene : {0} Finished.", command.toMapId);
        }
Lua/Gen/BlastFurnaceModelWrap.cs
File was deleted
Lua/Gen/BlastFurnaceModelWrap.cs.meta
File was deleted
Lua/Gen/SnxxzUIPackModelWrap.cs
@@ -88,7 +88,6 @@
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsHaveDrugUse", _m_IsHaveDrugUse);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsHaveDrugRecycle", _m_IsHaveDrugRecycle);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsReachMaxUseDrug", _m_IsReachMaxUseDrug);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetAlchemyProgress", _m_GetAlchemyProgress);
            
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "refrechPackEvent", _e_refrechPackEvent);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "refreshItemCountEvent", _e_refreshItemCountEvent);
@@ -2063,38 +2062,6 @@
            }
            
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetAlchemyProgress(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.PackModel gen_to_be_invoked = (Snxxz.UI.PackModel)translator.FastGetCSObj(L, 1);
                {
                    AlchemyConfig _alchemy = (AlchemyConfig)translator.GetObject(L, 2, typeof(AlchemyConfig));
                        float gen_ret = gen_to_be_invoked.GetAlchemyProgress( _alchemy );
                        LuaAPI.lua_pushnumber(L, gen_ret);
                    return 1;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_makeDruglist(RealStatePtr L)
Lua/Gen/SnxxzUIPrayForDurgModelWrap.cs
File was deleted
Lua/Gen/SnxxzUIPrayForDurgModelWrap.cs.meta
File was deleted
Lua/Gen/XLuaGenAutoRegister.cs
@@ -892,10 +892,6 @@
            translator.DelayWrapLoader(typeof(Snxxz.UI.RealmBetterEquipModel), SnxxzUIRealmBetterEquipModelWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(BlastFurnaceModel), BlastFurnaceModelWrap.__Register);
            translator.DelayWrapLoader(typeof(Snxxz.UI.PrayForDurgModel), SnxxzUIPrayForDurgModelWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(Snxxz.UI.BossRebornModel), SnxxzUIBossRebornModelWrap.__Register);
System/Achievement/AchievementGotoPart1.cs
@@ -17,7 +17,7 @@
        static DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } }
        static FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        static DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        static BlastFurnaceModel blastFurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        static AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        static TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        public static void GotoKillNpc(int _achievementId)
@@ -278,7 +278,7 @@
        public static void GotoStove(int _achievementId)
        {
            if (blastFurnaceModel.StoveLV < 1)
            if (alchemyModel.stoveLevel < 1)
            {
                treasureModel.currentCategory = TreasureCategory.Fairy;
                treasureModel.selectedTreasure = 301;
System/Achievement/AchievementGotoPart3.cs
@@ -121,8 +121,8 @@
        {
            if (config == null) return;
            BlastFurnaceModel model = ModelCenter.Instance.GetModel<BlastFurnaceModel>();
            if(model.StoveLV > 1)
            AlchemyModel model = ModelCenter.Instance.GetModel<AlchemyModel>();
            if(model.stoveLevel > 1)
            {
                guideAchievementId = _achievementId;
            }
System/Alchemy/AlchemyDrugWin.cs
@@ -72,6 +72,14 @@
        void SetDefaultSelect()
        {
            Int2 position;
            if (model.IsStoveAlcheming(model.selectAlchemyType, out position))
            {
                model.selectQuality = position.x;
                model.selectAlchemy = position.y;
                return;
            }
            var qualities = AlchemyConfig.GetAlchemyQualities((int)m_AlchemyType);
            model.selectQuality = qualities.First();
System/Alchemy/AlchemyModel.cs
@@ -13,6 +13,15 @@
        Dictionary<int, AlchemyDrugUseLimit> m_AlchemyDrugUseLimits = new Dictionary<int, AlchemyDrugUseLimit>();
        List<int> m_AlchemyDrugs = new List<int>();
        List<int> m_AlchemyDrugQualitys = new List<int>();
        List<int> m_AssociationItems = new List<int>();
        public readonly Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_key, 110);
        public readonly Redpoint alchemyDrugRedpoint1 = new Redpoint(110, 11001);
        public readonly Redpoint alchemyDrugRedpoint2 = new Redpoint(110, 11002);
        Dictionary<int, Dictionary<int, Redpoint>> alchemyQualityRedpoints = new Dictionary<int, Dictionary<int, Redpoint>>();
        Dictionary<int, AlchemyRedpoint> alchemyRedpoints = new Dictionary<int, AlchemyRedpoint>();
        public static int redpointIndex = 110010000;
        int m_SelectQuality = 0;
        public int selectQuality
@@ -56,6 +65,8 @@
        public bool isServerPrepare { get; private set; }
        Clock m_AlchemingClock = null;
        public event Action selectQualityRefresh;
        public event Action selectAlchemyRefresh;
        public event Action alchemyStateRefresh;
@@ -65,6 +76,10 @@
        public override void Init()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
            ParseConfig();
        }
@@ -83,10 +98,38 @@
        public void OnPlayerLoginOk()
        {
            isServerPrepare = true;
            CheckRedpoint();
        }
        public override void UnInit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
        }
        private void RefreshItemCountEvent(PackType packType, int arg2, int itemId)
        {
            if (m_AssociationItems.Contains(itemId))
            {
                CheckRedpoint();
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        {
            if (dataType == PlayerDataType.LuckValue)
            {
                CheckRedpoint();
            }
        }
        private void OnFuncStateChangeEvent(int id)
        {
            if (id == (int)FuncOpenEnum.BlastFurnace)
            {
                CheckRedpoint();
            }
        }
        void ParseConfig()
@@ -148,8 +191,19 @@
                            id = key,
                            count = dict[key],
                        });
                        if (!m_AssociationItems.Contains(key))
                        {
                            m_AssociationItems.Add(key);
                        }
                    }
                    if (!m_AssociationItems.Contains(config.LearnNeedItemID))
                    {
                        m_AssociationItems.Add(config.LearnNeedItemID);
                    }
                }
            }
            {
@@ -169,6 +223,32 @@
                }
                m_AlchemyDrugQualitys.Sort();
            }
            var qualitys = AlchemyConfig.GetAlchemyQualities((int)AlchemyType.Normal);
            alchemyQualityRedpoints.Add((int)AlchemyType.Normal, new Dictionary<int, Redpoint>());
            foreach (var quality in qualitys)
            {
                var qualityRedpoint = new Redpoint(alchemyDrugRedpoint1.id, redpointIndex++); ;
                alchemyQualityRedpoints[(int)AlchemyType.Normal].Add(quality, qualityRedpoint);
                var alchemys = AlchemyConfig.GetAlchemies((int)AlchemyType.Normal, quality);
                foreach (var id in alchemys)
                {
                    alchemyRedpoints.Add(id, new AlchemyRedpoint(qualityRedpoint.id));
                }
            }
            qualitys = AlchemyConfig.GetAlchemyQualities((int)AlchemyType.Fairy);
            alchemyQualityRedpoints.Add((int)AlchemyType.Fairy, new Dictionary<int, Redpoint>());
            foreach (var quality in qualitys)
            {
                var qualityRedpoint = new Redpoint(alchemyDrugRedpoint2.id, redpointIndex++); ;
                alchemyQualityRedpoints[(int)AlchemyType.Fairy].Add(quality, qualityRedpoint);
                var alchemys = AlchemyConfig.GetAlchemies((int)AlchemyType.Fairy, quality);
                foreach (var id in alchemys)
                {
                    alchemyRedpoints.Add(id, new AlchemyRedpoint(qualityRedpoint.id));
                }
            }
        }
@@ -201,6 +281,23 @@
        public bool TryGetAlchemyUseLimit(int id,out AlchemyDrugUseLimit drugUseLimit)
        {
            return m_AlchemyDrugUseLimits.TryGetValue(id, out drugUseLimit);
        }
        public int GetAlchemyRedpointId(int id)
        {
            return alchemyRedpoints.ContainsKey(id) ? alchemyRedpoints[id].redpoint.id : 0;
        }
        public int GetQualityRedpointId(int alchemyType, int quality)
        {
            if (alchemyQualityRedpoints.ContainsKey(alchemyType))
            {
                if (alchemyQualityRedpoints[alchemyType].ContainsKey(quality))
                {
                    return alchemyQualityRedpoints[alchemyType][quality].id;
                }
            }
            return 0;
        }
        public float GetAlchemySuccRate(int alchemyId)
@@ -307,8 +404,9 @@
            return true;
        }
        public bool IsStoveAlcheming(AlchemyType alchemyType)
        public bool IsStoveAlcheming(AlchemyType alchemyType, out Int2 alchemyPosition)
        {
            alchemyPosition = default(Int2);
            var qualities = AlchemyConfig.GetAlchemyQualities((int)alchemyType);
            foreach (var quality in qualities)
            {
@@ -318,6 +416,8 @@
                    var state = GetStoveState(alchemyId);
                    if (state != 0)
                    {
                        alchemyPosition.x = quality;
                        alchemyPosition.y = alchemyId;
                        return true;
                    }
                }
@@ -327,10 +427,33 @@
        public void ReceivePackage(HA3BF_tagMCPlayerStoveMsg package)
        {
            var seconds = 0;
            for (int i = 0; i < package.StoveCnt; i++)
            {
                var data = package.InfoList[i];
                m_AlchemyTimes[(int)data.AlchemyID] = data.StartTime;
                if (data.StartTime > 0)
                {
                    var config = AlchemyConfig.Get((int)data.AlchemyID);
                    var time = TimeUtility.GetTime(data.StartTime);
                    var _seconds = (int)(TimeUtility.ServerNow - time).TotalSeconds;
                    if (_seconds < config.NeedTime && config.NeedTime - _seconds > seconds)
                    {
                        seconds = config.NeedTime - _seconds;
                    }
                }
            }
            if (m_AlchemingClock != null)
            {
                Clock.Stop(m_AlchemingClock);
                m_AlchemingClock = null;
            }
            if (seconds > 0)
            {
                m_AlchemingClock = Clock.AlarmAfter(seconds, CheckRedpoint);
            }
            stoveLevel = package.StoveLV;
@@ -351,6 +474,8 @@
                    }
                }
            }
            CheckRedpoint();
            if (alchemyStateRefresh != null)
            {
@@ -373,6 +498,134 @@
            if (alchemyDrugUseRefresh != null)
            {
                alchemyDrugUseRefresh();
            }
        }
        static List<int> s_Endables = new List<int>();
        static List<int> s_Studyables = new List<int>();
        static List<int> s_Alchemyables = new List<int>();
        static Dictionary<AlchemyType, List<int>> s_SortQualitys = new Dictionary<AlchemyType, List<int>>();
        public List<int> GetSortQualitys(AlchemyType alchemyType)
        {
            if (!s_SortQualitys.ContainsKey(alchemyType))
            {
                s_SortQualitys.Add(alchemyType, new List<int>(AlchemyConfig.GetAlchemyQualities((int)alchemyType)));
                s_SortQualitys[alchemyType].Sort(QualityCompare);
            }
            return s_SortQualitys[alchemyType];
        }
        private int QualityCompare(int x, int y)
        {
            return -x.CompareTo(y);
        }
        void CheckRedpoint()
        {
            s_Endables.Clear();
            s_Studyables.Clear();
            s_Alchemyables.Clear();
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlastFurnace))
            {
                RefreshRedpoint();
                return;
            }
            CheckRedpoint(AlchemyType.Normal);
            CheckRedpoint(AlchemyType.Fairy);
            RefreshRedpoint();
        }
        void CheckRedpoint(AlchemyType alchemyType)
        {
            Int2 position;
            if (IsStoveAlcheming(alchemyType, out position))
            {
                var state = GetStoveState(position.y);
                if (state == 2)
                {
                    s_Endables.Add(position.y);
                }
            }
            else
            {
                var qualitys = AlchemyConfig.GetAlchemyQualities((int)alchemyType);
                foreach (var quality in qualitys)
                {
                    var alchemys = AlchemyConfig.GetAlchemies((int)alchemyType, quality);
                    foreach (var id in alchemys)
                    {
                        if (!IsGraspRecipe(id))
                        {
                            var config = AlchemyConfig.Get(id);
                            var count = packModel.GetItemCountByID(PackType.Item, config.LearnNeedItemID);
                            if (count <= 0 || stoveLevel < config.LearnNeedAlchemLV
                                || PlayerDatas.Instance.extersion.luckValue < config.LearnNeedLuck)
                            {
                                continue;
                            }
                            s_Studyables.Add(id);
                        }
                    }
                }
                qualitys = GetSortQualitys(alchemyType);
                foreach (var quality in qualitys)
                {
                    var alchemyable = false;
                    var alchemys = AlchemyConfig.GetAlchemies((int)alchemyType, quality);
                    foreach (var id in alchemys)
                    {
                        if (!IsGraspRecipe(id))
                        {
                            continue;
                        }
                        Item item;
                        if (IsAlchemyEnoughMaterial(id, out item))
                        {
                            s_Alchemyables.Add(id);
                            alchemyable = true;
                        }
                    }
                    if (alchemyable)
                    {
                        break;
                    }
                }
            }
        }
        void RefreshRedpoint()
        {
            var qualitys = AlchemyConfig.GetAlchemyQualities((int)AlchemyType.Normal);
            foreach (var quality in qualitys)
            {
                var alchemys = AlchemyConfig.GetAlchemies((int)AlchemyType.Normal, quality);
                foreach (var id in alchemys)
                {
                    var redpoint = alchemyRedpoints[id];
                    redpoint.studyRedpoint.state = s_Studyables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                    redpoint.endRedpoint.state = s_Endables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                    redpoint.alchemyRedpoint.state = s_Alchemyables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                }
            }
            qualitys = AlchemyConfig.GetAlchemyQualities((int)AlchemyType.Fairy);
            foreach (var quality in qualitys)
            {
                var alchemys = AlchemyConfig.GetAlchemies((int)AlchemyType.Fairy, quality);
                foreach (var id in alchemys)
                {
                    var redpoint = alchemyRedpoints[id];
                    redpoint.studyRedpoint.state = s_Studyables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                    redpoint.endRedpoint.state = s_Endables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                    redpoint.alchemyRedpoint.state = s_Alchemyables.Contains(id) ? RedPointState.Simple : RedPointState.None;
                }
            }
        }
    }
@@ -497,5 +750,21 @@
            return 0;
        }
    }
    public class AlchemyRedpoint
    {
        public readonly Redpoint redpoint;
        public readonly Redpoint studyRedpoint;
        public readonly Redpoint endRedpoint;
        public readonly Redpoint alchemyRedpoint;
        public AlchemyRedpoint(int baseId)
        {
            redpoint = new Redpoint(baseId, AlchemyModel.redpointIndex++);
            studyRedpoint = new Redpoint(redpoint.id, AlchemyModel.redpointIndex++);
            endRedpoint = new Redpoint(redpoint.id, AlchemyModel.redpointIndex++);
            alchemyRedpoint = new Redpoint(redpoint.id, AlchemyModel.redpointIndex++);
        }
    }
}
System/Alchemy/AlchemyQualityCell.cs
@@ -12,6 +12,7 @@
        [SerializeField] Image m_Arrow;
        [SerializeField] Transform m_ContainerSelect;
        [SerializeField] Button m_Func;
        [SerializeField] RedpointBehaviour m_Redpoint;
        int quality = 0;
@@ -28,6 +29,7 @@
            m_QualityName.text = Language.Get("AlchemyQualityName", Language.Get("Num_CHS_" + quality));
            m_ContainerSelect.gameObject.SetActive(model.selectQuality == quality);
            m_Arrow.transform.localEulerAngles = new Vector3(0, 0, model.selectQuality == quality ? -90 : 0);
            m_Redpoint.redpointId = model.GetQualityRedpointId((int)model.selectAlchemyType, quality);
        }
        private void OnSelect()
@@ -38,6 +40,15 @@
            }
            else
            {
                Int2 position;
                if (model.IsStoveAlcheming(model.selectAlchemyType, out position))
                {
                    if (position.x != quality)
                    {
                        SysNotifyMgr.Instance.ShowTip("AlchemingSwitchError");
                        return;
                    }
                }
                model.selectQuality = quality;
            }
        }
System/Alchemy/AlchemyRecipeCell.cs
@@ -12,6 +12,7 @@
        [SerializeField] Text m_UnGrasp;
        [SerializeField] Transform m_ContainerSelect;
        [SerializeField] Button m_Func;
        [SerializeField] RedpointBehaviour m_Redpoint;
        int id = 0;
@@ -33,10 +34,21 @@
            m_UnGrasp.gameObject.SetActive(!model.IsGraspRecipe(id));
            m_ContainerSelect.gameObject.SetActive(model.selectAlchemy == id);
            m_Redpoint.redpointId = model.GetAlchemyRedpointId(id);
        }
        private void OnSelect()
        {
            Int2 position;
            if (model.IsStoveAlcheming(model.selectAlchemyType, out position))
            {
                if (position.y != id)
                {
                    SysNotifyMgr.Instance.ShowTip("AlchemingSwitchError");
                    return;
                }
            }
            model.selectAlchemy = id;
        }
    }
System/Alchemy/AlchemyScrollBehaviour.cs
@@ -24,8 +24,16 @@
            DisplayRecipes();
            var qualities = new List<int>(AlchemyConfig.GetAlchemyQualities(alchemyType));
            var index = qualities.IndexOf(model.selectQuality);
            if (index != -1)
            {
                m_Controller.JumpIndex(index);
            }
            model.selectQualityRefresh += SelectQualityRefresh;
            model.selectAlchemyRefresh += SelectAlchemyRefresh;
            model.alchemyStateRefresh += AlchemyStateRefresh;
        }
        void DisplayRecipes()
@@ -71,10 +79,16 @@
            m_Controller.m_Scorller.RefreshActiveCellViews();
        }
        private void AlchemyStateRefresh()
        {
            m_Controller.m_Scorller.RefreshActiveCellViews();
        }
        public void Dispose()
        {
            model.selectQualityRefresh -= SelectQualityRefresh;
            model.selectAlchemyRefresh -= SelectAlchemyRefresh;
            model.alchemyStateRefresh -= AlchemyStateRefresh;
        }
    }
}
System/Alchemy/AlchemyStoveBehaviour.cs
@@ -200,7 +200,8 @@
            switch (state)
            {
                case 0:
                    if (model.IsStoveAlcheming(model.selectAlchemyType))
                    Int2 alchemyPosition;
                    if (model.IsStoveAlcheming(model.selectAlchemyType, out alchemyPosition))
                    {
                        SysNotifyMgr.Instance.ShowTip("AlchemingError");
                        return;
System/BlastFurnace/BlastFurnaceModel.cs
@@ -7,7 +7,6 @@
using UnityEngine;
using LitJson;
[XLua.LuaCallCSharp]
public class BlastFurnaceModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
{
    public BlastFurnaceFuncTitle funcTitle = BlastFurnaceFuncTitle.MakeDan;
@@ -239,18 +238,10 @@
        if (isMakeDan)
        {
            if (!WindowCenter.Instance.IsOpen<MakerDrugSuccessWin>())
            {
                WindowCenter.Instance.Open<MakerDrugSuccessWin>();
            }
            isMakeDan = false;
        }
        else
        {
            if (WindowCenter.Instance.IsOpen<MakerDrugSuccessWin>())
            {
                WindowCenter.Instance.Close<MakerDrugSuccessWin>();
            }
        }
    }
@@ -333,18 +324,10 @@
                {
                    if (makerItemID != 0)
                    {
                        if (!WindowCenter.Instance.IsOpen<MakerDrugSuccessWin>())
                        {
                            WindowCenter.Instance.Open<MakerDrugSuccessWin>();
                        }
                    }
                }
                else
                {
                    if (!WindowCenter.Instance.IsOpen<MakerDrugFailWin>())
                    {
                        WindowCenter.Instance.Open<MakerDrugFailWin>();
                    }
                }
                break;
        }
System/BlastFurnace/BlastFurnaceWin.cs
File was deleted
System/BlastFurnace/BlastFurnaceWin.cs.meta
File was deleted
System/BlastFurnace/DanDrugRecycleTip.cs
File was deleted
System/BlastFurnace/DanDrugRecycleTip.cs.meta
File was deleted
System/BlastFurnace/DanDrugShopCell.cs
File was deleted
System/BlastFurnace/DanDrugShopCell.cs.meta
File was deleted
System/BlastFurnace/DandrugCell.cs
File was deleted
System/BlastFurnace/DandrugCell.cs.meta
File was deleted
System/BlastFurnace/FireChooseCell.cs
File was deleted
System/BlastFurnace/FireChooseCell.cs.meta
File was deleted
System/BlastFurnace/FurnaceFireChooseWin.cs
File was deleted
System/BlastFurnace/FurnaceFireChooseWin.cs.meta
File was deleted
System/BlastFurnace/LingDanTips.cs
File was deleted
System/BlastFurnace/LingDanTips.cs.meta
File was deleted
System/BlastFurnace/MakeDrugSortCell.cs
File was deleted
System/BlastFurnace/MakeDrugSortCell.cs.meta
File was deleted
System/BlastFurnace/MakerDrugFailWin.cs
File was deleted
System/BlastFurnace/MakerDrugFailWin.cs.meta
File was deleted
System/BlastFurnace/MakerDrugSuccessWin.cs
File was deleted
System/BlastFurnace/PrayDrugCell.cs
File was deleted
System/BlastFurnace/PrayDrugCell.cs.meta
File was deleted
System/BlastFurnace/PrayForDrugVipLackWin.cs
File was deleted
System/BlastFurnace/PrayForDrugVipLackWin.cs.meta
File was deleted
System/BlastFurnace/PrayForDurgModel.cs
File was deleted
System/BlastFurnace/PrayForDurgModel.cs.meta
File was deleted
System/BlastFurnace/PrayforDrugGetItemWin.cs
File was deleted
System/BlastFurnace/PrayforDrugGetItemWin.cs.meta
File was deleted
System/BlastFurnace/PrayforDrugWin.cs
File was deleted
System/BlastFurnace/PrayforDrugWin.cs.meta
File was deleted
System/BlastFurnace/RecycleDrugCell.cs
File was deleted
System/BlastFurnace/RecycleDrugCell.cs.meta
File was deleted
System/BlastFurnace/SortMakeDrugTable.cs
File was deleted
System/BlastFurnace/SortMakeDrugTable.cs.meta
File was deleted
System/BlastFurnace/StoveRecipeCell.cs
File was deleted
System/BlastFurnace/StoveRecipeCell.cs.meta
File was deleted
System/BlastFurnace/StoveUpgradWin.cs
File was deleted
System/BlastFurnace/StoveUpgradWin.cs.meta
File was deleted
System/BlastFurnace/TreasureEffectCell.cs
File was deleted
System/BlastFurnace/TreasureEffectCell.cs.meta
File was deleted
System/KnapSack/Logic/MakeDrugCell.cs
File was deleted
System/KnapSack/Logic/MakeDrugCell.cs.meta
File was deleted
System/KnapSack/Logic/PackModel.cs
@@ -21,7 +21,7 @@
        Dictionary<int, List<int>> sharedUseCountItemDict { get; set; }
        bool isUpdatePlayerLv = false;
        BlastFurnaceModel FurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        public override void Init()
@@ -1686,7 +1686,19 @@
        public bool IsReachMaxUseDrug(AttrFruitConfig fruitConfig)
        {
            if (fruitConfig == null) return false;
            if (fruitConfig == null)
            {
                return false;
            }
            if (fruitConfig.FuncID == 2)
            {
                AlchemyDrugUseLimit drugUseLimit;
                if (alchemyModel.TryGetAlchemyUseLimit(fruitConfig.ID, out drugUseLimit))
                {
                    return drugUseLimit.IsReachLimit();
                }
            }
            int useNum = GetItemTotalUsedTimes(fruitConfig.ID);
            if (useNum >= fruitConfig.basicUseLimit)
@@ -1694,28 +1706,6 @@
                return true;
            }
            return false;
        }
        List<AttrFruitConfig> limitlist = new List<AttrFruitConfig>();
        public float GetAlchemyProgress(AlchemyConfig alchemy)
        {
            var previewDanlist = FurnaceModel.GetPreviewIdlist(alchemy);
            float progress = 0;
            limitlist.Clear();
            for (int i = 0; i < previewDanlist.Count; i++)
            {
                AttrFruitConfig fruitConfig = AttrFruitConfig.Get(previewDanlist[i]);
                if (fruitConfig != null)
                {
                    limitlist.Add(fruitConfig);
                }
            }
            for (int i = 0; i < limitlist.Count; i++)
            {
                progress += ((float)1 / limitlist.Count) * ((float)GetItemTotalUsedTimes(limitlist[i].ID) / limitlist[i].basicUseLimit);
            }
            return progress * 100;
        }
        #endregion
    }
System/KnapSack/Logic/RoleElixirTipWin.cs
File was deleted
System/KnapSack/Logic/RoleElixirTipWin.cs.meta
File was deleted
System/MainInterfacePanel/HeadPortraitTip.cs
@@ -189,22 +189,22 @@
            bool IsBossBool = MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);//是否在Boss区域
            if (atkInt.Length > 1)
            {
                var activityline = 0;
                fairyGrabBossModel.TryGetFairyGrabBossLine(out activityline);
                if (PlayerDatas.Instance.baseData.MapID == 10040 && activityline == PlayerDatas.Instance.baseData.FBID)//逍遥城活动线不允许切换模式
                {
                    SysNotifyMgr.Instance.ShowTip("Map_AtkType");
                    return;
                }
                if (PlayerDatas.Instance.baseData.MapID == 10040 && IsBossBool && !fairyGrabBossModel.grabBossHintOpen)//逍遥城boss区域特殊处理(可切换状态)
                {
                    WindowCenter.Instance.Open<CombatModeWin>();
                    if (WindowCenter.Instance.IsOpen<FunctionForecastWin>())
                    {
                        WindowCenter.Instance.Close<FunctionForecastWin>();
                    }
                    return;
                }
                //var activityline = 0;
                //fairyGrabBossModel.TryGetFairyGrabBossLine(out activityline);
                //if (PlayerDatas.Instance.baseData.MapID == 10040 && activityline == PlayerDatas.Instance.baseData.FBID)//逍遥城活动线不允许切换模式
                //{
                //    SysNotifyMgr.Instance.ShowTip("Map_AtkType");
                //    return;
                //}
                //if (PlayerDatas.Instance.baseData.MapID == 10040 && IsBossBool && !fairyGrabBossModel.grabBossHintOpen)//逍遥城boss区域特殊处理(可切换状态)
                //{
                //    WindowCenter.Instance.Open<CombatModeWin>();
                //    if (WindowCenter.Instance.IsOpen<FunctionForecastWin>())
                //    {
                //        WindowCenter.Instance.Close<FunctionForecastWin>();
                //    }
                //    return;
                //}
                if (onMainModel.ShieldedArea.Contains(mapID))//Boss争夺战前三只保底只能是和平模式
                {
@@ -212,11 +212,11 @@
                    return;
                }
                if (onMainModel.ActivityList.Contains(PlayerDatas.Instance.baseData.MapID) && activityline != PlayerDatas.Instance.baseData.FBID)//再前四章新手地图且不在活动区域
                {
                    SysNotifyMgr.Instance.ShowTip("Map_AtkType");
                    return;
                }
                //if (onMainModel.ActivityList.Contains(PlayerDatas.Instance.baseData.MapID) && activityline != PlayerDatas.Instance.baseData.FBID)//再前四章新手地图且不在活动区域
                //{
                //    SysNotifyMgr.Instance.ShowTip("Map_AtkType");
                //    return;
                //}
                WindowCenter.Instance.Open<CombatModeWin>();
                if (WindowCenter.Instance.IsOpen<FunctionForecastWin>())
System/MainInterfacePanel/PlayerMainDate.cs
@@ -158,10 +158,10 @@
        {
            ActivityList.Add(Activity_List[i]);
        }
        ShieldedArea.Add(10010);
        ShieldedArea.Add(10020);
        ShieldedArea.Add(10030);
        ShieldedArea.Add(10040);
        //ShieldedArea.Add(10010);
        //ShieldedArea.Add(10020);
        //ShieldedArea.Add(10030);
        //ShieldedArea.Add(10040);
        string WaHuangHighestFloorStr= FuncConfigConfig.Get("WaHuangHighestFloor").Numerical1;
        WaHuangHighestFloor = int.Parse(WaHuangHighestFloorStr);
        ruinsTranscriptMapId = int.Parse(FuncConfigConfig.Get("SpRewardMapID").Numerical1);//娲皇地图ID
System/Realm/ActivateShow.cs
@@ -150,61 +150,6 @@
            }
        }
        public static void StoveUpgrade(int stoveLv)
        {
            activateType = ActivateFunc.Stove;
            propertyCompares.Clear();
            currentPropertyDict.Clear();
            lastPropertyDict.Clear();
            skills.Clear();
            beforeLv = stoveLv - 1;
            currentLv = stoveLv;
            var model = ModelCenter.Instance.GetModel<BlastFurnaceModel>();
            for(int i = 0; i < model.alchemyModellist.Count; i++)
            {
                //if(stoveLv == model.alchemyModellist[i].BlastFurnaceLV)
                //{
                //    skills.Add(model.alchemyModellist[i].AlchemyID);
                //}
            }
            var _beforeConfig = RefineStoveConfig.Get(beforeLv);
            List<int> _beforeProperties = new List<int>();
            if (_beforeConfig != null)
            {
                _beforeProperties.AddRange(_beforeConfig.AttrID);
                for (int i = 0; i < _beforeConfig.AttrID.Length; i++)
                {
                    lastPropertyDict.Add(_beforeConfig.AttrID[i], _beforeConfig.AttrValue[i]);
                }
            }
            var config = RefineStoveConfig.Get(stoveLv);
            for (int i = 0; i < config.AttrID.Length; i++)
            {
                var _index = _beforeProperties.IndexOf(config.AttrID[i]);
                if (_index == -1 || config.AttrValue[i] > _beforeConfig.AttrValue[_index])
                {
                    propertyCompares.Add(new PropertyCompare()
                    {
                        key = config.AttrID[i],
                        beforeValue = _index == -1 ? 0 : _beforeConfig.AttrValue[_index],
                        currentValue = config.AttrValue[i]
                    });
                }
                currentPropertyDict.Add(config.AttrID[i], config.AttrValue[i]);
            }
            fightPower = UIHelper.GetFightPower(currentPropertyDict) - UIHelper.GetFightPower(lastPropertyDict);
            titleIconKey = "XT_LD_01";
            if (!WindowCenter.Instance.IsOpen<StoveUpgradWin>())
            {
                WindowCenter.Instance.Open<StoveUpgradWin>();
            }
        }
        public static void JadeDynastySkillUnlock(int skillId)
        {
            activateType = ActivateFunc.JadeDynastySkill;
System/Realm/RealmNewEquipWin.cs
New file
@@ -0,0 +1,106 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, April 22, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class RealmNewEquipWin : Window
    {
        [SerializeField] RawImage m_RawPlayer;
        [SerializeField] Image m_EquipName;
        [SerializeField] Text m_CloseRemind;
        [SerializeField] Button m_Close;
        public static int realmLevel = 0;
        float timer = 0f;
        RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.AddListener(OnClickClose);
        }
        protected override void OnPreOpen()
        {
            timer = 0f;
            m_CloseRemind.gameObject.SetActive(false);
            Display();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            UI3DModelExhibition.Instance.StopShow();
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            timer += Time.deltaTime;
            if (timer >= 2f)
            {
                if (!m_CloseRemind.gameObject.activeSelf)
                {
                    m_CloseRemind.gameObject.SetActive(true);
                }
            }
        }
        #endregion
        void Display()
        {
            var config = RealmConfig.Get(realmLevel);
            m_EquipName.SetSprite(config.equipNameIcon);
            var job = PlayerDatas.Instance.baseData.Job;
            int[] equips = null;
            model.TryGetRealmPreviewEquips(realmLevel, job, out equips);
            m_RawPlayer.gameObject.SetActive(true);
            UI3DModelExhibition.Instance.ShowPlayer(m_RawPlayer, new UI3DPlayerExhibitionData()
            {
                job = job,
                clothesId = equips != null && equips.Length > 0 ? equips[0] : 0,
                weaponId = equips != null && equips.Length > 1 ? equips[1] : 0,
                secondaryId = equips != null && equips.Length > 2 ? equips[2] : 0,
                suitLevel = 1,
            });
        }
        private void OnClickClose()
        {
            if (timer >= 2f)
            {
                CloseClick();
            }
        }
    }
}
System/Realm/RealmNewEquipWin.cs.meta
copy from System/BlastFurnace/MakerDrugSuccessWin.cs.meta copy to System/Realm/RealmNewEquipWin.cs.meta
File was copied from System/BlastFurnace/MakerDrugSuccessWin.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 37157c2c90639834e98c122f69a7cf54
timeCreated: 1510366701
guid: da0e1f8abee70934bb9811cf1a7f7566
timeCreated: 1555915994
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/Realm/RealmPromoteWin.cs
New file
@@ -0,0 +1,136 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, April 22, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class RealmPromoteWin : Window
    {
        [SerializeField] Text m_FightPoint;
        [SerializeField] PropertyBehaviour[] m_Propertys;
        [SerializeField] Text m_ReikiPoint;
        [SerializeField] Image m_RealmIcon;
        [SerializeField] UIEffect m_Effect;
        [SerializeField] Button m_Close;
        [SerializeField] Transform m_CloseRemind;
        public static int realmLevel = 0;
        static Dictionary<int, int> propertys = new Dictionary<int, int>();
        float timer = 0f;
        RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.AddListener(OnClickClose);
        }
        protected override void OnPreOpen()
        {
            timer = 0f;
            m_CloseRemind.gameObject.SetActive(false);
            Dispaly();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
        }
        protected override void OnAfterClose()
        {
        }
        protected override void LateUpdate()
        {
            timer += Time.deltaTime;
            if (timer >= 2f)
            {
                if (!m_CloseRemind.gameObject.activeSelf)
                {
                    m_CloseRemind.gameObject.SetActive(true);
                }
            }
        }
        #endregion
        private void OnClickClose()
        {
            if (timer >= 2f)
            {
                CloseClick();
            }
        }
        void Dispaly()
        {
            propertys.Clear();
            var currentConfig = RealmConfig.Get(realmLevel);
            var lastConfig = RealmConfig.Get(realmLevel - 1);
            for (int i = 0; i < currentConfig.AddAttrType.Length; i++)
            {
                propertys.Add(currentConfig.AddAttrType[i], currentConfig.AddAttrNum[i]);
            }
            if (lastConfig.AddAttrType != null && lastConfig.AddAttrType.Length > 0)
            {
                for (int i = 0; i < lastConfig.AddAttrType.Length; i++)
                {
                    var property = lastConfig.AddAttrType[i];
                    if (propertys.ContainsKey(property))
                    {
                        propertys[property] -= lastConfig.AddAttrNum[i];
                    }
                }
            }
            var fightPoint = UIHelper.GetFightPower(propertys);
            m_FightPoint.text = fightPoint.ToString();
            for (int i = 0; i < m_Propertys.Length; i++)
            {
                m_Propertys[i].gameObject.SetActive(i < currentConfig.AddAttrType.Length);
                if (i < currentConfig.AddAttrType.Length)
                {
                    var property = currentConfig.AddAttrType[i];
                    m_Propertys[i].DisplayRealm(property, currentConfig.AddAttrNum[i] - propertys[property], currentConfig.AddAttrNum[i]);
                }
            }
            m_ReikiPoint.text = model.realmLevelUpReikiPoint.ToString();
            m_RealmIcon.SetSprite(currentConfig.Img);
            var effectId = model.GetRealmCoverEffect(realmLevel);
            m_Effect.StopImediatly();
            m_Effect.effect = effectId;
            m_Effect.Play();
        }
    }
}
System/Realm/RealmPromoteWin.cs.meta
File was renamed from System/BlastFurnace/MakerDrugSuccessWin.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 37157c2c90639834e98c122f69a7cf54
timeCreated: 1510366701
guid: 374c2550ad2895744a77c2529be14bde
timeCreated: 1555911876
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/Realm/RealmPropertyUpWin.cs
@@ -279,11 +279,11 @@
        {
            switch (ActivateShow.activateType)
            {
                case ActivateShow.ActivateFunc.Realm:
                    m_ModelRawImage.gameObject.SetActive(true);
                    m_ModelRawImage.rectTransform.sizeDelta = new Vector2(680, 510);
                    UI3DModelExhibition.Instance.ShowPlayer(m_ModelRawImage, PlayerDatas.Instance.baseData.Job, RoleEquipType.Wing);
                    break;
                //case ActivateShow.ActivateFunc.Realm:
                //    m_ModelRawImage.gameObject.SetActive(true);
                //    m_ModelRawImage.rectTransform.sizeDelta = new Vector2(680, 510);
                //    UI3DModelExhibition.Instance.ShowPlayer(m_ModelRawImage, PlayerDatas.Instance.baseData.Job, RoleEquipType.Wing);
                //    break;
                case ActivateShow.ActivateFunc.GodWeapon:
                    m_ModelRawImage.gameObject.SetActive(true);
                    m_ModelRawImage.rectTransform.sizeDelta = new Vector2(600, 600);
System/Realm/RealmWin.cs
@@ -104,6 +104,7 @@
            m_RealmAnimation.onBossAppearComplete += OnBossAppearComplete;
            m_RealmAnimation.onCoverChange += OnCoverChange;
            mainDateModel.customDisplayPower += CustomDisplayPower;
            WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;
            cacheRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
            cacheFightPower = PlayerDatas.Instance.baseData.FightPoint;
@@ -141,6 +142,7 @@
            m_RealmAnimation.onBossAppearComplete -= OnBossAppearComplete;
            mainDateModel.customDisplayPower -= CustomDisplayPower;
            m_RealmAnimation.onCoverChange -= OnCoverChange;
            WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
            HideRealmUp();
        }
@@ -460,14 +462,16 @@
            }
            DisplayUnlockEquip();
            RealmPromoteWin.realmLevel = model.displayRealmLevel;
            WindowCenter.Instance.Open<RealmPromoteWin>();
            if (model.displayRealms.Count > 0)
            {
                model.displayRealms.RemoveAt(0);
            }
            if (model.displayRealms.Count > 0)
            {
                TryStartAnimation();
            }
            //if (model.displayRealms.Count > 0)
            //{
            //    TryStartAnimation();
            //}
            DisplayRealmPool();
        }
@@ -488,14 +492,17 @@
            if (!m_RealmAnimation.rotating)
            {
                RealmPromoteWin.realmLevel = model.displayRealmLevel;
                WindowCenter.Instance.Open<RealmPromoteWin>();
                if (model.displayRealms.Count > 0)
                {
                    model.displayRealms.RemoveAt(0);
                }
                if (model.displayRealms.Count > 0)
                {
                    TryStartAnimation();
                }
                //if (model.displayRealms.Count > 0)
                //{
                //    TryStartAnimation();
                //}
            }
            DisplayRealmPool();
@@ -507,6 +514,33 @@
            customUpPower = 0;
        }
        private void WindowAfterCloseEvent(Window window)
        {
            if (window is RealmPromoteWin)
            {
                var equipLevel = 0;
                if (model.IsUnlockEquipRealm(RealmPromoteWin.realmLevel, out equipLevel))
                {
                    RealmNewEquipWin.realmLevel = RealmPromoteWin.realmLevel;
                    WindowCenter.Instance.Open<RealmNewEquipWin>();
                }
                else
                {
                    if (model.displayRealms.Count > 0)
                    {
                        TryStartAnimation();
                    }
                }
            }
            if (window is RealmNewEquipWin)
            {
                if (model.displayRealms.Count > 0)
                {
                    TryStartAnimation();
                }
            }
        }
        public void OnBossAppearComplete()
        {
            m_GotoBoss.gameObject.SetActive(true);
System/Role/PropertyBehaviour.cs
@@ -32,6 +32,13 @@
            DisplayAddLabel(_property, _add);
        }
        public void DisplayRealm(int _property, int _value, int _add)
        {
            m_PropertyName.text = GetPropertyName(_property);
            m_PropertyValue.text = GetValueLabel(_property, _value);
            m_PropertyAdd.text = GetValueLabel(_property, _add);
        }
        public void DisplayGodWeaponAdd(int _property, int _value, int _add)
        {
            m_PropertyName.text = GetPropertyName(_property);
System/RolePromote/RolePromoteModel.cs
@@ -29,7 +29,6 @@
            RedpointCenter.Instance.redpointValueChangeEvent += RedpointValueChangeEvent;
            ItemLogicUtility.Instance.GetBetterEquipEvent += RefreshGetBetterEquipEvent;
            MountModel.PlayerLoginOKData += PlayerLoginOKData;
            blastFurnaceModel.blastFurnacePromoteUpdate += BlastFurnacePromoteUpdate;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
            OnBeforePlayerDataInitialize();
        }
@@ -112,7 +111,7 @@
        }
        BlastFurnaceModel blastFurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        RoleModel roleModel { get { return ModelCenter.Instance.GetModel<RoleModel>(); } }
@@ -468,7 +467,8 @@
                case PromoteDetailType.FairyHeart:
                    return ModelCenter.Instance.GetModel<PlayerMethodData>().fairyHeartRedpoint.state == RedPointState.Simple;
                case PromoteDetailType.BlastFurnace:
                    return blastFurnaceModel.CheckUseDrugLimit();
                    return false;
                    //return alchemyModel.CheckUseDrugLimit();
                case PromoteDetailType.max:
                    break;
            }
System/Treasure/FairyTreasureCollectPanelPattern5.cs
@@ -37,7 +37,7 @@
        [SerializeField] Button m_GotoStove;
        BlastFurnaceModel blastFurnaceModel { get { return ModelCenter.Instance.GetModel<BlastFurnaceModel>(); } }
        AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
        AchievementModel achievementModel
        {
@@ -323,72 +323,37 @@
            m_ContainerFurnace.gameObject.SetActive(treasure.state == TreasureState.Collected && treasure.level >= 2);
            if (treasure.state == TreasureState.Collected && treasure.level >= 2)
            {
                var stoveLevel = blastFurnaceModel.StoveLV;
                var stoveLevel = alchemyModel.stoveLevel;
                m_FurnaceLv.text = Language.Get("BlastFurnace101", stoveLevel);
                var configNow = RefineStoveConfig.Get(stoveLevel);
                var min = Mathf.Min(m_CurrentPropertyNames.Length, m_CurrentPropertyValues.Length);
                for (int i = 0; i < min; i++)
                {
                    if (i < configNow.AttrID.Length)
                    {
                        m_CurrentPropertyNames[i].gameObject.SetActive(true);
                        m_CurrentPropertyValues[i].gameObject.SetActive(true);
                        var propertyId = configNow.AttrID[i];
                        var propertyConfig = PlayerPropertyConfig.Get(propertyId);
                        m_CurrentPropertyNames[i].text = propertyConfig.Name;
                        m_CurrentPropertyValues[i].text = StringUtility.Contact("+", configNow.AttrValue[i]);
                    }
                    else
                    {
                        m_CurrentPropertyNames[i].gameObject.SetActive(false);
                        m_CurrentPropertyValues[i].gameObject.SetActive(false);
                    }
                    m_CurrentPropertyNames[i].gameObject.SetActive(false);
                    m_CurrentPropertyValues[i].gameObject.SetActive(false);
                }
                var configNext = RefineStoveConfig.Get(stoveLevel + 1);
                var isMax = configNext==null;
                m_NextProperty.gameObject.SetActive(!isMax);
                m_MaxLevelContainer.gameObject.SetActive(isMax);
                m_NextProperty.gameObject.SetActive(false);
                m_MaxLevelContainer.gameObject.SetActive(false);
                if (!isMax)
                {
                    var min1 = Mathf.Min(m_NextPropertyNames.Length, m_NextPropertyValues.Length);
                    for (int i = 0; i < min1; i++)
                    {
                        if (i < configNext.AttrID.Length)
                        {
                            m_NextPropertyNames[i].gameObject.SetActive(true);
                            m_NextPropertyValues[i].gameObject.SetActive(true);
                            var propertyId = configNext.AttrID[i];
                            var propertyConfig = PlayerPropertyConfig.Get(propertyId);
                            m_NextPropertyNames[i].text = propertyConfig.Name;
                            m_NextPropertyValues[i].text = StringUtility.Contact("+", configNext.AttrValue[i]);
                        }
                        else
                        {
                            m_NextPropertyNames[i].gameObject.SetActive(false);
                            m_NextPropertyValues[i].gameObject.SetActive(false);
                        }
                    }
                }
                var isMax = !RefineStoveConfig.Has(stoveLevel + 1);
                var stoveConfig = RefineStoveConfig.Get(stoveLevel);
                m_StoveSlider.minValue = 0;
                if (blastFurnaceModel.GetBlastFurnaceUpgradExp() <= 0)
                m_StoveSlider.maxValue = 1;
                if (isMax)
                {
                    m_StoveSlider.maxValue = 1;
                    m_StoveSlider.value = 1;
                }
                else
                {
                    m_StoveSlider.maxValue = blastFurnaceModel.GetBlastFurnaceUpgradExp();
                    m_StoveSlider.value = blastFurnaceModel.StoveExp;
                    m_StoveSlider.value = Mathf.Clamp01((float)alchemyModel.stoveExp / stoveConfig.Exp);
                }
                if (!blastFurnaceModel.IsReachMaxStoveLv())
                if (!isMax)
                {
                    m_Progress.text = blastFurnaceModel.StoveExp + "/" + blastFurnaceModel.GetBlastFurnaceUpgradExp();
                    m_Progress.text = StringUtility.Contact(alchemyModel.stoveExp, "/", stoveConfig.Exp);
                }
                else
                {
System/WindowBase/ModelCenter.cs
@@ -116,7 +116,6 @@
            RegisterModel<DungeonLiquidModel>();
            RegisterModel<FindPreciousModel>();
            RegisterModel<VipModel>();
            RegisterModel<BlastFurnaceModel>();
            RegisterModel<SignInModel>();
            RegisterModel<TitleModel>();
            RegisterModel<KingFairyModel>();
@@ -183,7 +182,6 @@
            RegisterModel<DogzModel>();
            RegisterModel<FairyGrabBossModel>();
            RegisterModel<GodBeastModel>();
            RegisterModel<PrayForDurgModel>();
            RegisterModel<FeatureNoticeModel>();
            RegisterModel<AwardExchangeModel>();
            RegisterModel<WheelOfFortuneModel>();
System/WindowJump/WindowJumpMgr.cs
@@ -502,7 +502,7 @@
            case JumpUIType.MakeDrug:
                if (ItemOperateUtility.Instance.useItemModel != null)
                {
                    RoleElixirTipWin.makeUseId = ItemOperateUtility.Instance.useItemModel.itemId;
                    //RoleElixirTipWin.makeUseId = ItemOperateUtility.Instance.useItemModel.itemId;
                }
                SetJumpLogic<AlchemyBaseWin>(_tagWinSearchModel.TABID);
                break;
@@ -540,7 +540,6 @@
                break;
            case JumpUIType.Alchemyrescripte104:
            case JumpUIType.Alchemyrescripte105:
                ModelCenter.Instance.GetModel<BlastFurnaceModel>().jumpToPrescripe = int.Parse(_tagWinSearchModel.SelectActive);
                SetJumpLogic<AlchemyBaseWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.AttackMagicianType1:
@@ -698,7 +697,6 @@
                SetJumpLogic<FirstRechargeWin>(_tagWinSearchModel.TABID, true);
                break;
            case JumpUIType.PrayforDrug:
                SetJumpLogic<PrayforDrugWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.JadeDynastyTower288:
                SetJumpLogic<TowerWin>(_tagWinSearchModel.TABID);
@@ -826,12 +824,7 @@
                }
                break;
            case JumpUIType.PrayforDrug:
                var prayModel = ModelCenter.Instance.GetModel<PrayForDurgModel>();
                if (!prayModel.CheckPrayDrugIsOpen())
                {
                    return false;
                }
                break;
                return false;
            case JumpUIType.FaBaoSoul_BenYuan:
            case JumpUIType.FaBaoSoul_FengMo:
            case JumpUIType.FaBaoSoul_Strength: