public void Init() { float delay = 3.0f; float repeatRate = 1.0f; planetMap = GameManager.Instance.planetMap; SelectStartPlanet(); enemyPlanets[0].PlanetShips = 50; if (enemyPlanets.Count > 0) { if (IsInvoking("SelectTargetPlanets") == false) { InvokeRepeating("SelectTargetPlanets", delay, repeatRate); } } }
public void Awake() { planetMap = FindObjectOfType <PlanetMap>(); enemyManager = FindObjectOfType <EnemyManager>(); if (instance != null && instance != this) { Destroy(this.gameObject); } instance = this; SideColor = new Dictionary <Side, Color>(); SideColor.Add(Side.Neitral, Color.gray); SideColor.Add(Side.Player, Color.blue); SideColor.Add(Side.Enemy, Color.red); }
public void When_Rover_Moves_Towards_Obstacle_A_Backoff_Strategy_Is_Played_Instead() { //First backoff is ERF var startingPosition = new Position(5, 5, Direction.East); var startingBattery = 10; var coordinates = CreateMap(10, 10); coordinates.Remove(new Location(6, 5)); coordinates.Add(new Location(6, 5), MapCellResource.Obstacle); var testMap = new PlanetMap(coordinates); ICommandTranslator commandTranslator = new CommandTranslator(); var rover = new Rover(startingPosition, startingBattery, testMap, commandTranslator); rover.RunCommands("F"); rover.BatteryCharge.ShouldBe(startingBattery - 1 + 10 - 2 - 3); rover.CurrentPosition.Facing.ShouldBe(Direction.South); rover.CurrentPosition.Coordinate.ShouldBe(new Location(5, 6)); }
public void When_Running_An_Input_File_We_Get_Expected_Results(string inputFile, string expectedOutputFile) { var jsonInput = File.ReadAllText(inputFile); var jsonExpectedOutput = File.ReadAllText(expectedOutputFile); var input = JsonConvert.DeserializeObject <RoverInput>(jsonInput); var initialFacing = input.initialPosition.Facing; var startPosition = new Position(input.initialPosition.Location.X, input.initialPosition.Location.Y, initialFacing); var rover = new Rover(startPosition, input.battery, PlanetMap.FromArray(input.terrain), new CommandTranslator()); var commands = string.Join("", input.commands); rover.RunCommands(commands); var outputs = rover.GenerateReport(); var serializerOptions = new JsonSerializerSettings(); serializerOptions.Converters.Add(new StringEnumConverter()); var actualOutputs = JsonConvert.SerializeObject(outputs, serializerOptions); JObject sourceJObject = JsonConvert.DeserializeObject <JObject>(jsonExpectedOutput); JObject targetJObject = JsonConvert.DeserializeObject <JObject>(actualOutputs); var sb = new StringBuilder(); if (!JToken.DeepEquals(sourceJObject, targetJObject)) { foreach (KeyValuePair <string, JToken> sourceProperty in sourceJObject) { JProperty targetProp = targetJObject.Property(sourceProperty.Key); if (!JToken.DeepEquals(sourceProperty.Value, targetProp.Value)) { sb.AppendLine(string.Format("{0} property value is changed from {1} to {2}", sourceProperty.Key, sourceProperty.Value, targetProp.Value)); } } } sb.ToString().ShouldBeEmpty(); }
public void When_Rover_Plays_A_Backoff_Strategy_And_Finds_Another_Obstacle_Strategy_Is_Interrupted_And_Next_Strategy_Plays() { //First backoff is ERF //Second backoff is ELF //Third backoff is ELLF var startingPosition = new Position(5, 5, Direction.East); var startingBattery = 10; var coordinates = CreateMap(10, 10); coordinates.Remove(new Location(6, 5)); coordinates.Add(new Location(6, 5), MapCellResource.Obstacle); coordinates.Remove(new Location(5, 6)); coordinates.Add(new Location(5, 6), MapCellResource.Obstacle); var testMap = new PlanetMap(coordinates); ICommandTranslator commandTranslator = new CommandTranslator(); var rover = new Rover(startingPosition, startingBattery, testMap, commandTranslator); rover.RunCommands("F"); rover.BatteryCharge.ShouldBe(startingBattery - 1 + 10 - 2 - 1 + 10 - 2 - 1 + 10 - 2 - 2 - 3); rover.CurrentPosition.Facing.ShouldBe(Direction.West); rover.CurrentPosition.Coordinate.ShouldBe(new Location(4, 5)); }
public ActionResult <RoverReport> SimulateRun(RoverInput input) { var rover = new Rover(Position.FromDto(input.initialPosition), input.battery, PlanetMap.FromArray(input.terrain), new CommandTranslator()); rover.RunCommands(string.Join("", input.commands)); return(Ok(rover.GenerateReport())); }
private void ClickBuildingSwap(object sender, EventArgs e) { if (labelBuildingID.Text == "Building ID") { labelBuildingID.Text = string.Empty; labelBuildingName.Text = string.Empty; labelBuildingLevel.Text = string.Empty; labelBuildingEfficiency.Text = string.Empty; labelImageName = string.Empty; } //string labelImageName = string.Empty; //used in place of an imagenamelabel ButtonPlanetMap btnButton = sender as ButtonPlanetMap; PlanetMap tempPlanetMap = new PlanetMap();//initializes the temporary planetmap object tempPlanetMap.buildingID = ""; tempPlanetMap.buildingName = ""; tempPlanetMap.buildingLevel = ""; tempPlanetMap.efficiency = ""; tempPlanetMap.imageName = ""; if (btnButton.x == 0 && btnButton.y == 0) { MessageBox.Show("This building cannot be moved"); } else { tempPlanetMap.buildingID = btnButton.buildingID;//moving building into temp storage tempPlanetMap.buildingName = btnButton.buildingName; tempPlanetMap.buildingLevel = btnButton.buildingLevel; tempPlanetMap.efficiency = btnButton.efficiency; tempPlanetMap.imageName = btnButton.imageName; btnButton.buildingID = ""; //clearing button storage before new info is written in btnButton.buildingName = ""; btnButton.imageName = ""; btnButton.buildingLevel = ""; btnButton.efficiency = ""; btnButton.Image = imageListBuildingImages.Images["blank.png"]; //btnButton.BackgroundImage = imageListBuildingImages.Images["blank.png"];//sets the default image btnButton.buildingID = labelBuildingID.Text;//moves the label info into the empty button btnButton.buildingName = labelBuildingName.Text; btnButton.Text = labelBuildingLevel.Text; btnButton.buildingLevel = labelBuildingLevel.Text; btnButton.efficiency = labelBuildingEfficiency.Text; btnButton.imageName = labelImageName; btnButton.Image = imageListBuildingImages.Images[labelImageName]; labelBuildingID.Text = tempPlanetMap.buildingID;//label updating labelBuildingName.Text = tempPlanetMap.buildingName; labelBuildingLevel.Text = tempPlanetMap.buildingLevel; labelBuildingEfficiency.Text = tempPlanetMap.efficiency; //labelBuildingLevel.Text = tempPlanetMap.buildingLevel; labelImageName = tempPlanetMap.imageName; buildingPictureBox.Image = imageListBuildingImages.Images[tempPlanetMap.imageName]; labelBuildingX.Text = Convert.ToString(btnButton.x); labelBuildingY.Text = Convert.ToString(btnButton.y); if (labelBuildingID.Text == "") { labelBuildingID.Text = "Building ID"; labelBuildingName.Text = "Building Name"; labelBuildingLevel.Text = "Building Level"; labelBuildingEfficiency.Text = "Efficiency"; labelBuildingX.Text = "x"; labelBuildingY.Text = "y"; } } }
void Awake() { planetMap = FindObjectOfType <PlanetMap>(); }
internal void OnEntityCreate(MyEntity myEntity) { try { if (!Inited) { lock (InitObj) Init(); } var planet = myEntity as MyPlanet; if (planet != null) { PlanetMap.TryAdd(planet.EntityId, planet); } var grid = myEntity as MyCubeGrid; if (grid != null) { grid.AddedToScene += GridAddedToScene; } if (!PbApiInited && myEntity is IMyProgrammableBlock) { PbActivate = true; } var placer = myEntity as IMyBlockPlacerBase; if (placer != null && Placer == null) { Placer = placer; } var cube = myEntity as MyCubeBlock; var sorter = cube as MyConveyorSorter; var turret = cube as IMyLargeTurretBase; var controllableGun = cube as IMyUserControllableGun; var decoy = cube as IMyDecoy; var camera = cube as MyCameraBlock; if (sorter != null || turret != null || controllableGun != null) { if (!(ReplaceVanilla && VanillaIds.ContainsKey(cube.BlockDefinition.Id)) && !WeaponPlatforms.ContainsKey(cube.BlockDefinition.Id)) { return; } lock (InitObj) { if (!SorterDetected && myEntity is MyConveyorSorter) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateTerminalUi <IMyConveyorSorter>(this)); if (!EarlyInitOver) { ControlQueue.Enqueue(typeof(IMyConveyorSorter)); } SorterDetected = true; } else if (!TurretDetected && turret != null) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateTerminalUi <IMyLargeTurretBase>(this)); if (!EarlyInitOver) { ControlQueue.Enqueue(typeof(IMyLargeTurretBase)); } TurretDetected = true; } else if (!FixedMissileReloadDetected && controllableGun is IMySmallMissileLauncherReload) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateTerminalUi <IMySmallMissileLauncherReload>(this)); if (!EarlyInitOver) { ControlQueue.Enqueue(typeof(IMySmallMissileLauncherReload)); } FixedMissileReloadDetected = true; } else if (!FixedMissileDetected && controllableGun is IMySmallMissileLauncher) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateTerminalUi <IMySmallMissileLauncher>(this)); if (!EarlyInitOver) { ControlQueue.Enqueue(typeof(IMySmallMissileLauncher)); } FixedMissileDetected = true; } else if (!FixedGunDetected && controllableGun is IMySmallGatlingGun) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateTerminalUi <IMySmallGatlingGun>(this)); if (!EarlyInitOver) { ControlQueue.Enqueue(typeof(IMySmallGatlingGun)); } FixedGunDetected = true; } } InitComp(cube); } else if (decoy != null) { if (!DecoyDetected) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateDecoyTerminalUi <IMyDecoy>(this)); DecoyDetected = true; } cube.AddedToScene += DecoyAddedToScene; } else if (camera != null) { if (!CameraDetected) { MyAPIGateway.Utilities.InvokeOnGameThread(() => CreateCameraTerminalUi <IMyCameraBlock>(this)); CameraDetected = true; } cube.AddedToScene += CameraAddedToScene; } } catch (Exception ex) { Log.Line($"Exception in OnEntityCreate: {ex}"); } }