private Player InitManualPlayer()
        {
            //return null;
            var sensor = new Sensor(new SensorModel(Game.SensingDistance, 0.0, 0.0, 0.0));
            //TODO manual does not need decision maker. ManualPlayer should inherit from player
            var adm = new SimpleHighLevelDecisionMaker(null, new List <IActionPlanner> {
                new SimpleMotionPlanner()
            });
            var motionActuator   = new MotionActuator(MotionActuatorModel.Perfect);
            var shootingActuator = new ShootingActuator(ShootingActuatorModel.Standart);

            return(new Player(_world, Config.ManualStartPosition, sensor, new List <IActuator> {
                motionActuator, shootingActuator
            }, adm)
            {
                GameIdentity = Entity.GAME_IDENTITY.MANUAL, Id = ++_idCounter
            });
        }
        private Player InitBotPlayer()
        {
            var sensor   = new Sensor(new SensorModel(Game.SensingDistance, 0.0, 0.0, 0.0));
            var planners = new List <IActionPlanner> {
                new TargetedMotionPlanner(Config.TargetPosition, Config.TurningResolutionFactorOfPI * Math.PI)
            };

            var offlineGameClock = new GameClock();
            var offlineGame      = new Game(null, null, new List <Player>(), new List <Entity>(), null, offlineGameClock);

            var adm              = new HighLevelDecisionMaker(null, offlineGame, offlineGameClock, planners, new PlayerFactory(_world), Config.NumberOfForwardLookingOfflineMoves);
            var motionActuator   = new MotionActuator(MotionActuatorModel.Perfect);
            var shootingActuator = new ShootingActuator(ShootingActuatorModel.Standart);

            //TODO enforce gameentity and id in ctor
            return(new Player(_world, Config.BotStartPosition, sensor, new List <IActuator> {
                motionActuator
            }, adm)
            {
                GameIdentity = Entity.GAME_IDENTITY.BOT, Id = ++_idCounter
            });
        }