少年修仙传客户端代码仓库
client_Wu Xijin
2018-10-22 ec36f7122391b3e5d46838e67f64a2d54714626e
System/BlastFurnace/BlastFurnaceModel.cs
@@ -7,6 +7,7 @@
using UnityEngine;
using LitJson;
[XLua.LuaCallCSharp]
public class BlastFurnaceModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
{
    public BlastFurnaceFuncTitle funcTitle = BlastFurnaceFuncTitle.MakeDan;
@@ -14,10 +15,8 @@
    public Action<AlchemySpecConfig> RefreshAddSpecMatEvent;
    private TreasureModel _model;
    public TreasureModel sTreasureModel
    {
        get
        {
    public TreasureModel sTreasureModel {
        get {
            return _model ?? (_model = ModelCenter.Instance.GetModel<TreasureModel>());
        }
    }
@@ -36,8 +35,7 @@
    public event Action blastFurnacePromoteUpdate;
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack
    {
    PlayerPackModel playerPack {
        get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
    }
    ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
@@ -68,7 +66,7 @@
        alchemyModellist = Config.Instance.GetAllValues<AlchemyConfig>();
        FuncConfigConfig alchemyRedPoint = Config.Instance.Get<FuncConfigConfig>("AlchemyRedPoint");
        int.TryParse(alchemyRedPoint.Numerical1,out makeDrugRedLv);
        int.TryParse(alchemyRedPoint.Numerical1, out makeDrugRedLv);
        SetDandrugRedPointlist();
        GlobalTimeEvent.Instance.secondEvent += SecondUpdate;
    }
@@ -101,7 +99,7 @@
    public void OnAfterPlayerDataInitialize()
    {
    }
    private void RefreshFuncOpenState(int funcId)
@@ -146,14 +144,14 @@
    }
    public bool isMakeDan { get; set; }
    public bool isFirstGet { get; private set;}
    public bool isFirstGet { get; private set; }
    private void SecondUpdate()
    {
        if (makerItemID == 0) return;
        if(isMakeDan)
        if (isMakeDan)
        {
            if(!WindowCenter.Instance.IsOpen<MakerDrugSuccessWin>())
            if (!WindowCenter.Instance.IsOpen<MakerDrugSuccessWin>())
            {
                WindowCenter.Instance.Open<MakerDrugSuccessWin>();
            }
@@ -192,10 +190,10 @@
        _stoveExp = (int)data.StoveExp;
        makerItemID = (int)data.ItemID;
        CheckMakerDandrugCondition();
        if(!isFirstGet)
        if (!isFirstGet)
        {
            isMakeDan = true;
            if(preStoveLv < data.StoveLV)
            if (preStoveLv < data.StoveLV)
            {
                preStoveLv = data.StoveLV;
                StoveIsUpGrade = true;
@@ -275,11 +273,11 @@
    /// <summary>
    /// 得到炼丹和铸炼的结果
    /// </summary>
    public event Action<MakeType,int> RefreshMakeItemAnswerAct;
    public event Action<MakeType, int> RefreshMakeItemAnswerAct;
    public void GetMakerResult(H0721_tagMakeItemAnswer answer)
    {
        DebugEx.Log("GetMakerResult" + answer.Result);
        switch((MakeType)answer.MakeType)
        switch ((MakeType)answer.MakeType)
        {
            case MakeType.Def_mitRefine:
                if (answer.Result == 1)
@@ -317,15 +315,15 @@
                }
                break;
        }
        if(RefreshMakeItemAnswerAct != null)
        if (RefreshMakeItemAnswerAct != null)
        {
            RefreshMakeItemAnswerAct((MakeType)answer.MakeType,answer.Result);
            RefreshMakeItemAnswerAct((MakeType)answer.MakeType, answer.Result);
        }
    }
    #region 丹药筛选
    public List<int> sortDruglist = new List<int>();
    public void SetSortDruglist(int lv,bool isAdd,int sumNum)
    public void SetSortDruglist(int lv, bool isAdd, int sumNum)
    {
        if (lv != 0)
        {
@@ -335,10 +333,10 @@
                {
                    sortDruglist.Add(lv);
                }
                if(sortDruglist.Count >= sumNum - 1)
                if (sortDruglist.Count >= sumNum - 1)
                {
                    if(!sortDruglist.Contains(0))
                    if (!sortDruglist.Contains(0))
                    {
                        sortDruglist.Add(0);
                    }
@@ -351,7 +349,7 @@
                    sortDruglist.Remove(lv);
                }
                if(sortDruglist.Contains(0))
                if (sortDruglist.Contains(0))
                {
                    sortDruglist.Remove(0);
                }
@@ -360,7 +358,7 @@
        else
        {
            sortDruglist.Clear();
            if(isAdd)
            if (isAdd)
            {
                sortDruglist.Add(lv);
            }
@@ -457,17 +455,17 @@
        {
            for (int i = 0; i < jsonData.Count; i++)
            {
                if(jsonData[i].IsArray)
                if (jsonData[i].IsArray)
                {
                    int itemId = int.Parse(jsonData[i][0].ToString());
                    if (jsonData[i].Count > 1)
                    {
                        int effectId = int.Parse(jsonData[i][1].ToString());
                        PreviewItemDict.Add(itemId,effectId);
                        PreviewItemDict.Add(itemId, effectId);
                    }
                    else
                    {
                        PreviewItemDict.Add(itemId,0);
                        PreviewItemDict.Add(itemId, 0);
                    }
                }
            }
@@ -478,7 +476,7 @@
    public int GetEffectIdByItemId(int itemId)
    {
        int effectId = 0;
        PreviewItemDict.TryGetValue(itemId,out effectId);
        PreviewItemDict.TryGetValue(itemId, out effectId);
        return effectId;
    }
@@ -794,7 +792,7 @@
    private void RefreshItemUsce(int id)
    {
        if(playerPack.CheckIsDrugById(id))
        if (playerPack.CheckIsDrugById(id))
        {
            CheckMakerDandrugCondition();
            CheckRecycleStoreRed();
@@ -818,22 +816,22 @@
            blastFurnacePromoteUpdate();
        }
    }
    public bool IsMakeDrugWin { get;set; }
    public void CheckMakeDrugRedPoint(bool isLogin = false,bool isClick = false)
    public bool IsMakeDrugWin { get; set; }
    public void CheckMakeDrugRedPoint(bool isLogin = false, bool isClick = false)
    {
        bool isCheckRed = false;
        if(!isClick)
        if (!isClick)
        {
            if(PlayerDatas.Instance.baseData.LV <= makeDrugRedLv)
            if (PlayerDatas.Instance.baseData.LV <= makeDrugRedLv)
            {
                isCheckRed = true;
            }
            else if(PlayerDatas.Instance.baseData.LV > makeDrugRedLv && !isLogin && !IsMakeDrugWin)
            else if (PlayerDatas.Instance.baseData.LV > makeDrugRedLv && !isLogin && !IsMakeDrugWin)
            {
                isCheckRed = true;
            }
            if(isCheckRed)
            if (isCheckRed)
            {
                List<AttrFruitConfig> list = playerPack.makeDruglist;
                if (list != null)
@@ -857,7 +855,7 @@
        }
        else
        {
            if(PlayerDatas.Instance.baseData.LV > makeDrugRedLv)
            if (PlayerDatas.Instance.baseData.LV > makeDrugRedLv)
            {
                MakeDrugRedpoint.state = RedPointState.None;
            }
@@ -923,7 +921,7 @@
        {
            if (StoveLV >= alchemyModellist[i].BlastFurnaceLV)
            {
                if(!CheckNormalAlchemyIsReachMaxUse(alchemyModellist[i]))
                if (!CheckNormalAlchemyIsReachMaxUse(alchemyModellist[i]))
                {
                    if (IsNormalMatEnough(alchemyModellist[i]) && !IsHaveReachFull(alchemyModellist[i]))
                    {
@@ -941,9 +939,9 @@
        if (alchemyConfig == null) return true;
        Dictionary<int, List<int>> specDrugDict = null;
        IsSpecMatEnough(alchemyConfig,out specDrugDict);
        IsSpecMatEnough(alchemyConfig, out specDrugDict);
        foreach(var key in specDrugDict.Keys)
        foreach (var key in specDrugDict.Keys)
        {
            List<int> idlist = specDrugDict[key];
            for (int i = 0; i < idlist.Count; i++)
@@ -955,7 +953,7 @@
                    if (!petmodel._DicPetBack.ContainsKey(petInfo.ID))
                    {
                        return false;
                    }
                    }
                }
                if (tipsModel.unlockMountDict.ContainsKey(idlist[i]))
@@ -992,7 +990,7 @@
        return isEnough;
    }
    public bool IsSpecMatEnough(AlchemyConfig alchemyConfig,out Dictionary<int,List<int>> specDurgDict)
    public bool IsSpecMatEnough(AlchemyConfig alchemyConfig, out Dictionary<int, List<int>> specDurgDict)
    {
        specDurgDict = new Dictionary<int, List<int>>();
        if (alchemyConfig == null) return false;
@@ -1008,7 +1006,7 @@
            {
                isEnough = true;
                List<int> specIdlist = GetPreviewSpecMakeDruglist(specConfig).Keys.ToList();
                specDurgDict.Add(specConfig.SpecialMaterialD,specIdlist);
                specDurgDict.Add(specConfig.SpecialMaterialD, specIdlist);
            }
        }
        return isEnough;
@@ -1035,12 +1033,12 @@
    {
        if (alchemyConfig == null) return false;
        List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
        for(int i = 0; i < previewlist.Count; i++)
        for (int i = 0; i < previewlist.Count; i++)
        {
            if(playerPack.CheckIsDrugById(previewlist[i]))
            if (playerPack.CheckIsDrugById(previewlist[i]))
            {
                AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(previewlist[i]);
                if(!playerPack.IsReachMaxUseDrug(fruitConfig))
                if (!playerPack.IsReachMaxUseDrug(fruitConfig))
                {
                    return false;
                }
@@ -1054,12 +1052,12 @@
        if (alchemyConfig == null) return false;
        List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
        for(int i = 0; i < previewlist.Count; i++)
        for (int i = 0; i < previewlist.Count; i++)
        {
            if(playerPack.CheckIsDrugById(previewlist[i]))
            if (playerPack.CheckIsDrugById(previewlist[i]))
            {
                AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(previewlist[i]);
                if(!playerPack.IsReachMaxUseDrug(fruitConfig))
                if (!playerPack.IsReachMaxUseDrug(fruitConfig))
                {
                    return false;
                }
@@ -1087,7 +1085,7 @@
    {
        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.BlastFurnace)) return;
        if(IsRecycleDanDrug())
        if (IsRecycleDanDrug())
        {
            recycleBtnRedpoint.state = RedPointState.Simple;
        }
@@ -1100,7 +1098,7 @@
    public bool IsRecycleDanDrug()
    {
        List<ItemModel> itemModels = GetRecycleDanlist();
        if(itemModels != null && itemModels.Count > 0)
        if (itemModels != null && itemModels.Count > 0)
        {
            return true;
        }
@@ -1125,7 +1123,7 @@
    public void PlayRecycleGuid()
    {
        if (IsRecycleDanDrug()
        if (IsRecycleDanDrug()
            && !NewBieCenter.Instance.completeGuidesBuf.Contains(93)
            && !StoveIsUpGrade)
        {
@@ -1140,38 +1138,38 @@
    /// 回收丹药
    /// </summary>
    /// <param name="itemId"></param>
    public void RecycleDrug(int itemId,int exp)
    public void RecycleDrug(int itemId, int exp)
    {
        ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemId);
        if (isOpenPrompting)
        {
            int recycleNum = playerPack.GetItemCountByID(PackType.rptItem,itemId);
            ConfirmCancel.IconConfirmCancel(Language.Get("Mail101"), Language.Get("BlastFurnace114",recycleNum ,UIHelper.GetTextColorByItemColor(itemConfig.ItemColor, itemConfig.ItemName),exp*recycleNum), itemConfig.ID,
             playerPack.GetItemCountByID(PackType.rptItem, itemConfig.ID), 0,"", Language.Get("ConfirmCancel102"), (bool isOk, bool isToggle) =>
             {
                 if (isOk)
                 {
                     int noBindNum = 0;
                     List<int> indexs = null;
                     List<int> nums = null;
                     if(CheckIsNoBindDrug(itemId,out noBindNum,out indexs,out nums))
                     {
                         ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),Language.Get("BlastFurnace115",noBindNum, UIHelper.GetTextColorByItemColor(itemConfig.ItemColor, itemConfig.ItemName)),
                             (bool isRecycle)=>
                             {
                                 if(isRecycle)
                                 {
                                     SendRecycleDrugQuest(indexs,nums);
                                 }
                             });
                     }
                     else
                     {
                         SendRecycleDrugQuest(indexs, nums);
                     }
                 }
                 isOpenPrompting = !isToggle;
             });
            int recycleNum = playerPack.GetItemCountByID(PackType.rptItem, itemId);
            ConfirmCancel.IconConfirmCancel(Language.Get("Mail101"), Language.Get("BlastFurnace114", recycleNum, UIHelper.GetTextColorByItemColor(itemConfig.ItemColor, itemConfig.ItemName), exp * recycleNum), itemConfig.ID,
             playerPack.GetItemCountByID(PackType.rptItem, itemConfig.ID), 0, "", Language.Get("ConfirmCancel102"), (bool isOk, bool isToggle) =>
              {
                  if (isOk)
                  {
                      int noBindNum = 0;
                      List<int> indexs = null;
                      List<int> nums = null;
                      if (CheckIsNoBindDrug(itemId, out noBindNum, out indexs, out nums))
                      {
                          ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BlastFurnace115", noBindNum, UIHelper.GetTextColorByItemColor(itemConfig.ItemColor, itemConfig.ItemName)),
                              (bool isRecycle) =>
                              {
                                  if (isRecycle)
                                  {
                                      SendRecycleDrugQuest(indexs, nums);
                                  }
                              });
                      }
                      else
                      {
                          SendRecycleDrugQuest(indexs, nums);
                      }
                  }
                  isOpenPrompting = !isToggle;
              });
        }
        else
        {
@@ -1197,17 +1195,17 @@
    }
    private bool CheckIsNoBindDrug(int itemId,out int nobindNums,out List<int> indexs,out List<int> nums)
    private bool CheckIsNoBindDrug(int itemId, out int nobindNums, out List<int> indexs, out List<int> nums)
    {
        indexs = new List<int>();
        nums = new List<int>();
        nobindNums = 0;
       SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
       if (singlePack == null) return false;
        SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
        if (singlePack == null) return false;
        List<ItemModel> items;
        singlePack.GetItemCountByID(itemId,out items);
        for(int i = 0; i < items.Count; i++)
        singlePack.GetItemCountByID(itemId, out items);
        for (int i = 0; i < items.Count; i++)
        {
            indexs.Add(items[i].itemInfo.ItemPlace);
            nums.Add(items[i].itemInfo.ItemCount);
@@ -1216,7 +1214,7 @@
                nobindNums += items[i].itemInfo.ItemCount;
            }
        }
        if(nobindNums > 0)
        if (nobindNums > 0)
        {
            return true;
        }
@@ -1252,7 +1250,7 @@
    }
    Dictionary<string, List<ItemModel>> lookRecycleDict = new Dictionary<string, List<ItemModel>>();
    public Dictionary<string,List<ItemModel>> GetLookRecycleDanlist()
    public Dictionary<string, List<ItemModel>> GetLookRecycleDanlist()
    {
        lookRecycleDict.Clear();
        recycleStrlist.Clear();
@@ -1261,15 +1259,15 @@
        itemModels.Sort(CompareByDanBindAndLv);
        for(int i = 0; i < itemModels.Count; i++)
        for (int i = 0; i < itemModels.Count; i++)
        {
            string key = StringUtility.Contact(itemModels[i].itemId,"IsBind",itemModels[i].itemInfo.IsBind);
            if(!lookRecycleDict.ContainsKey(key))
            string key = StringUtility.Contact(itemModels[i].itemId, "IsBind", itemModels[i].itemInfo.IsBind);
            if (!lookRecycleDict.ContainsKey(key))
            {
                List<ItemModel> modellist = new List<ItemModel>();
                modellist.Add(itemModels[i]);
                lookRecycleDict.Add(key,modellist);
                if(itemModels[i].itemInfo.IsBind == 1)
                lookRecycleDict.Add(key, modellist);
                if (itemModels[i].itemInfo.IsBind == 1)
                {
                    AddSelectRecycleDan(itemModels[i]);
                }
@@ -1283,7 +1281,7 @@
        return lookRecycleDict;
    }
    private int CompareByDanBindAndLv(ItemModel start,ItemModel end)
    private int CompareByDanBindAndLv(ItemModel start, ItemModel end)
    {
        bool isBindStart = start.itemInfo.IsBind == 1 ? true : false;
        bool isBindEnd = end.itemInfo.IsBind == 1 ? true : false;
@@ -1302,12 +1300,12 @@
    public void AddSelectRecycleDan(ItemModel itemModel)
    {
        string key = StringUtility.Contact(itemModel.itemId, "IsBind", itemModel.itemInfo.IsBind);
        if(!recycleStrlist.Contains(key))
        if (!recycleStrlist.Contains(key))
        {
            recycleStrlist.Add(key);
        }
        if(RefreshSelectRecycleAct != null)
        if (RefreshSelectRecycleAct != null)
        {
            RefreshSelectRecycleAct();
        }
@@ -1330,12 +1328,12 @@
    public int GetRecycleMoney()
    {
        int money = 0;
        foreach(var key in lookRecycleDict.Keys)
        foreach (var key in lookRecycleDict.Keys)
        {
            if(recycleStrlist.Contains(key))
            if (recycleStrlist.Contains(key))
            {
                List<ItemModel> itemModels = lookRecycleDict[key];
                for(int i = 0; i < itemModels.Count; i++)
                for (int i = 0; i < itemModels.Count; i++)
                {
                    AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(itemModels[i].itemId);
                    money = money + fruitConfig.RecycleExp * itemModels[i].itemInfo.ItemCount;
@@ -1347,7 +1345,7 @@
    public void SetSelectRecycleDan()
    {
        if(recycleStrlist.Count < 1)
        if (recycleStrlist.Count < 1)
        {
            SysNotifyMgr.Instance.ShowTip("AlchemyRecycling");
            return;
@@ -1360,26 +1358,26 @@
        for (int i = 0; i < recycleStrlist.Count; i++)
        {
            List<ItemModel> modellist = null;
            lookRecycleDict.TryGetValue(recycleStrlist[i],out modellist);
            if(modellist != null)
            lookRecycleDict.TryGetValue(recycleStrlist[i], out modellist);
            if (modellist != null)
            {
                for(int j = 0; j < modellist.Count; j++)
                for (int j = 0; j < modellist.Count; j++)
                {
                    sumCnt += modellist[j].itemInfo.ItemCount;
                    if(modellist[j].itemInfo.IsBind == 0)
                    if (modellist[j].itemInfo.IsBind == 0)
                    {
                        unBindCnt += modellist[j].itemInfo.ItemCount;
                    }
                    if(playerPack.CheckIsDrugById(modellist[j].itemId))
                    if (playerPack.CheckIsDrugById(modellist[j].itemId))
                    {
                        AttrFruitConfig fruitConfig = Config.Instance.Get<AttrFruitConfig>(modellist[j].itemId);
                        getMoney = getMoney + fruitConfig.RecycleExp * modellist[j].itemInfo.ItemCount;
                    }
                    if(!recycleDanDict.ContainsKey(modellist[j].itemInfo.ItemPlace))
                    if (!recycleDanDict.ContainsKey(modellist[j].itemInfo.ItemPlace))
                    {
                        recycleDanDict.Add(modellist[j].itemInfo.ItemPlace,modellist[j].itemInfo.ItemCount);
                        recycleDanDict.Add(modellist[j].itemInfo.ItemPlace, modellist[j].itemInfo.ItemCount);
                    }
                    else
                    {
@@ -1437,7 +1435,7 @@
    }
    public void SendRecycleDrugQuest(List<int> indexs,List<int> nums)
    public void SendRecycleDrugQuest(List<int> indexs, List<int> nums)
    {
        CA32A_tagCMRecycleAttrFruit recycleAttrFruit = new CA32A_tagCMRecycleAttrFruit();
        recycleAttrFruit.IndexCount = (byte)indexs.Count;