/// <summary> /// 构造函数 /// </summary> /// <param name="itemModel">Item model.</param> public Consumables(ConsumablesModel consumablesModel, int itemCount) { // 初始化物品基础属性 InitBaseProperties(consumablesModel); this.itemType = ItemType.Consumables; this.itemCount = itemCount; this.healthGain = consumablesModel.healthGain; this.manaGain = consumablesModel.manaGain; this.experienceGain = consumablesModel.experienceGain; this.maxHealthGain = consumablesModel.maxHealthGain; this.maxManaGain = consumablesModel.maxManaGain; this.attackGain = consumablesModel.attackGain; this.magicAttackGain = consumablesModel.magicAttackGain; this.armorGain = consumablesModel.armorGain; this.magicResistGain = consumablesModel.magicResistGain; this.armorDecreaseGain = consumablesModel.armorDecreaseGain; this.magicResistDecreaseGain = consumablesModel.magicResistDecreaseGain; this.moveSpeedGain = consumablesModel.moveSpeedGain; this.critGain = consumablesModel.critGain; this.dodgeGain = consumablesModel.dodgeGain; this.critHurtScalerGain = consumablesModel.critHurtScalerGain; this.physicalHurtScalerGain = consumablesModel.physicalHurtScalerGain; this.magicalHurtScalerGain = consumablesModel.magicalHurtScalerGain; this.extraGoldGain = consumablesModel.extraGoldGain; this.extraExperienceGain = consumablesModel.extraExperienceGain; this.healthRecoveryGain = consumablesModel.healthRecoveryGain; this.magicRecoveryGain = consumablesModel.magicRecoveryGain; this.consumablesGrade = consumablesModel.consumablesGrade; this.isShowInBagOnly = consumablesModel.isShowInBagOnly; this.audioName = consumablesModel.audioName; }
public void LoadAllItemsWithFullDataString(string fullItemDataString) { string[] seperateItemDataArray = fullItemDataString.Split(new string[] { "\n" }, StringSplitOptions.None); for (int i = 2; i < seperateItemDataArray.Length; i++) { string consumablesDataString = seperateItemDataArray[i].Replace("\r", ""); string[] consumablesDataArray = consumablesDataString.Split(new char[] { ',' }, StringSplitOptions.None); int dataLength = consumablesDataArray.Length; ConsumablesModel consumablesModel = new ConsumablesModel(); consumablesModels.Add(consumablesModel); consumablesModel.itemId = FromStringToInt16(consumablesDataArray[0]); consumablesModel.itemName = consumablesDataArray[1]; consumablesModel.spriteName = consumablesDataArray[3]; consumablesModel.itemDescription = consumablesDataArray[4].Replace('+', ','); consumablesModel.price = FromStringToInt32(consumablesDataArray[5]); consumablesModel.isShowInBagOnly = FromStringToBool(consumablesDataArray[6]); consumablesModel.audioName = consumablesDataArray[7]; //最大生命 最大魔法 物理攻击 魔法攻击 护甲 魔抗 护甲穿透 魔抗穿透 移速 暴击 闪避 暴击倍率 物理伤害系数 魔法伤害系数 额外金钱 额外经验 生命回复 魔法回复 consumablesModel.healthGain = FromStringToInt16(consumablesDataArray[8]); consumablesModel.manaGain = FromStringToInt16(consumablesDataArray[9]); consumablesModel.experienceGain = FromStringToInt16(consumablesDataArray[10]); consumablesModel.maxHealthGain = FromStringToInt16(consumablesDataArray[11]); consumablesModel.maxManaGain = FromStringToInt16(consumablesDataArray[12]); consumablesModel.attackGain = FromStringToInt16(consumablesDataArray[13]); consumablesModel.magicAttackGain = FromStringToInt16(consumablesDataArray[14]); consumablesModel.armorGain = FromStringToInt16(consumablesDataArray[15]); consumablesModel.magicResistGain = FromStringToInt16(consumablesDataArray[16]); consumablesModel.armorDecreaseGain = FromStringToInt16(consumablesDataArray[17]); consumablesModel.magicResistDecreaseGain = FromStringToInt16(consumablesDataArray[18]); consumablesModel.moveSpeedGain = FromStringToInt16(consumablesDataArray[19]); consumablesModel.critGain = FromStringToInt16(consumablesDataArray[20]); consumablesModel.dodgeGain = FromStringToInt16(consumablesDataArray[21]); consumablesModel.critHurtScalerGain = FromStringToInt16(consumablesDataArray[22]); consumablesModel.physicalHurtScalerGain = FromStringToInt16(consumablesDataArray[23]); consumablesModel.magicalHurtScalerGain = FromStringToInt16(consumablesDataArray[24]); consumablesModel.extraGoldGain = FromStringToInt16(consumablesDataArray[25]); consumablesModel.extraExperienceGain = FromStringToInt16(consumablesDataArray[26]); consumablesModel.healthRecoveryGain = FromStringToInt16(consumablesDataArray[27]); consumablesModel.magicRecoveryGain = FromStringToInt16(consumablesDataArray[28]); consumablesModel.consumablesGrade = FromStringToInt16(consumablesDataArray[29]); } }
/// <summary> /// 通过物品id和数量初始化物品 /// 【0-299】装备 /// 【300-399】消耗品 /// 【400-499】属性宝石 /// 【500-599】技能卷轴 /// 【600-699】特殊物品 /// </summary> public static Item NewItemWith(int itemId, int itemCount) { Item newItem = null; // 逻辑上相同:寻找数据模型->使用数据模型创建新物品 if (itemId < 300) { EquipmentModel equipmentModel = GameManager.Instance.gameDataCenter.allEquipmentModels.Find(delegate(EquipmentModel obj) { return(obj.itemId == itemId); }); if (equipmentModel == null) { string error = string.Format("未找到id为{0}的物品", itemId); Debug.LogError(error); } newItem = new Equipment(equipmentModel, itemCount); } else if (itemId >= 300 && itemId < 400) { ConsumablesModel cm = GameManager.Instance.gameDataCenter.allConsumablesModels.Find(delegate(ConsumablesModel obj) { return(obj.itemId == itemId); }); if (cm == null) { string error = string.Format("未找到id为{0}的物品", itemId); Debug.LogError(error); } newItem = new Consumables(cm, itemCount); } else if (itemId >= 400 && itemId < 500) { PropertyGemstoneModel propertyGemstoneModel = GameManager.Instance.gameDataCenter.allPropertyGemstoneModels.Find(delegate(PropertyGemstoneModel obj) { return(obj.itemId == itemId); }); if (propertyGemstoneModel == null) { string error = string.Format("未找到id为{0}的物品", itemId); Debug.LogError(error); } newItem = new PropertyGemstone(propertyGemstoneModel, itemCount); } else if (itemId >= 500 && itemId < 600) { SkillScrollModel skillScrollModel = GameManager.Instance.gameDataCenter.allSkillScrollModels.Find(delegate(SkillScrollModel obj) { return(obj.itemId == itemId); }); if (skillScrollModel == null) { string error = string.Format("未找到id为{0}的物品", itemId); Debug.LogError(error); } newItem = new SkillScroll(skillScrollModel, itemCount); } else if (itemId >= 600 && itemId < 700) { SpecialItemModel specialItemModel = GameManager.Instance.gameDataCenter.allSpecialItemModels.Find(delegate(SpecialItemModel obj) { return(obj.itemId == itemId); }); if (specialItemModel == null) { string error = string.Format("未找到id为{0}的物品", itemId); Debug.LogError(error); } newItem = new SpecialItem(specialItemModel, itemCount); } return(newItem); }