/// <summary> /// Explores Martian terrain, might be salvaged by a potato farmer in the future. /// </summary> /// <param name="name">Name of the rover.</param> /// <param name="position">Starting position of the rover</param> /// <param name="orientation">Starting orientation of the rover</param> /// <param name="comModule">Communication module used by the rover.</param> /// <param name="terrain">Martian terrain the rover is stationed on</param> public Rover(string name, IPosition position, OrientationEnum orientation, IComModule comModule, ITerrain terrain) { ComModule = comModule; Terrain = terrain; ComModule.Rover = this; Name = name; Position = position; Orientation = orientation; if (Terrain.IsEmpty(Position.X, Position.Y)) { Terrain.Grid[Position.X, Position.Y] = this; } else { //There is an obstacle at the coordinates rover was meant to be placed throw new ObstacleInTheWayException(Terrain.Grid[Position.X, Position.Y]); } }