예제 #1
0
파일: AoeGem.cs 프로젝트: acosin/skill_game
 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;
 }
예제 #2
0
 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;
 }
예제 #3
0
    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;
        }
    }
예제 #4
0
    // 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);
        }
    }
예제 #5
0
    // 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();
    }
예제 #6
0
 public SkillGem(string name, string description, string id, Tier tier, ItemType itemType,
                 SkillGemType gemType) :
     base(name, description, id, tier, itemType)
 {
     this.gemType = gemType;
 }