Example #1
0
        public void GetAbilitiesTests()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("hello", "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("hello", "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });

            List <Ability> list = unit.GetAbilitiesFromReferenceId("hello", StringComparison.OrdinalIgnoreCase).ToList();

            Assert.AreEqual(2, list.Count);

            Assert.AreEqual(0, unit.GetAbilitiesFromReferenceId("empty", StringComparison.OrdinalIgnoreCase).ToList().Count);

            Assert.ThrowsException <ArgumentException>(() =>
            {
                unit.GetAbilitiesFromReferenceId(null !, StringComparison.OrdinalIgnoreCase);
            });
        }
Example #2
0
        public void RemovePassiveAbilityTest()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });

            Assert.IsTrue(unit.RemoveAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            }));
        }
Example #3
0
        private void AddAbilities()
        {
            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil1", "abil1"),
                Tier            = AbilityTiers.Basic,
                ParentLink      = null,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil2", "abil1"),
                Tier            = AbilityTiers.Basic,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil3", "abil1"),
                Tier            = AbilityTiers.Basic,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil4", "abil1"),
                Tier            = AbilityTiers.Heroic,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil5", "abil1"),
                Tier            = AbilityTiers.Heroic,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil6", "abil1"),
                Tier            = AbilityTiers.Trait,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Abil7", "abil1"),
                Tier            = AbilityTiers.Activable,
                ParentLink      = null,
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("SubAbil1", "subAbil1"),
                Tier            = AbilityTiers.Basic,
                ParentLink      = new AbilityTalentId("Abil7", "abil7"),
            });

            _unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("SubAbil2", "subAbil2"),
                Tier            = AbilityTiers.Basic,
                ParentLink      = new AbilityTalentId("Abil7", "abil7"),
            });
        }
Example #4
0
        public void ContainsPassiveAbilityTest()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });

            Assert.IsTrue(unit.ContainsAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            }));

            Assert.IsFalse(unit.ContainsAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass3")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            }));

            Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId(string.Empty, "asdf")));
            Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId(string.Empty, "pass2")));
            Assert.IsTrue(unit.ContainsAbility(new AbilityTalentId(string.Empty, "pass2")
            {
                AbilityType = AbilityTypes.Passive,
                IsPassive   = true,
            }));
        }
Example #5
0
        public void AddPassiveAbilityTest()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
        }
Example #6
0
        public void GetAbilityTests()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });

            Ability ability = unit.GetAbility(new AbilityTalentId(string.Empty, "pass1")
            {
                AbilityType = AbilityTypes.Passive,
                IsPassive   = true,
            });

            Assert.AreEqual("pass1", ability.AbilityTalentId.ButtonId);

            Assert.ThrowsException <KeyNotFoundException>(() =>
            {
                unit.GetAbility(new AbilityTalentId("test", "test"));
            });

            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                unit.GetAbility(null !);
            });
        }
Example #7
0
        public void TryGetAbilityTests()
        {
            Unit unit = new Unit();

            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass1")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });
            unit.AddAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId(string.Empty, "pass2")
                {
                    AbilityType = AbilityTypes.Passive,
                    IsPassive   = true,
                },
            });

            Assert.IsTrue(unit.TryGetAbility(
                              new AbilityTalentId(string.Empty, "pass1")
            {
                AbilityType = AbilityTypes.Passive,
                IsPassive   = true,
            },
                              out Ability? ability));

            Assert.AreEqual("pass1", ability?.AbilityTalentId.ButtonId);

            Assert.IsFalse(unit.TryGetAbility(new AbilityTalentId(string.Empty, string.Empty), out Ability? _));

            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                unit.TryGetAbility(null !, out Ability? _);
            });
        }
Example #8
0
        public void GetAbilitiesCountTest()
        {
            Ability ability1 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Active,
                },
                IconFileName = "test.png",
            };

            Ability ability2 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            };

            Ability ability3 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability2", "abil2")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            };

            Unit unit = new Unit();

            unit.AddAbility(ability1);
            unit.AddAbility(ability2);
            unit.AddAbility(ability3);

            Assert.AreEqual(3, unit.AbilitiesCount);
        }
Example #9
0
        /// <summary>
        /// Adds the <see cref="Unit"/>'s ability data.
        /// </summary>
        /// <param name="unit">The data to be set from <paramref name="tierElement"/>.</param>
        /// <param name="tierElement">The <see cref="JsonElement"/> to read from.</param>
        /// <param name="abilityTier">The tier of the ability.</param>
        /// <param name="parentLink">Indicates if the ability is a sub-ability.</param>
        /// <exception cref="ArgumentNullException"><paramref name="unit"/> is <see langword="null"/>.</exception>
        protected virtual void AddTierAbilities(Unit unit, JsonElement tierElement, AbilityTiers abilityTier, string?parentLink)
        {
            if (unit is null)
            {
                throw new ArgumentNullException(nameof(unit));
            }

            foreach (JsonElement element in tierElement.EnumerateArray())
            {
                Ability ability = new Ability
                {
                    Tier = abilityTier,
                };

                if (parentLink != null)
                {
                    string[] ids = parentLink.Split('|', StringSplitOptions.RemoveEmptyEntries);

                    if (ids.Length >= 2)
                    {
                        ability.ParentLink = new AbilityTalentId(ids[0], ids[1]);

                        if (ids.Length >= 3 && Enum.TryParse(ids[2], true, out AbilityTypes abilityTypes))
                        {
                            ability.ParentLink.AbilityType = abilityTypes;
                        }

                        if (ids.Length == 4 && bool.TryParse(ids[3], out bool isPassive))
                        {
                            ability.ParentLink.IsPassive = isPassive;
                        }
                    }
                }

                SetAbilityTalentBase(ability, element);

                unit.AddAbility(ability);
            }
        }
Example #10
0
 public override void ApplyUpgrades(Unit unit)
 {
     for (int i = 0; i < chosenUpgrade.Count; i++)
     {
         if (i == 0)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeMovementSpeed(1, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeAttackDamage(1, unit.baseUnit);
             }
         }
         else if (i == 1)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityHorse2L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityHorse2R);
             }
         }
         else if (i == 2)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeHealth(2, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeAttackDamage(2, unit.baseUnit);
             }
         }
         else if (i == 3)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityHorse4L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityHorse4R);
             }
         }
         else if (i == 4)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeHealth(4, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeMovementSpeed(1, unit.baseUnit);
             }
         }
         else if (i == 5)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityHorse6L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityHorse6R);
             }
         }
     }
 }
Example #11
0
 public override void AfterDamageDealt_ToUnit(Unit target, int damage)
 {
     target.AddAbility(new Bleeding(count, target));
 }
Example #12
0
    void ParseTeam(List <Unit> Team, bool hero)
    {
        JSONElement T = JSON.ParseJSONFile((".\\" + (hero ? "Heroes" : "Foes")));
        int         i = 0;

        if (T.key == null)
        {
            throw new System.Exception("HELL NAH BRO");
        }

        GameObject unitsContainer = new GameObject();

        unitsContainer.name = hero ? "Heroes" : "Foes";

        foreach (string name in T.key)
        {
            GameObject c = Instantiate(Player);
            c.GetComponentInChildren <Renderer>().material.color = hero ? Color.blue : Color.red;
            c.name             = name;
            c.transform.parent = unitsContainer.transform;
            Unit chara = c.GetComponent <Unit>();
            chara.c             = JSON.SearchJSON(T.data[i], "class").string_value;
            chara.lvl           = JSON.SearchJSON(T.data[i], "lvl").int_value;
            chara.hpMax         = JSON.SearchJSON(T.data[i], "life").int_value;
            chara.currentHP     = chara.hpMax;
            chara.attack        = JSON.SearchJSON(T.data[i], "atk").int_value;
            chara.defense       = JSON.SearchJSON(T.data[i], "def").int_value;
            chara.attackMental  = JSON.SearchJSON(T.data[i], "matk").int_value;
            chara.defenseMental = JSON.SearchJSON(T.data[i], "mdef").int_value;
            chara.speed         = JSON.SearchJSON(T.data[i], "spd").int_value;
            chara.stun          = 0;
            chara.range         = 2;
            JSONElement Inv = JSON.SearchJSON(T.data[i], "Inventory");
            if (Inv != null)
            {
                int j = 0;
                foreach (string iname in Inv.key)
                {
                    string[] items = { "STICK", "COMPUTER", "CALC", "MONEY", "BROOM" };
                    if (items.Contains(iname))
                    {
                        chara.attack       += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value;
                        chara.attackMental += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value;
                        j++;
                    }
                    if (iname == "STAPLER")
                    {
                        chara.attack += 10 * JSON.SearchJSON(Inv.data[j], "lvl").int_value;
                        chara.range  += JSON.SearchJSON(Inv.data[j], "lvl").int_value;
                    }
                }
            }

            chara.AddAbility(new Ability(Ability.AbilityType.PHYS, "Regular strike", 1, chara.range, chara.attack));
            //chara.abilities.Add(new Ability((Ability.AbilityType.PHYS, "Poweful strike", 3, chara.attack / 3)));
            chara.AddAbility(new Ability(Ability.AbilityType.MEN, "Regular insult", 1, 3, chara.attackMental));
            //chara.abilities.Add(new Ability((Ability.AbilityType.PHYS, "Poweful strike", 3, chara.attack / 3)));
            switch (chara.c)
            {
            case "STAG":
                chara.range = 2;
                break;

            case "SEC":
                chara.range = 3;
                break;

            case "TECH":
                chara.range = 5;
                break;

            case "GUARD":
                chara.range = 2;
                break;

            case "ING":
                chara.range = 4;
                break;

            case "COUNT":
                chara.SpecialAbility = new Ability(new COUNT_Effect());
                chara.range          = 2;
                break;

            case "MAN":
                chara.range          = 3;
                chara.SpecialAbility = new Ability(new MAN_Effect());
                break;

            default:
                chara.range          = 2;
                chara.SpecialAbility = new Ability(new PDG_Effect());
                break;
            }
            Team.Add(chara);
            i++;
        }
    }
Example #13
0
        public void RemoveAbilityTest()
        {
            Ability ability1 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Active,
                },
                IconFileName = "test.png",
            };

            Ability ability2 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            };

            Ability ability3 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability2", "abil2")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
            };

            Unit unit = new Unit();

            unit.AddAbility(ability1);
            unit.AddAbility(ability2);
            unit.AddAbility(ability3);

            Assert.AreEqual(3, unit.AbilitiesCount);

            Assert.IsTrue(unit.RemoveAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Active,
                },
                IconFileName = "test.png",
            }));

            // try to remove again
            Assert.IsFalse(unit.RemoveAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Active,
                },
                IconFileName = "test.png",
            }));

            Assert.IsFalse(unit.RemoveAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability3", "abil3")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            }));

            Assert.AreEqual(2, unit.AbilitiesCount);

            // remove 1
            Assert.IsTrue(unit.RemoveAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            }));

            Assert.AreEqual(1, unit.AbilitiesCount);
        }
Example #14
0
        public void ContainsAbilityTest()
        {
            Ability ability1 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Active,
                },
                IconFileName = "test.png",
            };

            Ability ability2 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            };

            Ability ability3 = new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability2", "abil2")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            };

            Unit unit = new Unit();

            unit.AddAbility(ability1);
            unit.AddAbility(ability2);
            unit.AddAbility(ability3);

            Assert.IsTrue(unit.ContainsAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Heroic,
                },
                IconFileName = "test.png",
            }));
            Assert.IsFalse(unit.ContainsAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability1", "abil1")
                {
                    AbilityType = AbilityTypes.Hidden,
                },
                IconFileName = "test.png",
            }));
            Assert.IsFalse(unit.ContainsAbility(new Ability()
            {
                AbilityTalentId = new AbilityTalentId("Ability4", "abil4")
                {
                    AbilityType = AbilityTypes.Hidden,
                },
                IconFileName = "test.png",
            }));

            Assert.IsTrue(unit.ContainsAbility("Ability1", StringComparison.OrdinalIgnoreCase));

            Assert.IsTrue(unit.ContainsAbility(new AbilityTalentId("Ability1", "abil1")
            {
                AbilityType = AbilityTypes.Heroic,
            }));
            Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId("Ability1", "abil1")));
            Assert.IsFalse(unit.ContainsAbility(new AbilityTalentId("Ability5", string.Empty)));
        }
Example #15
0
 public override void ApplyUpgrades(Unit unit)
 {
     for (int i = 0; i < chosenUpgrade.Count; i++)
     {
         if (i == 0)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeHealth(1, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeAttackDamage(1, unit.baseUnit);
             }
         }
         else if (i == 1)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityPorcupine2L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityPorcupine2R);
             }
         }
         else if (i == 2)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeHealth(3, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeAttackDamage(2, unit.baseUnit);
             }
         }
         else if (i == 3)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityPorcupine4L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityPorcupine4R);
             }
         }
         else if (i == 4)
         {
             if (chosenUpgrade [i] == 1)
             {
                 UpgradeHealth(6, unit.baseUnit);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 UpgradeAttackRange(1, unit.baseUnit);
             }
         }
         else if (i == 5)
         {
             if (chosenUpgrade [i] == 1)
             {
                 unit.AddAbility(abilityPorcupine6L);
             }
             else if (chosenUpgrade [i] == 2)
             {
                 unit.AddAbility(abilityPorcupine6R);
             }
         }
     }
 }
Example #16
0
 public override void BeforeDamageDealt_ToUnit(Unit target, ref int damage)
 {
     target.AddAbility(new Poisoned(count, target));
 }