Example #1
0
    public int[] calculateIndex(Vector2 k)
    {
        Vector3 j = map.GetTileGameObject(0, 0).transform.position;
        Vector2 i = j;

        k += new Vector2(0.5f, 0.5f);
        Vector2 temp = k - i;

        int[] h = new int[2];
        h[0] = (int)temp.x;
        h[1] = (int)temp.y;


        return(h);
    }
Example #2
0
    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
    }