/// <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]);
            }
        }
Example #3
0
        /// <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);
        }