Say I have a serialized item class. how would i go about augmenting an item? can it be done without changing all items called?
what i’m getting at is, how do I create an instance of an item that I can modify from the ItemDatabase?
or am I doing it wrong?
honest criticism encouraged.
here is the item class:
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Item {
public string itemName;
public int itemID;
public string itemDesc;
public Texture2D itemIcon;
public int itemPower;
public int itemSpeed;
public ItemType itemType;
public Element itemElement;
public int itemElementProc;
public Sharpness itemSharpness;
public bool itemCanBeMade;
public int idOfFirstMat;
public int idOfSecondMat;
public bool isArmor;
public int itemEffect1;
public int itemEffect2;
public Rarity itemRarity;
public bool itemIsStackable;
public int maxStackCount;
public int warChestMax;
public enum ItemType{
HeavyWeapon,
MediumWeapon,
LightWeapon,
Consumable,
Helmet,
Shoulders,
Chest,
Belt,
Gloves,
Pantaloons,
Shoes,
Ring,
Food,
Vegetable,
Energy,
QuestItem,
Ingredient,
Jewel
}
public enum Rarity{
Common,
Uncommon,
Rare,
Rarer,
SaughtAfter,
Legend
}
public enum Element{
None,
Cold,
Fiery,
Corrosive,
Accurate,
Explosive,
Lightning
}
public enum Sharpness{
None,
Dull,
Sharp,
Blunt
}
public Item(string name, int id, string desc, int power, int speed, ItemType type, Element element, int proc, Sharpness sharpness, bool canBeMade, int firstMat, int secondMat, bool armor, int effect1, int effect2, Rarity rarity, bool stackable, int maxStack, int warChestMaxStack){
itemName = name;
itemID = id;
itemDesc = desc;
itemIcon = Resources.Load<Texture2D>("Item Icons/" + name);
itemPower = power;
itemSpeed = speed;
itemType = type;
itemElement = element;
itemElementProc = proc;
itemSharpness = sharpness;
itemCanBeMade = canBeMade;
idOfFirstMat = firstMat;
idOfSecondMat = secondMat;
isArmor = armor;
itemEffect1 = effect1;
itemEffect2 = effect2;
itemRarity = rarity;
itemIsStackable = stackable;
maxStackCount = maxStack;
warChestMax = warChestMaxStack;
}
public Item(){
itemID = -1;
}
}
And here is the item database:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ItemDatabase : MonoBehaviour {
public List<Item> items = new List<Item>();
void Start(){
items.Add (new Item("Green Potion", 1, "Heals Lex for 50 HP.", 0, 0, Item.ItemType.Consumable,Item.Element.None, 0,Item.Sharpness.None, true, 5, 16, false, 50, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Meat",2,"A trading Resource.",0,0,Item.ItemType.Food,Item.Element.None, 0,Item.Sharpness.None, false, 0, 0, false, 0, 0, Item.Rarity.Rare, true, 20, 999));
items.Add (new Item("Plastic Shank",3,"Quick stabbing weapon.",0,0,Item.ItemType.LightWeapon,Item.Element.None, 0,Item.Sharpness.Sharp, false,0,0, true, 0, 0, Item.Rarity.Common, false, 1, 1));
items.Add (new Item("Nunchaku",4,"A fast blunt weapon.",0,0,Item.ItemType.MediumWeapon,Item.Element.None, 0,Item.Sharpness.Blunt, false,0,0, true, 0, 0, Item.Rarity.Uncommon, false, 1, 1));
items.Add (new Item("Blackberry",5,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Blueberry",6,"Material for potion, it looks sad.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false, 0,0,false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Boysenberry",7,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Currant Berry",8,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Rarer, true, 10, 200));
items.Add (new Item("Elderberry",9,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Salmonberry",10,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Sea-Buckthorn Berry",11,"Material for potions.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None,false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Dave, the great and powerful",12,"Bestows deminion over the dead, and is a great apple slicer!",0,0,Item.ItemType.HeavyWeapon,Item.Element.None, 0,Item.Sharpness.None,false,0,0, true, 0, 0, Item.Rarity.Legend, false, 1, 1));
items.Add (new Item("Natural Diamond",13, "Used as a material for item upgrades", 0, 0, Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None,false,0,0, false, 0, 0, Item.Rarity.SaughtAfter, true, 10, 200));
items.Add (new Item("European Cut Diamond", 14, "Increases Intellect by 4", 0, 0, Item.ItemType.Jewel,Item.Element.None, 0,Item.Sharpness.None, true,13,17, true, 8, 0, Item.Rarity.Rare, true, 10, 200));
items.Add (new Item("Point Cut Diamond", 15, "Intellect +4\nEnergy regeneration +4", 0, 0, Item.ItemType.Jewel,Item.Element.None, 0,Item.Sharpness.None, true,13,17, false, 4, 4, Item.Rarity.Rare, true, 10, 200));
items.Add (new Item("Tea",16,"Delicious tea? or deadly poison..",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false,0,0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Iron Ore",17,"Rock with iron bits in it.",0,0,Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false, 0,0, false, 0, 0, Item.Rarity.Uncommon, true, 10, 200));
items.Add (new Item("Venom", 19, "Slightly increase attack power for one mission", 0, 0, Item.ItemType.Consumable,Item.Element.None, 0,Item.Sharpness.None, true, 6, 8, false, 5, 0, Item.Rarity.Rarer, true, 10, 200));
items.Add (new Item("Stone soup", 20, "Slightly increase attack power for one mission", 0, 0, Item.ItemType.Consumable,Item.Element.None, 0,Item.Sharpness.None, true, 5, 8, false, 5, 0, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Hot soup", 21, "Fire negate", 0, 0, Item.ItemType.Consumable,Item.Element.None, 0,Item.Sharpness.None, true, 11, 16, false, 5, 23, Item.Rarity.Common, true, 10, 200));
items.Add (new Item("Freezy", 22, "Fire protection for short period", 0, 0, Item.ItemType.Consumable,Item.Element.None, 0,Item.Sharpness.None, true, 10, 23, false, 5, 0, Item.Rarity.Rare, true, 10, 200));
items.Add (new Item("Ginseng", 23, "Herb", 0, 0, Item.ItemType.Ingredient,Item.Element.None, 0,Item.Sharpness.None, false, 0, 0, false, 0, 0, Item.Rarity.Common, true, 10, 200));
}
public Item GetItem(string name, int id){
for (int i=0; i < items.Count; i++) {
if(items[i].itemName == name){
return items[i];
}
if(items[i].itemID == id){
return items[i];
}
}
return null;
}
}
-Lamont