示例#1
0
        private Fight SetupNewFight(out CharacterTracker charTracker)
        {
            var charResolver = new CharacterResolver();

            charTracker = new CharacterTracker(YouAre, charResolver);
            return(new Fight(YouAre, charResolver));
        }
        public void AddPCGetPC()
        {
            var k  = new Character("Khadaji");
            var cr = new CharacterResolver();

            cr.SetPlayer(k);
            Assert.AreEqual(CharacterResolver.Type.Player, cr.WhichType(k));
            Assert.AreEqual(CharacterResolver.Type.Player, cr.WhichType("Khadaji"));
        }
        public void PlayerStickyResistsOverrideToMercenary()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Bob", true);
            cr.SetMercenary("Bob");

            Assert.AreEqual(CharacterResolver.Type.Player, cr.WhichType("Bob"));
        }
        public void PlayerNonStickyGetsChangedToMercenary()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Bob");
            cr.SetMercenary("Bob");

            Assert.AreEqual(CharacterResolver.Type.Mercenary, cr.WhichType("Bob"));
        }
        public void PlayerNotOverwrittenByMercenary()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Bob");
            cr.SetMercenary("Bob", overwrite: false);

            Assert.AreEqual(CharacterResolver.Type.Player, cr.WhichType("Bob"));
        }
示例#6
0
        public void WillNotChoseNonOwnedSkill()
        {
            CharacterBehavior characterBehavior = CreateTestsBehavior(new BehaviorSkill[] { new BehaviorSkill("Heal"), new BehaviorSkill("Damage") });
            GameState         state             = CreateTestState(new Skill[] { Factory.DamageSkill });

            TargettedSkill targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));

            Assert.Equal("Damage", targettedSkill.Skill.CosmeticName);
        }
        public void MercenaryOverridesPlayer()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Bob");
            cr.SetMercenary("Bob");

            Assert.AreEqual(CharacterResolver.Type.Mercenary, cr.WhichType("Bob"));
        }
        public void PetOverridesPlayer()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Bob");
            cr.SetPet("Bob");

            Assert.AreEqual(CharacterResolver.Type.Pet, cr.WhichType("Bob"));
        }
        public void AddNameToMultipleListsGetBackWhichShouldNotBeAllowed()
        {
            var cr = new CharacterResolver();

            cr.SetMercenary("Bob");
            cr.SetNonPlayer("Bob");
            // Should this fail? Exception or silent? I prefer no exception

            Assert.AreEqual(CharacterResolver.Type.Mercenary, cr.WhichType("Bob"));
        }
示例#10
0
        public void WillChooseReasonableDamageTarget()
        {
            CharacterBehavior characterBehavior = CreateTestsBehavior(new BehaviorSkill[] { new BehaviorSkill("Damage") });
            GameState         state             = CreateMultiTargetTestState(new Skill[] { Factory.DamageSkill });

            TargettedSkill targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));

            Assert.Equal("Damage", targettedSkill.Skill.CosmeticName);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.InvokerID);
            Assert.Equal(state.Enemies[1].ID, targettedSkill.TargetInfo.TargetID);
        }
示例#11
0
        public void AcceptsSkillWithCosmeticName()
        {
            CharacterBehavior characterBehavior = CreateTestsBehavior(new BehaviorSkill[] { new BehaviorSkill("Damage") });
            GameState         state             = CreateMultiTargetTestState(new Skill[] { new Skill(IDs.Next(), "Scratch", "Damage", Factory.DamageAction, true, 0, 0) });

            TargettedSkill targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));

            Assert.Equal("Scratch", targettedSkill.Skill.CosmeticName);
            Assert.Equal("Damage", targettedSkill.Skill.SkillName);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.InvokerID);
            Assert.Equal(state.Enemies[1].ID, targettedSkill.TargetInfo.TargetID);
        }
示例#12
0
        public string Beautify(string input, Language from, Language to)
        {
            var output            = new StringBuilder();
            var characterResolver = new CharacterResolver(from, to);

            foreach (var character in input)
            {
                var beautyCharacter = characterResolver.Resolve(character);
                output.Append(beautyCharacter);
            }

            return(output.ToString());
        }
示例#13
0
        public void WillOverrideWhenCondition()
        {
            CharacterBehavior characterBehavior = CreateTestsBehavior(new BehaviorSkill[] { new BehaviorSkill("Damage"), new BehaviorSkill("Heal", GameCondition.PartyHealthLow) });
            GameState         state             = CreateTestState(new Skill[] { Factory.DamageSkill, Factory.HealSkill });

            state = state.UpdateCharacter(state.Party[0].WithHealth(new Health(1, 10)));

            TargettedSkill targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));

            Assert.Equal("Heal", targettedSkill.Skill.CosmeticName);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.InvokerID);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.TargetID);
        }
示例#14
0
        public void AddVarietyOfNamesGetThemBackCorrectly()
        {
            var cr = new CharacterResolver();

            cr.SetPlayer("Khadaji");
            cr.SetMercenary("Movanna");
            cr.SetPet("Khadaji`s pet");
            cr.SetPet("Jabantik");
            cr.SetNonPlayer("Gomphus");

            Assert.AreEqual(CharacterResolver.Type.Player, cr.WhichType("Khadaji"));
            Assert.AreEqual(CharacterResolver.Type.Mercenary, cr.WhichType("Movanna"));
            Assert.AreEqual(CharacterResolver.Type.Pet, cr.WhichType("Khadaji`s pet"));
            Assert.AreEqual(CharacterResolver.Type.Pet, cr.WhichType("Jabantik"));
            Assert.AreEqual(CharacterResolver.Type.NonPlayerCharacter, cr.WhichType("Gomphus"));
        }
示例#15
0
        public void WillChooseFirstAvailableSkill()
        {
            CharacterBehavior characterBehavior = CreateTestsBehavior(new BehaviorSkill [] { new BehaviorSkill("Damage"), new BehaviorSkill("Heal") });
            GameState         state             = CreateTestState(new Skill [] { Factory.DamageSkill, Factory.HealSkill });

            TargettedSkill targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));

            Assert.Equal("Damage", targettedSkill.Skill.CosmeticName);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.InvokerID);
            Assert.Equal(state.Enemies[0].ID, targettedSkill.TargetInfo.TargetID);

            state          = state.UpdateCharacter(state.Party[0].WithUpdatedSkill(state.Party[0].Skills[0].WithAvailable(false)));
            targettedSkill = characterBehavior.Act(state, CharacterResolver.Create(state.Party[0], state));
            Assert.Equal("Heal", targettedSkill.Skill.CosmeticName);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.InvokerID);
            Assert.Equal(state.Party[0].ID, targettedSkill.TargetInfo.TargetID);
        }
示例#16
0
        public void UnknownCharacterAtStartWhenAllIsEmpty()
        {
            var cr = new CharacterResolver();

            Assert.AreEqual(CharacterResolver.Type.Unknown, cr.WhichType(new Character("Khadaji")));
        }
示例#17
0
 private CharacterTracker SetupNewTracker(out CharacterResolver charResolver)
 {
     charResolver = new CharacterResolver();
     charResolver.SetPlayer(YouAre.Name); // This is normally done at the start of a Battle
     return(new CharacterTracker(YouAre, charResolver));
 }
示例#18
0
 public Skirmish(YouResolver youAre, CharacterResolver charResolver)
 {
     YouAre       = youAre;
     CharResolver = charResolver;
 }
示例#19
0
 public Fight(YouResolver youAre, CharacterResolver charResolver)
 {
     YouAre       = youAre;
     CharResolver = charResolver;
 }