public AoeGem(string name, string description, string iconPath, Tier tier, ItemType itemType, SkillGemType gemType, int targetCount) : base(name, description, iconPath, tier, itemType, gemType) { this.targetCount = targetCount; }
public EffectGem(string name, string description, string iconPath, Tier tier, ItemType itemType, SkillGemType gemType, Effect effect) : base(name, description, iconPath, tier, itemType, gemType) { this.effect = effect; }
public ElementGem(string name, string description, string iconPath, Tier tier, ItemType itemType, SkillGemType gemType, Vector3 castOffset, string castEffect, string hitEffect) : base(name, description, iconPath, tier, itemType, gemType) { this.castOffset = castOffset; this.castEffect = castEffect; this.hitEffect = hitEffect; if ((int)gemType > 9) { Debug.LogError(name + " has an invalid gemType for ElementGem!"); return; } switch (gemType.ToString()) { case "aquamarine": element = ElementType.ice; break; case "sapphire": element = ElementType.water; break; case "amethyst": element = ElementType.wind; break; case "citrine": element = ElementType.earth; break; case "topaz": element = ElementType.electric; break; case "moonstone": element = ElementType.magical; break; case "pearl": element = ElementType.physical; break; case "emerald": element = ElementType.toxic; break; case "ruby": element = ElementType.fire; break; } }
// Generate UI list of skillGems available to craft with private void GenerateList() { // Clear UI objects if any if (gemsUI.Count > 0) { for (int i = gemsUI.Count - 1; i >= 0; i--) { Destroy(gemsUI[i]); } gemsUI = new List <GameObject>(); } skillGems = new List <SkillGem>(); IEnumerable <Inventory.InventoryItem> gemItems = Player.instance.inventory.items.Where <Inventory.InventoryItem>((ii) => ii.item.itemType == ItemType.skillGem); if (gemItems == null) { return; } gems = gemItems.ToList(); // Create UI object of each skillGem in list float height = ((RectTransform)inventoryItem.transform).rect.height; contentTrans.sizeDelta = new Vector2(contentTrans.sizeDelta.x, height * skillGems.Count); float startY = contentTrans.rect.height / 2.00f - height / 2.00f; for (int i = 0; i < gems.Count; i++) { GameObject o = Instantiate(inventoryItem); o.transform.SetParent(contentTrans); o.transform.localScale = Vector3.one; // Position ui element in scroll view RectTransform rt = (RectTransform)o.transform; rt.anchoredPosition = new Vector2(0f, startY - i * height); // Icon Image icon = (Image)o.transform.GetChild(0).GetComponent <Image>(); icon.sprite = gems[i].item.Icon; // Name Text nameText = (Text)o.transform.GetChild(1).GetComponent <Text>(); nameText.text = gems[i].item.name; // Amount Text amount = (Text)o.transform.GetChild(2).GetComponent <Text>(); string text = ""; SkillGemType gemType = ((SkillGem)gems[i].item).gemType; if ((int)gemType <= (int)SkillGemCategory.elementGem) { text = "Element"; } else if ((int)gemType <= (int)SkillGemCategory.damageEffect) { text = "Damage"; } else if ((int)gemType <= (int)SkillGemCategory.healEffect) { text = "Heal"; } else if ((int)gemType <= (int)SkillGemCategory.buffEffect) { text = "Buff"; } else if ((int)gemType <= (int)SkillGemCategory.statusEffect) { text = "Status"; } amount.text = text; // Add listener when selecting this skillGem Button button = o.GetComponent <Button>(); int index = i; button.onClick.AddListener(() => Select(index)); gemsUI.Add(o); } }
// Add a new randomly generated skillGem public void AddSkillGem() { int randomNum = UnityEngine.Random.Range(1, MAX_GEMTYPE_COUNT); // Since skillGem category is based on range of ints, check which gem should be created whether // randomNum is less than or equal to the category num int randomTier = UnityEngine.Random.Range(0, 100); Tier tier = Tier.common; if (randomTier <= 5) { tier = Tier.legendary; } else if (randomTier <= 25) { tier = Tier.unique; } else if (randomTier <= 60) { tier = Tier.rare; } SkillGemType gemType = (SkillGemType)Enum.ToObject(typeof(SkillGemType), randomNum); string gemName = ((SkillGemType)randomNum).ToString(); Debug.Log("Generating " + tier + " " + gemName); if (randomNum <= (int)SkillGemCategory.elementGem) { // Grab random castEffect and hitEffect EffectsList effectsList = GetEffectsList(tier); EffectGraphic effect = effectsList.RandomEffect; string castEffect = "", hitEffect = ""; castEffect = effect.cast.name; hitEffect = effect.hit.name; ElementGem gem = new ElementGem(gemName, "Random generated skillGem", "", tier, ItemType.skillGem, gemType, effect.castOffset, castEffect, hitEffect); Player.instance.inventory.AddItem(gem, 1); } else if (randomNum <= (int)SkillGemCategory.damageEffect) { float min = UnityEngine.Random.Range(1, 100); float max = min + UnityEngine.Random.Range(3, 50); EffectGem gem = new EffectGem(gemName, "Random generated skillGem", "", tier, ItemType.skillGem, gemType, new Damage(min, max, 1, false)); Player.instance.inventory.AddItem(gem, 1); } else if (randomNum <= (int)SkillGemCategory.healEffect) { EffectGem gem = new EffectGem(gemName, "Random generated skillGem", "", tier, ItemType.skillGem, gemType, new Heal(UnityEngine.Random.Range(10, 100), false)); Player.instance.inventory.AddItem(gem, 1); } else if (randomNum <= (int)SkillGemCategory.buffEffect) { EffectGem gem = new EffectGem(gemName, "Random generated skillGem", "", tier, ItemType.skillGem, gemType, new Buff(false, 60, new AttributeStats(), new CharStats(), new CombatStats())); Player.instance.inventory.AddItem(gem, 1); } else if (randomNum <= (int)SkillGemCategory.statusEffect) { EffectGem gem = new EffectGem(gemName, "Random generated skillGem", "", tier, ItemType.skillGem, gemType, new StatusEffect()); Player.instance.inventory.AddItem(gem, 1); } GenerateList(); }
public SkillGem(string name, string description, string id, Tier tier, ItemType itemType, SkillGemType gemType) : base(name, description, id, tier, itemType) { this.gemType = gemType; }