// Generates an Item // Pass in item taken from Open(); public static ItemScriptableObject Generate(ItemScriptableObject iso) { GenerateSprite generateSprite = new GenerateSprite(); RandomManager randomManager = new RandomManager(); StatFactory statFactory = new ConcreteStatFactory(); ItemScriptableObject itemScriptableObject = ScriptableObject.CreateInstance <ItemScriptableObject>(); randomManager.SetAnimationCurve(); itemScriptableObject.itemSprite = iso.itemSprite; itemScriptableObject.itemName = iso.itemName; itemScriptableObject.itemType = iso.itemType; itemScriptableObject.itemTypeName = iso.itemType.ToString().ToLower(); itemScriptableObject.rarity = (ItemObject.Rarity)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability)); itemScriptableObject.keyword = (ItemObject.Keywords)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability)); itemScriptableObject.statCount = statFactory.GenerateStatAmountForObject(itemScriptableObject.rarity); itemScriptableObject.modifierList = new List <Stat>(); for (int i = 0; i < itemScriptableObject.statCount; i++) { Stat.StatType statType = statFactory.GenerateStatType(); Stat stat = statFactory.GetStatObject(statType, itemScriptableObject); int statIndex = DetectStatInList(itemScriptableObject.modifierList, statType); if (statIndex != -1) { itemScriptableObject.modifierList[statIndex].StatValue += stat.StatValue; itemScriptableObject.statCount--; } else { itemScriptableObject.modifierList.Add(stat); } } itemScriptableObject.itemBackgroundSprite = GenerateSpriteType(BackgroundSprites.backgroundSprites, itemScriptableObject.rarity); return(itemScriptableObject); }
// Generates an Item public static Item Create() { GenerateSprite generateSprite = new GenerateSprite(); RandomManager randomManager = new RandomManager(); StatFactory statFactory = new ConcreteStatFactory(); Item asset = ScriptableObject.CreateInstance <Item>(); randomManager.SetAnimationCurve(); asset.itemType = (Item.ItemType)UnityEngine.Random.Range(0, Enum.GetNames(typeof(Item.ItemType)).Length); asset.itemTypeName = asset.itemType.ToString().ToLower(); asset.rarity = (Item.Rarity)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability)); asset.keyword = (Item.Keywords)Mathf.RoundToInt(randomManager.CurveWeightedRandom(randomManager.cumulativeProbability)); asset.statCount = statFactory.GenerateStatAmount(asset.rarity); asset.modifierList = new List <Stat>(); for (int i = 0; i < asset.statCount; i++) { asset.modifierList.Add(statFactory.GetStat(statFactory.GenerateStatType(), asset)); } asset.itemName = asset.keyword.ToString().ToLower() + " " + asset.rarity.ToString().ToLower() + " " + asset.itemTypeName; asset.itemSpriteList = generateSprite.GenerateSpriteList(asset.itemType); asset.itemSprite = GenerateSpriteType(asset.itemSpriteList, asset.rarity); asset.ItemLevel = GenerateItemLevel(asset.rarity); asset.itemBackgroundSprite = GenerateSpriteType(BackgroundSprites.backgroundSprites, asset.rarity); return(asset); }
public override Item GetItem(Item.ItemType itemType, GameObject gameObject) { Item.Rarity rarity = GenerateRarity(); Item.Keywords keyword = GenerateKeyword(); Item item = gameObject.GetComponent <Item>(); StatFactory statFactory = new ConcreteStatFactory(); switch (itemType) { case Item.ItemType.ARMOR: item.Init(Item.ItemType.ARMOR, rarity, GenerateItemSprite(ItemSprites.armorSprites, rarity), rarity + " " + keyword + " Armor", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.BOOTS: item.Init(Item.ItemType.BOOTS, rarity, GenerateItemSprite(ItemSprites.bootsSprites, rarity), rarity + " " + keyword + " Boots", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.HELM: item.Init(Item.ItemType.HELM, rarity, GenerateItemSprite(ItemSprites.helmSprites, rarity), rarity + " " + keyword + " Helm", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.BELT: item.Init(Item.ItemType.BELT, rarity, GenerateItemSprite(ItemSprites.beltsSprites, rarity), rarity + " " + keyword + " Belt", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.ACCESSORY: item.Init(Item.ItemType.ACCESSORY, rarity, GenerateItemSprite(ItemSprites.accessorySprites, rarity), rarity + " " + keyword + " Accessory", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.PANTS: item.Init(Item.ItemType.PANTS, rarity, GenerateItemSprite(ItemSprites.pantsSprites, rarity), rarity + " " + keyword + " Pants", statFactory.GenerateStatAmount(rarity)); return(item); case Item.ItemType.GLOVES: item.Init(Item.ItemType.GLOVES, rarity, GenerateItemSprite(ItemSprites.glovesSprites, rarity), rarity + " " + keyword + " Gloves", statFactory.GenerateStatAmount(rarity)); return(item); default: Debug.Log("Item Type not found"); break; } throw new System.NotImplementedException(); }