void Start() { if (mapgeneratoractive) { if (ItemSpawns.Sum(i => i.ItemSpawnCountPerSquareSize) > SquareSize) { throw new System.Exception("Die Globale ItemSpawnCountPerSquareSize variable darf nicht größer wie der SquareSize sein"); } foreach (var tileType in TileTypes) { if (tileType.UniqueItemsForTileType.Sum(i => i.ItemSpawnCountPerSquareSize) > SquareSize) { throw new System.Exception("Die ItemSpawnCountPerSquareSize variable für das Tile '" + tileType.TypeSprite.name + "' darf nicht größer wie der SquareSize sein"); } } float totalitemSpawns = ItemSpawns.Sum(i => i.ItemSpawnCountPerSquareSize) + TileTypes.Sum(t => t.UniqueItemsForTileType.Sum(i => i.ItemSpawnCountPerSquareSize)); if (totalitemSpawns > mapWidth * mapHeight) { throw new System.Exception("Die gesamte Item spawn Anzahl ist zu hoch"); } cameraTransform = Camera.main.transform; Vector3 cameraP1 = Camera.main.ScreenToWorldPoint(Vector3.zero); Vector3 cameraP2 = Camera.main.ScreenToWorldPoint(new Vector3(Camera.main.pixelWidth, Camera.main.pixelHeight)); screenWidth = (int)(Mathf.Abs(cameraP2.x - cameraP1.x) / spriteGroesse) + 5; screenHeight = (int)(Mathf.Abs(cameraP2.y - cameraP1.y) / spriteGroesse) + 5; //Erstelle eine gerade anzahl an SpriteRenderer auf der map screenWidth += screenWidth % 2 == 0 ? 0 : 1; screenHeight += screenHeight % 2 == 0 ? 0 : 1; if (ShowWholeMap) { screenWidth = mapWidth + 20; screenHeight = mapHeight + 20; } spriteRenderer = new SpriteRenderer[screenWidth, screenHeight]; //Speicher für SpriteRenderer int halfScreenWidth = screenWidth / 2; //erstellen der Sprites int halfScreenHeight = screenHeight / 2; for (int x = 0; x < screenWidth; x++) { for (int y = 0; y < screenHeight; y++) { GameObject NewTile = GameObject.Instantiate(tile, new Vector3((spriteGroesse * x - halfScreenWidth * spriteGroesse), (spriteGroesse * y - halfScreenHeight * spriteGroesse), 0), Quaternion.identity, parent); spriteRenderer[x, y] = NewTile .GetComponent <SpriteRenderer>(); //Instantiert ein neues Objekt mit SpriteRender, und speichert diesen im SpriteRendererArray } } sprites = new Sprite[TileTypes.Length + 1]; for (int i = 1; i < TileTypes.Length + 1; i++) { sprites[i] = TileTypes[i - 1].TypeSprite; } sprites[0] = BorderSprite; availableSpawnPoints = new byte[mapWidth, mapHeight]; VoronoiMap voronoiMap = new VoronoiMap(TileTypes); Dictionary <VoronoiPoint, List <Vector2> > regions; map = voronoiMap.GenerateMap(mapWidth, mapHeight, VoronoiPointCount, out regions); //GenerateBorder(); SpawnItems(regions); refreshScreen(); //SpriteRenderer erneuern // Wassertile Colider hinzufügen, nicht passierbar machen und fischbar machen int childcounterM = Tilemap.transform.childCount; for (int i = 0; i < childcounterM; i++) { Transform Tile = Tilemap.transform.GetChild(i); SpriteRenderer Renderer = Tile.gameObject.GetComponent <SpriteRenderer>(); if (Renderer.sprite.name == "water") { Tile.GetComponent <BoxCollider2D>().enabled = true; Tile.GetComponent <BoxCollider2D>().isTrigger = false; Tile.GetComponent <BoxCollider2D>().size = new Vector2(0.2f, 0.2f); Tile.gameObject.AddComponent <Fishable>(); } } } }
void Start() { if (mapgeneratoractive) { cameraTransform = Camera.main.transform; Vector3 cameraP1 = Camera.main.ScreenToWorldPoint(Vector3.zero); Vector3 cameraP2 = Camera.main.ScreenToWorldPoint(new Vector3(Camera.main.pixelWidth, Camera.main.pixelHeight)); screenWidth = (int)(Mathf.Abs(cameraP2.x - cameraP1.x) / spriteGroesse) + 5; screenHeight = (int)(Mathf.Abs(cameraP2.y - cameraP1.y) / spriteGroesse) + 5; //Erstelle eine gerade anzahl an SpriteRenderer auf der map screenWidth += screenWidth % 2 == 0 ? 0 : 1; screenHeight += screenHeight % 2 == 0 ? 0 : 1; if (ShowWholeMap) { screenWidth = mapWidth + 20; screenHeight = mapHeight + 20; } spriteRenderer = new SpriteRenderer[screenWidth, screenHeight]; //Speicher für SpriteRenderer int halfScreenWidth = screenWidth / 2; //erstellen der Sprites int halfScreenHeight = screenHeight / 2; for (int x = 0; x < screenWidth; x++) { for (int y = 0; y < screenHeight; y++) { GameObject NewTile = GameObject.Instantiate(tile, new Vector3((spriteGroesse * x - halfScreenWidth * spriteGroesse), (spriteGroesse * y - halfScreenHeight * spriteGroesse), 0), Quaternion.identity, parent); spriteRenderer[x, y] = NewTile .GetComponent <SpriteRenderer>(); //Instantiert ein neues Objekt mit SpriteRender, und speichert diesen im SpriteRendererArray } } sprites = new Sprite[TileTypes.Length + 1]; for (int i = 1; i < TileTypes.Length + 1; i++) { sprites[i] = TileTypes[i - 1].TypeSprite; } sprites[0] = BorderSprite; VoronoiMap voronoiMap = new VoronoiMap(TileTypes); map = voronoiMap.GenerateMap(mapWidth, mapHeight, VoronoiPointCount); //GenerateBorder(); GenerateItemSpawnLotteries(); SpawnItems(); refreshScreen(); //SpriteRenderer erneuern // Wassertile Colider hinzufügen, nicht passierbar machen und fischbar machen int childcounterM = Tilemap.transform.childCount; for (int i = 0; i < childcounterM; i++) { Transform Tile = Tilemap.transform.GetChild(i); SpriteRenderer Renderer = Tile.gameObject.GetComponent <SpriteRenderer>(); if (Renderer.sprite.name == "water") { Tile.GetComponent <BoxCollider2D>().enabled = true; Tile.GetComponent <BoxCollider2D>().isTrigger = false; Tile.GetComponent <BoxCollider2D>().size = new Vector2(0.2f, 0.2f); Tile.gameObject.AddComponent <Fishable>(); } } } }