public void BlockedWhenActiveCharacterTurn() { GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithCT(Time.ActionAmount)); state = state.WithActivePlayerID(state.Party[0].ID); TestCharacterBehavior behavior = new TestCharacterBehavior(); GameEngine engine = Factory.CreateGameEngine(state, behavior); Assert.False(engine.Process()); Assert.Empty(behavior.CharactersActed); Assert.Equal(Time.ActionAmount, state.Party[0].CT); Assert.Equal(0, state.Enemies[0].CT); }
public void DeadCharacters_DontTakeActionsOrCT() { Character[] party = { Factory.Player, Factory.Player.WithCurrentHealth(0) }; GameState state = new GameState(0, party, null, null, -1, ""); TestCharacterBehavior behavior = new TestCharacterBehavior(); GameEngine engine = Factory.CreateGameEngine(state, behavior); for (int i = 0; i < Time.ActionAmount; ++i) { engine.Process(); } Assert.Single(behavior.CharactersActed); Assert.Equal(0, engine.CurrentState.Party[1].CT); }
public void OtherCharactersTakeActions() { GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Enemies[0].WithCT(50)); TestCharacterBehavior behavior = new TestCharacterBehavior(); GameEngine engine = Factory.CreateGameEngine(state, behavior); for (int i = 0; i < 90; ++i) { Assert.True(engine.Process()); } Assert.Single(behavior.CharactersActed); Assert.Contains(behavior.CharactersActed.ToList(), x => x.ID == engine.CurrentState.Enemies[0].ID); }
public void ActivePlayerDoesNotTakeAutomatedAction_WhenCTsAreSynced() { Character [] party = { Factory.Player, Factory.Player }; GameState state = new GameState(0, party, null, null, party[0].ID, ""); TestCharacterBehavior behavior = new TestCharacterBehavior(); GameEngine engine = Factory.CreateGameEngine(state, behavior); for (int i = 0; i < Time.ActionAmount; ++i) { engine.Process(); } Assert.Single(behavior.CharactersActed); Assert.True(engine.BlockedOnActive); }
public void CharacterBehavior_ReturnsSkill_GivenToSkillEngine() { GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithCT(99)); Skill skill = Factory.TestSkill; TestCharacterBehavior characterBehavior = new TestCharacterBehavior(); characterBehavior.SkillToReturn = new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])); TestSkillEngine skillEngine = new TestSkillEngine(); GameEngine engine = Factory.CreateGameEngine(state, characterBehavior, skillEngine); Skill skillReportedUsed = null; engine.SkillUsed += (o, s) => skillReportedUsed = s.Skill; engine.Process(); Assert.Single(skillEngine.SkillsUsed); Assert.Contains(skillEngine.SkillsUsed, x => x.ID == skill.ID); Assert.Equal(skillReportedUsed, skillEngine.SkillsUsed.First()); }