void AddIfAvailable(Tile floorSpace, MapRegion region, Tile activeSpace) { if (floorSpace == null) { return; } if (floorSpace.SpaceType == activeSpace.SpaceType && floorSpace.Parent == null) { floorSpace.Parent = region; AddAdjacentSpaces(region, floorSpace); } }
void AddAdjacentSpaces(MapRegion region, Tile activeSpace) { region.AddTile(activeSpace); Tile left = GetFloorSpace(activeSpace.Column - 1, activeSpace.Row); AddIfAvailable(left, region, activeSpace); Tile top = GetFloorSpace(activeSpace.Column, activeSpace.Row - 1); AddIfAvailable(top, region, activeSpace); Tile right = GetFloorSpace(activeSpace.Column + 1, activeSpace.Row); AddIfAvailable(right, region, activeSpace); Tile bottom = GetFloorSpace(activeSpace.Column, activeSpace.Row + 1); AddIfAvailable(bottom, region, activeSpace); }
void AddSpaceToRegion(MapRegion region, Tile activeSpace) { activeSpace.Parent = region; AddAdjacentSpaces(region, activeSpace); }