コード例 #1
0
        public static void CreateAsset()
        {
            AttackDescription newAsset = ScriptableObject.CreateInstance <AttackDescription>();

            AssetDatabase.CreateAsset(newAsset, Helper.GetSelectedPathOrFallback() + "/attackdesc.asset");
            EditorUtility.FocusProjectWindow();
            Selection.activeObject = newAsset;
        }
コード例 #2
0
        private static AttackDescription AssertAttackValue(Roguelike.Tiles.LivingEntities.Hero hero,
                                                           Roguelike.Attributes.AttackKind kind,
                                                           float expectedAttackValue)
        {
            AttackDescription ad = new AttackDescription(hero, false, kind);

            Assert.AreEqual(ad.CurrentTotal, expectedAttackValue);
            return(ad);
        }
コード例 #3
0
        public void WeaponPower()
        {
            var game = CreateGame();
            var hero = game.Hero;

            //no weapon
            var ad         = new AttackDescription(hero, false, Roguelike.Attributes.AttackKind.Melee);
            var meleeStart = ad.CurrentTotal;

            Assert.AreEqual(meleeStart, StartAttack);

            ad = new AttackDescription(hero, false, Roguelike.Attributes.AttackKind.PhysicalProjectile);
            Assert.AreEqual(ad.CurrentTotal, 0);

            //stone
            ActivateFightItem(FightItemKind.Stone, hero);
            ad = new AttackDescription(hero, false, Roguelike.Attributes.AttackKind.Melee);
            var meleeStart1 = ad.CurrentTotal;

            Assert.AreEqual(meleeStart1, meleeStart);
            var expectedStoneAttackValue = StartAttack / 2 + 1;

            AssertAttackValue(hero, Roguelike.Attributes.AttackKind.PhysicalProjectile, expectedStoneAttackValue);

            //ThrowingKnife
            ActivateFightItem(FightItemKind.ThrowingKnife, hero);
            var expectedThrowingKnifeAttackValue = StartAttack / 2 + 3;

            AssertAttackValue(hero, Roguelike.Attributes.AttackKind.PhysicalProjectile, expectedThrowingKnifeAttackValue);

            ////ExplosiveCocktail
            //ActivateFightItem(FightItemKind.ExplosiveCocktail, hero);
            //var expectedHunterTrapAttackValue = 4;
            //AssertAttackValue(hero, Roguelike.Attributes.AttackKind.PhysicalProjectile, expectedHunterTrapAttackValue);

            //arrow
            ActivateFightItem(FightItemKind.PlainArrow, hero);
            var wpn = GenerateEquipment <Weapon>("Bow");

            Assert.True(SetHeroEquipment(wpn));
            var expectedBowAttackValue = Props.FightItemBaseDamage + 1 + Props.BowBaseDamage;

            AssertAttackValue(hero, Roguelike.Attributes.AttackKind.PhysicalProjectile, expectedBowAttackValue);
            Assert.Greater(expectedBowAttackValue, expectedThrowingKnifeAttackValue);

            //bolt
            ActivateFightItem(FightItemKind.PlainBolt, hero);
            wpn = GenerateEquipment <Weapon>("Crossbow");
            Assert.True(SetHeroEquipment(wpn));
            var expectedCrossbowAttackValue = Props.FightItemBaseDamage + 2 + Props.CrossbowBaseDamage;

            AssertAttackValue(hero, Roguelike.Attributes.AttackKind.PhysicalProjectile, expectedCrossbowAttackValue);
            Assert.Greater(expectedCrossbowAttackValue, expectedBowAttackValue);
        }