| Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA317_tagCMAddFruitUseLimit.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA317_tagCMAddFruitUseLimit.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Alchemy/AlchemyDrugLimitWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Alchemy/AlchemyDrugLimitWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Alchemy/AlchemyModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Alchemy/AlchemyUseDrugCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/KnapSack/Logic/ItemOperateUtility.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA317_tagCMAddFruitUseLimit.cs
New file @@ -0,0 +1,18 @@ using UnityEngine; using System.Collections; // A3 17 增加果实使用上限 #tagCMAddFruitUseLimit public class CA317_tagCMAddFruitUseLimit : GameNetPackBasic { public uint ItemID; //果实物品ID public CA317_tagCMAddFruitUseLimit () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA317; } public override void WriteToBytes () { WriteBytes (ItemID, NetDataType.DWORD); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA317_tagCMAddFruitUseLimit.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: a52b2bce188fd5e4b85891457a7fc658 timeCreated: 1555661879 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Alchemy/AlchemyDrugLimitWin.cs
New file @@ -0,0 +1,138 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, April 19, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class AlchemyDrugLimitWin : Window { [SerializeField] Transform m_ContainerRealm; [SerializeField] Transform m_ContainerItem; [SerializeField] Text m_Now; [SerializeField] Text m_Next; [SerializeField] ItemBehaviour m_Item; [SerializeField] Button m_Use; [SerializeField] Button m_Goto; [SerializeField] Button m_Close; public static int drugId = 0; AlchemyModel model { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Use.AddListener(OnUse); m_Goto.AddListener(Goto); m_Close.AddListener(CloseClick); } protected override void OnPreOpen() { Dispaly(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion void Dispaly() { AlchemyDrugUseLimit drugUseLimit; if (model.TryGetAlchemyUseLimit(drugId, out drugUseLimit)) { m_ContainerRealm.gameObject.SetActive(drugUseLimit.addItem.id == 0); m_ContainerItem.gameObject.SetActive(drugUseLimit.addItem.id != 0); if (drugUseLimit.addItem.id != 0) { DisplayItem(); } else { DisplayRealm(); } } } void DisplayItem() { AlchemyDrugUseLimit drugUseLimit; if (model.TryGetAlchemyUseLimit(drugId, out drugUseLimit)) { var itemConfig = ItemConfig.Get(drugUseLimit.addItem.id); m_Now.text = string.Format("当前只能服用{0}颗五品攻击丹,可服用{1}突破上限", drugUseLimit.GetUseLimit(), itemConfig.ItemName); m_Next.text = string.Format("服用{0}个{1}上限增加{2}", drugUseLimit.addItem.count, itemConfig.ItemName, drugUseLimit.addLimitPerTimes); m_Item.SetItem(drugUseLimit.addItem.id, drugUseLimit.addItem.count); } } void DisplayRealm() { AlchemyDrugUseLimit drugUseLimit; if (model.TryGetAlchemyUseLimit(drugId, out drugUseLimit)) { m_Now.text = string.Format("当前只能服用{0}颗五品攻击丹,可提升境界突破上限", drugUseLimit.GetUseLimit()); var realmLevel = drugUseLimit.GetNextUpgradeRealm(); var realmConfig = RealmConfig.Get(realmLevel); var upgrade = drugUseLimit.GetRealmLimit(realmLevel) - drugUseLimit.GetRealmLimit(PlayerDatas.Instance.baseData.realmLevel); m_Next.text = string.Format("提升至<Img img={0}/>上限增加{0}", realmConfig.Img, upgrade); } } private void Goto() { CloseImmediately(); WindowJumpMgr.Instance.ClearJumpData(); WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RealmFunc1); } private void OnUse() { AlchemyDrugUseLimit drugUseLimit; if (model.TryGetAlchemyUseLimit(drugId, out drugUseLimit)) { var count = ModelCenter.Instance.GetModel<PackModel>().GetItemCountByID(PackType.Item, drugUseLimit.addItem.id); if (count < drugUseLimit.addItem.count) { ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(drugUseLimit.addItem.id); return; } } var pak = new CA317_tagCMAddFruitUseLimit(); pak.ItemID = (uint)drugId; GameNetSystem.Instance.SendInfo(pak); CloseImmediately(); } } } System/Alchemy/AlchemyDrugLimitWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ac9a64dc97d501b40b46b1649485dd65 timeCreated: 1555658532 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Alchemy/AlchemyModel.cs
@@ -272,6 +272,16 @@ return int.MaxValue; } public int GetAlchemyDrugUseLimit(int id) { AlchemyDrugUseLimit drugUseLimit; if (TryGetAlchemyUseLimit(id, out drugUseLimit)) { return drugUseLimit.GetUseLimit(); } return 0; } public bool IsGraspRecipe(int alchemyId) { return m_AlchemyTimes.ContainsKey(alchemyId); @@ -406,7 +416,7 @@ { realmLimits.Add(realmLimit.x, realmLimit.y); } if (string.IsNullOrEmpty(config.AddItemMaxCnt)) if (!string.IsNullOrEmpty(config.AddItemMaxCnt)) { var array = LitJson.JsonMapper.ToObject<int[]>(config.AddItemMaxCnt); addItem = new Item() @@ -421,7 +431,7 @@ public void SetTimes(int eatTimes, int addTimes) { this.eatTimes = eatTimes; this.addTimes = addTimes; this.addTimes = addTimes / (addItem.count <= 0 ? 1 : addItem.count); } public int GetUseLimit() @@ -435,10 +445,26 @@ times = realmLimits[level]; } } times += addTimes * addLimitPerTimes; if (addItem.id != 0) { times += addTimes * addLimitPerTimes; } return times; } public int GetRealmLimit(int realmLevel) { var limit = 0; foreach (var level in realmLimits.Keys) { if (realmLevel >= level) { limit = realmLimits[level]; } } return limit; } public bool IsReachLimit() { var limit = GetUseLimit(); System/Alchemy/AlchemyUseDrugCell.cs
@@ -96,6 +96,8 @@ } break; case 1: AlchemyDrugLimitWin.drugId = itemId; WindowCenter.Instance.Open<AlchemyDrugLimitWin>(); break; } } System/KnapSack/Logic/ItemOperateUtility.cs
@@ -18,6 +18,7 @@ BoxGetItemModel BoxModel { get { return ModelCenter.Instance.GetModel<BoxGetItemModel>(); } } DogzModel dogzModel { get { return ModelCenter.Instance.GetModel<DogzModel>(); } } EquipGemModel equipGemModel { get { return ModelCenter.Instance.GetModel<EquipGemModel>(); } } AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } } #region 装备 @@ -614,10 +615,22 @@ var usedCountTotal = packModel.GetItemTotalUsedTimes(item.itemId); var fruitConfig = AttrFruitConfig.Get(item.itemId); if (fruitConfig != null && (usedCountTotal >= fruitConfig.basicUseLimit || useCnt > fruitConfig.basicUseLimit)) { error = 1; return false; if (fruitConfig != null) { var limitTimes = 0; if (fruitConfig.FuncID == 2) { limitTimes = alchemyModel.GetAlchemyDrugUseLimit(item.itemId); } else { limitTimes = fruitConfig.basicUseLimit; } if (usedCountTotal >= limitTimes || useCnt > limitTimes) { error = 1; return false; } } error = 0;