private void InitAllItemNameToItemInfo() { for (int i = 0; i < tempItemModels.Count; i++) { TempItemModel temp = tempItemModels [i]; int itemCountForProduce = temp.itemNamesForProduce.Count; temp.itemModel.itemInfosForProduce = new ItemModel.ItemInfoForProduce[itemCountForProduce]; for (int j = 0; j < itemCountForProduce; j++) { string itemName = temp.itemNamesForProduce [j]; TempItemModel itemForProduce = tempItemModels.Find(delegate(TempItemModel obj) { return(obj.itemModel.itemName == itemName); }); if (itemForProduce == null) { Debug.LogError(string.Format("{0}配方中的{1}名称不正确", temp.itemModel.itemName, itemName)); } ItemModel.ItemInfoForProduce itemInfo = new ItemModel.ItemInfoForProduce(itemForProduce.itemModel.itemId, temp.itemCountsForProduce[j]); temp.itemModel.itemInfosForProduce [j] = itemInfo; } } }
public void LoadAllItemsWithFullDataString(string fullItemDataString) { string[] seperateItemDataArray = fullItemDataString.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 2; i < seperateItemDataArray.Length; i++) { string itemDataString = seperateItemDataArray [i].Replace("\r", ""); string[] itemDataArray = itemDataString.Split(new char[] { ',' }, StringSplitOptions.None); int dataLength = itemDataArray.Length; TempItemModel tempItemModel = new TempItemModel(); tempItemModels.Add(tempItemModel); ItemModel im = tempItemModel.itemModel; im.itemId = FromStringToInt16(itemDataArray [0]); im.itemName = itemDataArray [1]; im.itemType = GetItemTypeWithString(itemDataArray [2]); im.itemNameInEnglish = itemDataArray [3]; string oriDescription = itemDataArray [4]; im.itemGeneralDescription = oriDescription.Replace("&", ","); im.spriteName = itemDataArray [5]; im.healthGain = FromStringToSingle(itemDataArray [6]); im.manaGain = FromStringToSingle(itemDataArray [7]); im.attackGain = FromStringToSingle(itemDataArray [8]); im.hitGain = FromStringToSingle(itemDataArray [9]); im.armorGain = FromStringToSingle(itemDataArray [10]); im.magicResistGain = FromStringToSingle(itemDataArray [11]); im.dodgeGain = FromStringToSingle(itemDataArray [12]); im.critGain = FromStringToSingle(itemDataArray [13]); im.wholePropertyGain = FromStringToSingle(itemDataArray [14]); im.physicalHurtScalerGain = FromStringToSingle(itemDataArray [15]); im.magicalHurtScalerGain = FromStringToSingle(itemDataArray [16]); im.critHurtScalerGain = FromStringToSingle(itemDataArray [17]); int attachedSkillColCount = dataLength - 26; if (attachedSkillColCount % 13 != 0) { string error = string.Format("数据长度不正确,总数据长度{0},装备属性数据长度{1},附加技能数据长度{2},配方数据长度{3},物品价格数据长度1,物品属性描述长度1", dataLength, 18, attachedSkillColCount, 6); Debug.LogError(error); return; } int attachedSkillCount = attachedSkillColCount / 13; List <SkillInfo> attachedSkillInfos = new List <SkillInfo> (); im.attachedSkillInfos = new SkillInfo[attachedSkillCount]; for (int j = 0; j < attachedSkillCount; j++) { SkillInfo attachedSkillInfo = new SkillInfo(); int offset = j * 13; // string itemSkillType = itemDataArray [17 + offset]; if (itemDataArray [18 + offset] == "") { continue; } attachedSkillInfo.skillType = GetSkillTypeWithString(itemDataArray [18 + offset]); attachedSkillInfo.hurtType = GetHurtTypeWithString(itemDataArray [19 + offset]); attachedSkillInfo.triggerSource = GetTargetWithString(itemDataArray [20 + offset]); attachedSkillInfo.triggeredCondition = GetTriggeredConditionWithString(itemDataArray [21 + offset]); attachedSkillInfo.triggerTarget = GetTargetWithString(itemDataArray [22 + offset]); attachedSkillInfo.selfEffectAnimName = itemDataArray [23 + offset]; attachedSkillInfo.enemyEffectAnimName = itemDataArray [24 + offset]; attachedSkillInfo.statusName = itemDataArray [25 + offset]; attachedSkillInfo.triggeredProbability = FromStringToSingle(itemDataArray [26 + offset]); attachedSkillInfo.canOverlay = FromStringToBool(itemDataArray [27 + offset]); attachedSkillInfo.skillSourceValue = FromStringToSingle(itemDataArray [28 + offset]); attachedSkillInfo.excuteOnce = FromStringToBool(itemDataArray [29 + offset]); attachedSkillInfo.duration = FromStringToSingle(itemDataArray [30 + offset]); attachedSkillInfos.Add(attachedSkillInfo); } // im.attachedSkillInfos = new SkillInfo[attachedSkillInfos.Count]; im.attachedSkillInfos = attachedSkillInfos.ToArray(); // List<int> itemIdsForProduce = new List<int> (); for (int j = 6; j > 0; j--) { int columnIndex = dataLength - 2 - j; if (j % 2 == 0) { string itemName = itemDataArray [columnIndex]; if (itemName != "" && itemName != null) { tempItemModel.itemNamesForProduce.Add(itemName); } } else { int itemCount = FromStringToInt16(itemDataArray [columnIndex]); tempItemModel.itemCountsForProduce.Add(itemCount); } } im.price = FromStringToInt16(itemDataArray [dataLength - 2]); im.itemPropertyDescription = itemDataArray [dataLength - 1]; im.itemPropertyDescription = im.itemPropertyDescription.Replace("_", "\n").Replace("&", ","); } InitAllItemNameToItemInfo(); for (int i = 0; i < tempItemModels.Count; i++) { newItemModels.Add(tempItemModels[i].itemModel); } }