public void Setup() { var world = new SimpleWorld(); town1center = world.GetVoxel(0, 0); borderVoxel = world.GetVoxel(1, 0); borderToBorderVoxel = world.GetVoxel(2, 0); town2BorderToTown1 = world.GetVoxel(0, 1); town2center = world.GetVoxel(0, 2); var service = new TownCenterService(null, new GenericDatastoreRecord(null, 1)); town1 = service.CreateTown(town1center); town2 = service.CreateTown(town2center); town1.AddVoxel(town1center); town2.AddVoxel(town2center); town2.AddVoxel(town2BorderToTown1); tool = new TownBorderPlayerTool(service); }
/// <summary> /// Adds given voxel to the town border, and takes it from its current town if one exists /// Does nothing in case invalid border addition, and returns false /// </summary> public bool TryAddBorder(IVoxel voxel, Town town) { if (!town.IsAtBorder(voxel)) { return(false); } var oldTown = townCenterService.GetTownForVoxel(voxel); if (oldTown != null) { if (!oldTown.CanRemove(voxel)) { return(false); //Do not remove last } oldTown.RemoveVoxel(voxel); } town.AddVoxel(voxel); return(true); }