int GetAssetNameBitmaskNoStr(int x, int y, ITileMap Tilemap, TileType type) { // found = IsImplemented(type) ? true : false; // 4-bit directions // North, west, east, south int value = 0; if (IsUpperTile(type, Tilemap.GetTile(x, y + 1))) // Tähän reunan insert { value += 1; } if (IsUpperTile(type, Tilemap.GetTile(x + 1, y))) { value += 4; } if (IsUpperTile(type, Tilemap.GetTile(x, y - 1))) { value += 8; } if (IsUpperTile(type, Tilemap.GetTile(x - 1, y))) { value += 2; } return value; }
private bool TileValue(ITileMap tileMap, Vector3Int position) { TileBase tile = tileMap.GetTile(position); return(tile != null && tile == this); }
/** * */ private bool TileValue(ITileMap tileMap, Vector3Int position) { BaseTile tile = tileMap.GetTile(position); return (tile != null && ShouldMerge(tile)); }
public void SetTileSprites(int width, int height, ITileMap tilemap, int startX, int startY) { // int tempIndex = 0; float offsetX = tilemap.GetTileGameObject(0, 0).transform.position.x; float offsetY = tilemap.GetTileGameObject(0, 0).transform.position.y; // sstring currentPool = GetCurrentPool(); string currentPool = "Border"; for (int y = startY; y < height; y++) { for (int x = startX; x < width; x++) { TileType type = tilemap.GetTile(x, y); #if true if (type == TileType.Water || type == TileType.DeepWater) { var anime = tilemap.GetTileGameObject(x, y).GetComponent<TileAnime>(); anime.enabled = true; anime.SetSprites(type); anime.Continue(); // maybe redudant continue; } else { var tileAnime = tilemap.GetTileGameObject(x, y).GetComponent<TileAnime>(); if (tileAnime != null) tileAnime.enabled = false; } #endif if (type == TileType.Mountain) // outdoor mountain ===??)==??=9 { int tile = GetAssetNameBitmaskNoStr(x, y, tilemap, type); if (tile == 15) { tilemap.GetTileGameObject(x, y).GetComponent<SpriteRenderer>().sprite = FlatMountains[Random.Range(0, FlatMountains.Length - 1)]; } else { tilemap.GetTileGameObject(x, y).GetComponent<SpriteRenderer>().sprite = Mountains[tile]; } if (Perlin.CanPlaceDoor && (tile == (int)TileDir.N || tile == (int)TileDir.S || tile == (int)TileDir.E || tile == (int)TileDir.W)) { var go = Instantiate(Perlin.DoorHackGameObject); go.transform.position = tilemap.GetTileGameObject(x, y).transform.position; go.transform.position = new Vector3(go.transform.position.x, go.transform.position.y, ZlayerManager.GetZFromY(go.transform.position)); // tilemap.AddLater_hack(x, y, go); print("door placed"); Perlin.CanPlaceDoor = false; // translate hack switch (tile) { case (int)TileDir.N: go.transform.Translate(Vector3.up); break; case (int)TileDir.S: go.transform.Translate(Vector3.down); break; case (int)TileDir.E: go.transform.Translate(Vector3.left); break; case (int)TileDir.W: go.transform.Translate(Vector3.right); break; default: break; } } continue; } // normals: int value = GetAssetNameBitmaskNoStr(x, y, tilemap, type); if (IsImplemented(type)) tilemap.GetTileGameObject(x, y).GetComponent<SpriteRenderer>().sprite = _textures2[type][(Random.Range(0, GetAssetCount(type)))]; if (value == 15) // ei voi tulla enää reunoja { continue; } // lisää: reunat // 4-bit directions // North, west, east, south #if false if (tempIndex < temporarySecondLayer.Length - 1) { ObjectPool.instance.GetObjectForType("Border", true); string border = "GrassLand_"; if (IsImplemented(type)) { border = GetEnumName(type); } if ((value & (1 << 1 - 1)) == 0) // TODO: TEXTURES2 TÄNNE { temporarySecondLayer[tempIndex].GetComponent<SpriteRenderer>().sprite = _textures[border + "N0"]; temporarySecondLayer[tempIndex].SetActive(true); temporarySecondLayer[tempIndex].transform.position = new Vector3(x + offsetX, y + offsetY + 1); tempIndex++; } if ((value & (1 << 2 - 1)) == 0) { temporarySecondLayer[tempIndex].GetComponent<SpriteRenderer>().sprite = _textures[border + "W0"]; temporarySecondLayer[tempIndex].transform.position = new Vector3(x + offsetX - 1, y + offsetY); temporarySecondLayer[tempIndex].SetActive(true); tempIndex++; } if ((value & (1 << 3 - 1)) == 0) { temporarySecondLayer[tempIndex].GetComponent<SpriteRenderer>().sprite = _textures[border + "E0"]; temporarySecondLayer[tempIndex].transform.position = new Vector3(x + offsetX + 1, y + offsetY); temporarySecondLayer[tempIndex].SetActive(true); tempIndex++; } if ((value & (1 << 4 - 1)) == 0) { temporarySecondLayer[tempIndex].GetComponent<SpriteRenderer>().sprite = _textures[border + "S0"]; temporarySecondLayer[tempIndex].transform.position = new Vector3(x + offsetX, y + offsetY - 1); temporarySecondLayer[tempIndex].SetActive(true); tempIndex++; } #else string border = "GrassLand_"; if (IsImplemented(type)) { border = GetEnumName(type); } if ((value & (1 << 1 - 1)) == 0) // TODO: TEXTURES2 TÄNNE { var go = ObjectPool.instance.GetObjectForType(currentPool, false); go.GetComponent<SpriteRenderer>().sprite = _textures[border + "N0"]; go.transform.position = new Vector3(x + offsetX, y + offsetY + 1); go.transform.parent = _borders.transform; borders.Add(go); } if ((value & (1 << 2 - 1)) == 0) { var go = ObjectPool.instance.GetObjectForType(currentPool, false); go.GetComponent<SpriteRenderer>().sprite = _textures[border + "W0"]; go.transform.position = new Vector3(x + offsetX - 1, y + offsetY); go.transform.parent = _borders.transform; borders.Add(go); } if ((value & (1 << 3 - 1)) == 0) { var go = ObjectPool.instance.GetObjectForType(currentPool, false); go.GetComponent<SpriteRenderer>().sprite = _textures[border + "E0"]; go.transform.position = new Vector3(x + offsetX + 1, y + offsetY); go.transform.parent = _borders.transform; borders.Add(go); } if ((value & (1 << 4 - 1)) == 0) { var go = ObjectPool.instance.GetObjectForType(currentPool, false); go.GetComponent<SpriteRenderer>().sprite = _textures[border + "S0"]; go.transform.position = new Vector3(x + offsetX, y + offsetY - 1); go.transform.parent = _borders.transform; borders.Add(go); } #endif } } // tarkista rajat for (int i = 0; i < borders.Count; i++) { var border = borders[i]; if (offsetX > border.transform.position.x || offsetX + TileMap.TotalWidth < border.transform.position.x || offsetY > border.transform.position.y || offsetY + TileMap.TotalHeight < border.transform.position.y) { // border.transform.parent = null; border.transform.parent = null; ObjectPool.instance.PoolObject(border); borders.RemoveAt(i); i--; } } // f**k f**k }