private NeedMaterial[] GetMaterialDB(int aim_lv) { int num = aim_lv - baseLv - 1; if (needMmaterialDB[num] == null) { int num2 = num; if (num > 0) { int num3 = num; while (num3 >= 0 && needMmaterialDB[num3] == null) { if (needMmaterialDB[num3] == null) { num2 = num3; } num3--; } } for (int i = num2; i <= num; i++) { int lv = baseLv + 1 + i; GrowEquipItemTable.GrowEquipItemNeedItemData growEquipItemNeedItemData = Singleton<GrowEquipItemTable>.I.GetGrowEquipItemNeedUniqueItemData(GetEquipData().tableData.needUniqueId, (uint)lv); if (growEquipItemNeedItemData == null) { growEquipItemNeedItemData = Singleton<GrowEquipItemTable>.I.GetGrowEquipItemNeedItemData(GetEquipData().tableData.needId, (uint)lv); } NeedMaterial[] needMaterial = growEquipItemNeedItemData.needMaterial; int needMoney = growEquipItemNeedItemData.needMoney; if (i > 0) { List<NeedMaterial> before_material = new List<NeedMaterial>(); Array.ForEach(needMmaterialDB[i - 1], delegate(NeedMaterial _mat) { before_material.Add(new NeedMaterial(_mat.itemID, _mat.num)); }); Array.ForEach(needMaterial, delegate(NeedMaterial _material) { NeedMaterial needMaterial2 = before_material.Find((NeedMaterial _data) => _data.itemID == _material.itemID); if (needMaterial2 != null) { needMaterial2.num += _material.num; } else { before_material.Add(new NeedMaterial(_material.itemID, _material.num)); } }); needMoney += needMoneyDB[i - 1]; needMmaterialDB[i] = before_material.ToArray(); needMoneyDB[i] = needMoney; } else { needMmaterialDB[i] = growEquipItemNeedItemData.needMaterial; needMoneyDB[i] = growEquipItemNeedItemData.needMoney; } } } return needMmaterialDB[num]; }
public ERR_SMITH_SEND CheckGrowEquipItem(EquipItemInfo item) { if (item.IsLevelMax()) { return(ERR_SMITH_SEND.ALREADY_LV_MAX); } GrowEquipItemTable.GrowEquipItemNeedItemData nextNeedTableData = item.nextNeedTableData; if (!MonoBehaviourSingleton <InventoryManager> .I.IsHaveingMaterial(nextNeedTableData.needMaterial)) { return(ERR_SMITH_SEND.NOT_ENOUGH_MATERIAL); } if (MonoBehaviourSingleton <UserInfoManager> .I.userStatus.money < nextNeedTableData.needMoney) { return(ERR_SMITH_SEND.NOT_ENOUGH_MONEY); } return(ERR_SMITH_SEND.NONE); }