/// <summary> /// 设置数据 /// </summary> /// <param name="hp"></param> /// <param name="mp"></param> /// <param name="id"></param> /// <param name="name"></param> /// <param name="quality"></param> /// <param name="type"></param> /// <param name="description"></param> /// <param name="amount"></param> /// <param name="capacity"></param> /// <param name="buyprice"></param> /// <param name="sellprice"></param> /// <param name="assetId"></param> /// <param name="itemEffect"></param> public void SetData(int hp, int mp, int itemEffect, int id, string name, ItemQuality quality, ItemType type, string description, int amount, int capacity, int buyprice, int sellprice) { ItemConsumable dataTmp = new ItemConsumable();//正常里式替换原则,不可以子类转父类,但如果我们一开始分配的内存就是按父类来算的话,强转回子类也ok dataTmp.SetData(hp, mp, itemEffect, id, name, quality, type, description, amount, capacity, buyprice, sellprice); data = dataTmp; }
/// <summary> /// 解析消耗品 /// </summary> private void ParseConsumable() { var jsonData = SerializeTool.JsonDeserialize(Contract.Instance.consumableDataPath);//解析js数据 for (int i = 0; i < jsonData.Count; i++) { var consumableData = new ItemConsumable(); consumableData.SetData(jsonData[i]); allItems.Add(consumableData.id, consumableData);//向物品管理器中添加该数据 } }
/// <summary> /// 根据id创建item 一定要返回新创建的item 否则引用数据备份会出现bug /// </summary> /// <param name="id"></param> private BaseItemData GetItemDataById(int id) { if (allItems.Count != 0) { BaseItemData baseItemData; allItems.TryGetValue(id, out baseItemData); switch (baseItemData.type) { case ItemType.Consumable: ItemConsumable itemConsumable = (ItemConsumable)baseItemData; ItemConsumable resultItem = new ItemConsumable(); resultItem.SetData(itemConsumable.hp, itemConsumable.mp, itemConsumable.itemEffect, baseItemData.id, baseItemData.name, baseItemData.quality, baseItemData.type, baseItemData.description, baseItemData.amount, baseItemData.capacity, baseItemData.buyprice, baseItemData.sellprice); return(resultItem); case ItemType.Equipment: ItemEquipment itemEquipment = (ItemEquipment)baseItemData; ItemEquipment resultItem1 = new ItemEquipment(); resultItem1.SetData(itemEquipment.strength, itemEquipment.intellect, itemEquipment.agility, itemEquipment.stamina, itemEquipment.equipmentType, baseItemData.id, baseItemData.name, baseItemData.quality, baseItemData.type, baseItemData.description, baseItemData.amount, baseItemData.capacity, baseItemData.buyprice, baseItemData.sellprice); return(resultItem1); case ItemType.Material: ItemMaterial itemMaterial = (ItemMaterial)baseItemData; ItemMaterial resultItem2 = new ItemMaterial(); resultItem2.SetData(baseItemData.id, baseItemData.name, baseItemData.quality, baseItemData.type, baseItemData.description, baseItemData.amount, baseItemData.capacity, baseItemData.buyprice, baseItemData.sellprice); return(resultItem2); case ItemType.Weapon: ItemWeapon itemWeapon = (ItemWeapon)baseItemData; ItemWeapon resultItem3 = new ItemWeapon(); resultItem3.SetData(itemWeapon.damage, itemWeapon.weaponType, itemWeapon.weaponEffects, baseItemData.id, baseItemData.name, baseItemData.quality, baseItemData.type, baseItemData.description, baseItemData.amount, baseItemData.capacity, baseItemData.buyprice, baseItemData.sellprice); return(resultItem3); } } else { Debug.LogError("物品列表中没有物品"); } return(null); }