コード例 #1
0
        public void CombatHandler_PlayerFightNpc_NpcDies()
        {
            var player = new Player(new Position(), new Stats(100, 10, 1), "player", 0);
            var npc    = new HostileNPC(new Position(), new Stats(1, 1, 1), new StandStillMovementStrategy(), "enemy", 0);

            _combatHandler.Fight(player, npc, layer);

            Assert.IsFalse(npc.Alive);
        }
コード例 #2
0
 private void MoveCharacter(ICharacter movingCharacter, IPosition targetPosition, ILayer layer)
 {
     //Attempt to move character, will return false if tile is not walkable or is already occupied
     if (!_movement.MoveCharacter(movingCharacter.Position, targetPosition, layer))
     {
         //Moving didn't work, find out if failure was because it was occupied
         ICharacter characterOnTile = layer.GetCharacter(targetPosition);
         if (characterOnTile != null)
         {
             _combatHandler.Fight(movingCharacter, characterOnTile, layer);
             // Try to move again will succed if opponent is dead
             _movement.MoveCharacter(movingCharacter.Position, targetPosition, layer);
         }
     }
 }