예제 #1
0
 void DestroyedTile(Tile2D t)
 {
     if (nTile != null && nTile == t)
     {
         nTile = null;
     }
     if (eTile != null && eTile == t)
     {
         eTile = null;
     }
     if (sTile != null && sTile == t)
     {
         sTile = null;
     }
     if (wTile != null && wTile == t)
     {
         wTile = null;
     }
     if (nwTile != null && nwTile == t)
     {
         nwTile = null;
     }
     if (neTile != null && neTile == t)
     {
         neTile = null;
     }
     if (seTile != null && seTile == t)
     {
         seTile = null;
     }
     if (swTile != null && swTile == t)
     {
         swTile = null;
     }
 }
예제 #2
0
    public static Tile2D CreateTile(Sprite sprite, bool addCollider)
    {
        Tile2D         t  = null;
        GameObject     go = new GameObject();
        SpriteRenderer sr = go.AddComponent <SpriteRenderer>();

        go.AddComponent <Tile2D>();
        t = go.GetComponent <Tile2D>();
        if (sprite)
        {
            sr.sprite = sprite;
            Sprite[] sa = t.tileA = new Sprite[1];
            sa[0]   = sprite;
            go.name = sprite.name;
        }
        else
        {
            go.name = "New Tile2D";
        }
        if (addCollider)
        {
            go.AddComponent <BoxCollider2D>();
        }
        EditorUtility.SetDirty(t);
        return(t);
    }
예제 #3
0
    public void DrawCustomInspector()
    {
        Tile2D t = (Tile2D)target;

        EditorGUILayout.BeginHorizontal("Box");
        GUIStyle lab = new GUIStyle();

        lab.richText = true;
        GUILayout.Label("Correct sprite naming is required to auto-fill arrays\n\n<b>NAME_SEGMENT TYPE_NUMBER</b>\n\nExample:\nGRASS_C_4", lab);
        EditorGUILayout.EndHorizontal();
        if (GUILayout.Button("Find and apply sprite properties"))
        {
            t.transform.position = Vector3.one;
            Debug.Log(t);
            if (t.tileTexture == null)
            {
                Debug.LogError("TileTool2D: Assign Texture containing multiple Sprites to [Tile Texture] property. (Texture must be in Resources folder)");
                return;
            }

            if (t.tileName == "")
            {
                Debug.LogWarning("TileTool2D: Assign Sprite Name to look for in the Tile Name property\nTrying to use texture name: " + t.tileTexture.name);
                t.tileName = t.tileTexture.name;
            }

            Texture  tex     = t.tileTexture;
            Sprite[] sprites = Resources.LoadAll <Sprite>(tex.name);
            Fill(sprites, t, true, true);
        }
    }
예제 #4
0
    void TileSelectGUI()
    {
        EditorGUILayout.LabelField("TileTool2D Tile", GUILayout.Width(100f));
        gTile = (GameObject)EditorGUILayout.ObjectField(gTile, typeof(GameObject), false, GUILayout.Width(175f));

        GUILayout.FlexibleSpace();

        if (GUILayout.Button("Create Tile", GUILayout.Width(120), GUILayout.Height(18)))
        {
            Tile2D oldTile;
            oldTile = PrefabCreator.CreateTile(null, false);
            String path = null;
            if (Directory.Exists("Assets/TileTool2D/Tiles/Wizard Tiles/"))
            {
                path = SaveFile("Assets/TileTool2D/Tiles/Wizard Tiles/", oldTile.transform.name + "", "prefab");
            }
            else
            {
                path = SaveFile("Assets/", oldTile.transform.name + "", "prefab");
            }

            if (path != null)
            {
                var asset = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject));
                if (asset)
                {
                    asset = PrefabUtility.ReplacePrefab(oldTile.gameObject, (GameObject)AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)));
                }
                else
                {
                    asset = PrefabUtility.CreatePrefab(path, oldTile.gameObject);
                }
                string spritePath = AssetDatabase.GetAssetPath(asset);
                gTile = (GameObject)AssetDatabase.LoadAssetAtPath(spritePath, typeof(GameObject));
            }
            DestroyImmediate(oldTile.gameObject);
        }



        if (gTile && GUI.changed)
        {
            tile = (Tile2D)gTile.GetComponent <Tile2D>();
        }
        else if (!gTile)
        {
            tile = null;
        }
        GUI.color = Color.white;
    }
예제 #5
0
 private void GenerateTiles()
 {
     for (int row = 0; row < mapSize.y; row++)
     {
         for (int column = 0; column < mapSize.x; column++)
         {
             int    randomTileIndex = (int)Random.Range(0, tilePrefabs.Length);
             Tile2D newTile         = Instantiate(tilePrefabs[randomTileIndex]);
             newTile.transform.position = new Vector3(
                 x: column * tileSize,
                 y: 0,
                 z: row * tileSize);
             newTile.transform.SetParent(this.transform);//Asigna el nuevo objeto al transform del MapGenerator
         }
     }
 }
예제 #6
0
        public ActionStatus Move(Direction direction)
        {
            var destinationPoint = Location;

            if (direction == Direction.West)
            {
                destinationPoint += new Point2D(-1, 0);
            }
            else if (direction == Direction.East)
            {
                destinationPoint += new Point2D(1, 0);
            }
            else if (direction == Direction.North)
            {
                destinationPoint += new Point2D(0, -1);
            }
            else if (direction == Direction.South)
            {
                destinationPoint += new Point2D(0, 1);
            }

            var lockRect = new Rectangle2D(Location, destinationPoint);

            using (var map = LockRect(Point2D.Zero, lockRect))
            {
                if (map[destinationPoint].Entity != null)
                {
                    return(new ActionStatus(ActionStatus.Status.InvalidAction, "Target cell contains an entity."));
                }

                var energyStatus = DeltaEnergy(-1);

                if (energyStatus.Success)
                {
                    var obj = map[Location];
                    map[Location]         = new Tile2D();
                    map[destinationPoint] = obj;
                }

                return(energyStatus);
            }
        }
예제 #7
0
    string currentTileSprite;                   // Current sprite type

    void Start()
    {
        tile = transform.GetComponent <Tile2D>();
        currentTileSprite = tile.tileSprite;
        if (animateAllVariations || animateLimitedVariations.Length > 0)
        {
            if (loop && randomStart)
            {
                animateVariationsCounter = Random.Range(0, 100);
                if (autoStart)
                {
                    Invoke("AnimateVariations", Random.value);
                }
                return;
            }
            if (autoStart)
            {
                Invoke("AnimateVariations", speed);
            }
        }
    }
예제 #8
0
    public void FindTiles(bool enablePhysics)
    {
        nwTile = neTile = seTile = swTile = nTile = eTile = sTile = wTile = null;
        float overLapSize = 2f * tileSize;
        int   layer       = cacheRenderer.sortingLayerID;

        if (enablePhysics)
        {
            if (layer != 0)
            {
                tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize), cacheRenderer.sortingLayerID);
            }
            else
            {
                tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize));
            }

            for (int i = 0; i < tiles.Length; i++)
            {
                Tile2D t = tiles[i].transform.GetComponent <Tile2D>();
                if (t != null && t != this)
                {
                    FindTile(t);
                }
            }
        }
        else
        {
            for (int i = 0; i < transform.parent.childCount; i++)
            {
                Tile2D t = transform.parent.GetChild(i).GetComponent <Tile2D>();
                if (t != null && t != this)
                {
                    FindTile(t);
                }
            }
        }
    }
예제 #9
0
    public void Beautify()
    {
        Tile2D nTileXXX = null;
        Tile2D eTileXXX = null;
        Tile2D sTileXXX = null;
        Tile2D wTileXXX = null;
        Tile2D neTileX  = null;
        Tile2D nwTileX  = null;
        Tile2D seTileX  = null;
        Tile2D swTileX  = null;

        if ((nTile != null) && nTile.tileType == tileType)
        {
            nTileXXX = nTile;
        }
        if ((eTile != null) && eTile.tileType == tileType)
        {
            eTileXXX = eTile;
        }
        if ((sTile != null) && sTile.tileType == tileType)
        {
            sTileXXX = sTile;
        }
        if ((wTile != null) && wTile.tileType == tileType)
        {
            wTileXXX = wTile;
        }
        if ((nwTile != null) && nwTile.tileType == tileType)
        {
            nwTileX = nwTile;
        }
        if ((neTile != null) && neTile.tileType == tileType)
        {
            neTileX = neTile;
        }
        if ((seTile != null) && seTile.tileType == tileType)
        {
            seTileX = seTile;
        }
        if ((swTile != null) && swTile.tileType == tileType)
        {
            swTileX = swTile;
        }

        if (passive || (nTileXXX == null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX == null) && t2.tileA.Length > 0)
        {
            cacheRenderer.sprite = t2.tileA[Random.Range(0, t2.tileA.Length)];
        }

        //Has a tile at all NESW sides
        if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX != null))
        {
            if (swTileX == null && seTileX == null && nwTileX == null && neTileX == null && t2.tileCNSWE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNSWE[Random.Range(0, t2.tileCNSWE.Length)];
                tileSprite           = "CNSWE";
                return;
            }

            if (nwTileX == null && neTileX == null && seTileX == null && t2.tileCENSW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCENSW[Random.Range(0, t2.tileCENSW.Length)];
                tileSprite           = "CENSW";
                return;
            }

            if (nwTileX == null && neTileX == null && swTileX == null && t2.tileCNWES.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNWES[Random.Range(0, t2.tileCNWES.Length)];
                tileSprite           = "CNWES";
                return;
            }

            if (neTileX == null && seTileX == null && swTileX == null && t2.tileCSWEN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSWEN[Random.Range(0, t2.tileCSWEN.Length)];
                tileSprite           = "CSWEN";
                return;
            }

            if (nwTileX == null && seTileX == null && swTileX == null && t2.tileCWNSE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCWNSE[Random.Range(0, t2.tileCWNSE.Length)];
                tileSprite           = "CWNSE";
                return;
            }

            if (nwTileX == null && seTileX == null && t2.tileCNWSE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNWSE[Random.Range(0, t2.tileCNWSE.Length)];
                tileSprite           = "CNWSE";
                return;
            }

            if (neTileX == null && swTileX == null && t2.tileCNESW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNESW[Random.Range(0, t2.tileCNESW.Length)];
                tileSprite           = "CNESW";
                return;
            }

            if (nwTileX == null && neTileX == null && t2.tileCNWE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNWE[Random.Range(0, t2.tileCNWE.Length)];
                tileSprite           = "CNWE";
                return;
            }

            if (seTileX == null && neTileX == null && t2.tileCENS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCENS[Random.Range(0, t2.tileCENS.Length)];
                tileSprite           = "CENS";
                return;
            }

            if (seTileX == null && swTileX == null && t2.tileCSWE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSWE[Random.Range(0, t2.tileCSWE.Length)];
                tileSprite           = "CSWE";
                return;
            }

            if (nwTileX == null && swTileX == null && t2.tileCWNS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCWNS[Random.Range(0, t2.tileCWNS.Length)];
                tileSprite           = "CWNS";
                return;
            }

            if (nwTileX == null && t2.tileCNW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNW[Random.Range(0, t2.tileCNW.Length)];
                tileSprite           = "CNW";
                return;
            }

            if (neTileX == null && t2.tileCNE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNE[Random.Range(0, t2.tileCNE.Length)];
                tileSprite           = "CNE";
                return;
            }

            if (seTileX == null && t2.tileCSE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSE[Random.Range(0, t2.tileCSE.Length)];
                tileSprite           = "CSE";
                return;
            }

            if (swTileX == null && t2.tileCSW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSW[Random.Range(0, t2.tileCSW.Length)];
                tileSprite           = "CSW";
                return;
            }

            if (t2.tileC.Length > 0)
            {
                cacheRenderer.sprite = t2.tileC[Random.Range(0, t2.tileC.Length)];
                tileSprite           = "C";
                return;
            }
        }

        if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX != null))
        {
            if (seTileX == null && swTileX == null && t2.tileCNS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNS[Random.Range(0, t2.tileCNS.Length)];
                tileSprite           = "CNS";
                return;
            }

            if (seTileX == null && t2.tileCNEE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNEE[Random.Range(0, t2.tileCNEE.Length)];
                tileSprite           = "CNEE";
                return;
            }

            if (swTileX == null && t2.tileCNSS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCNSS[Random.Range(0, t2.tileCNSS.Length)];
                tileSprite           = "CNSS";
                return;
            }

            if (t2.tileCN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCN[Random.Range(0, t2.tileCN.Length)];
                tileSprite           = "CN";
                return;
            }
        }

        if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX != null))
        {
            if (neTileX == null && nwTileX == null && t2.tileCSN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSN[Random.Range(0, t2.tileCSN.Length)];
                tileSprite           = "CSN";
                return;
            }

            if (nwTileX == null && t2.tileCSWW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSWW[Random.Range(0, t2.tileCSWW.Length)];
                tileSprite           = "CSWW";
                return;
            }

            if (neTileX == null && t2.tileCSEE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCSEE[Random.Range(0, t2.tileCSEE.Length)];
                tileSprite           = "CSEE";
                return;
            }

            if (t2.tileCS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCS[Random.Range(0, t2.tileCS.Length)];
                tileSprite           = "CS";
                return;
            }
        }

        if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX == null))
        {
            if (neTileX == null && seTileX == null && t2.tileCWE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCWE[Random.Range(0, t2.tileCWE.Length)];
                tileSprite           = "CWE";
                return;
            }

            if (neTileX == null && t2.tileCWNN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCWNN[Random.Range(0, t2.tileCWNN.Length)];
                tileSprite           = "CWNN";
                return;
            }

            if (seTileX == null && t2.tileCWSS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCWSS[Random.Range(0, t2.tileCWSS.Length)];
                tileSprite           = "CWSS";
                return;
            }

            if (t2.tileCW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCW[Random.Range(0, t2.tileCW.Length)];
                tileSprite           = "CW";
                return;
            }
        }

        if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX != null))
        {
            if (nwTileX == null && swTileX == null && t2.tileCEW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCEW[Random.Range(0, t2.tileCEW.Length)];
                tileSprite           = "CEW";
                return;
            }

            if (swTileX == null && t2.tileCESS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCESS[Random.Range(0, t2.tileCESS.Length)];
                tileSprite           = "CESS";
                return;
            }

            if (nwTileX == null && t2.tileCENN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCENN[Random.Range(0, t2.tileCENN.Length)];
                tileSprite           = "CENN";
                return;
            }

            if (t2.tileCE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileCE[Random.Range(0, t2.tileCE.Length)];
                tileSprite           = "CE";
                return;
            }
        }

        // Check if this is NWt2.tile
        if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX != null) && (wTileXXX == null))
        {
            if (seTileX == null && t2.tileNWSE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileNWSE[Random.Range(0, t2.tileNWSE.Length)];
                tileSprite           = "NWSE";
                return;
            }

            if (t2.tileNW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileNW[Random.Range(0, t2.tileNW.Length)];
                tileSprite           = "NW";
                return;
            }
        }

        // Check if this is NEt2.tile
        if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX != null))
        {
            if (swTileX == null && t2.tileNESW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileNESW[Random.Range(0, t2.tileNESW.Length)];
                tileSprite           = "NESW";
                return;
            }

            if (t2.tileNE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileNE[Random.Range(0, t2.tileNE.Length)];
                tileSprite           = "NE";
                return;
            }
        }

        // Check if this is SWt2.tile
        if ((nTileXXX != null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX == null))
        {
            if (neTileX == null && t2.tileSWNE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileSWNE[Random.Range(0, t2.tileSWNE.Length)];
                tileSprite           = "SWNE";
                return;
            }

            if (t2.tileSW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileSW[Random.Range(0, t2.tileSW.Length)];
                tileSprite           = "SW";
                return;
            }
        }

        // Check if this is SEt2.tile
        if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX != null))
        {
            if (nwTileX == null && t2.tileSENW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileSENW[Random.Range(0, t2.tileSENW.Length)];
                tileSprite           = "SENW";
                return;
            }

            if (t2.tileSE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileSE[Random.Range(0, t2.tileSE.Length)];
                tileSprite           = "SE";
                return;
            }
        }

        // Check if this is Nt2.tile
        if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX == null))
        {
            if (t2.tileN.Length > 0)
            {
                cacheRenderer.sprite = t2.tileN[Random.Range(0, t2.tileN.Length)];
                tileSprite           = "N";
                return;
            }
        }
        // Check if this is Et2.tile
        if ((nTileXXX == null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX != null))
        {
            if (t2.tileE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileE[Random.Range(0, t2.tileE.Length)];
                tileSprite           = "E";
                return;
            }
        }
        // Check if this is St2.tile
        if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX == null) && (wTileXXX == null))
        {
            if (t2.tileS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileS[Random.Range(0, t2.tileS.Length)];
                tileSprite           = "S";
                return;
            }
        }
        // Check if this is Wt2.tile
        if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX == null))
        {
            if (t2.tileW.Length > 0)
            {
                cacheRenderer.sprite = t2.tileW[Random.Range(0, t2.tileW.Length)];
                tileSprite           = "W";
                return;
            }
        }

        // Check if this is NSt2.tile
        if ((nTileXXX == null) && (eTileXXX != null) && (sTileXXX == null) && (wTileXXX != null))
        {
            if (t2.tileNS.Length > 0)
            {
                cacheRenderer.sprite = t2.tileNS[Random.Range(0, t2.tileNS.Length)];
                tileSprite           = "NS";
                return;
            }
        }
        // Check if this is WEt2.tile
        if ((nTileXXX != null) && (eTileXXX == null) && (sTileXXX != null) && (wTileXXX == null))
        {
            if (t2.tileWE.Length > 0)
            {
                cacheRenderer.sprite = t2.tileWE[Random.Range(0, t2.tileWE.Length)];
                tileSprite           = "WE";
                return;
            }
        }

        // Check if this is A tile
        if (t2.tileA.Length > 0)
        {
            cacheRenderer.sprite = t2.tileA[Random.Range(0, t2.tileA.Length)];
            tileSprite           = "A";
            return;
        }
    }
예제 #10
0
    public void FindTile(Tile2D t)
    {
        Transform tt = t.transform;

        if (tt.parent != transform.parent)
        {
            return;
        }
        // Check if tile is directly above
        if (tt.position.y == Round(transform.position.y + tileSize, tileSize) && tt.position.x == transform.position.x)
        {
            if (!t.passive)
            {
                nTile = t;
            }
#if UNITY_EDITOR
            if (nTile != null)
            {
                EditorUtility.SetDirty(nTile);
            }
#endif
            return;
        }

        // Check if tile is directly below
        if (tt.position.y == Round(transform.position.y - tileSize, tileSize) && tt.position.x == transform.position.x)
        {
            if (!t.passive)
            {
                sTile = t;
            }
#if UNITY_EDITOR
            if (sTile != null)
            {
                EditorUtility.SetDirty(sTile);
            }
#endif
            return;
        }

        // Check if tile is directly to the right
        if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == transform.position.y)
        {
            if (!t.passive)
            {
                eTile = t;
            }
#if UNITY_EDITOR
            if (eTile != null)
            {
                EditorUtility.SetDirty(eTile);
            }
#endif
            return;
        }

        // Check if tile is directly to the left
        if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == transform.position.y)
        {
            if (!t.passive)
            {
                wTile = t;
            }
#if UNITY_EDITOR
            if (wTile != null)
            {
                EditorUtility.SetDirty(wTile);
            }
#endif
            return;
        }

        // Check if tile is north west
        if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize))
        {
            if (!t.passive)
            {
                nwTile = t;
            }
#if UNITY_EDITOR
            if (nwTile != null)
            {
                EditorUtility.SetDirty(nwTile);
            }
#endif
            return;
        }

        // Check if tile is north east
        if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize))
        {
            if (!t.passive)
            {
                neTile = t;
            }
#if UNITY_EDITOR
            if (neTile != null)
            {
                EditorUtility.SetDirty(neTile);
            }
#endif
            return;
        }

        // Check if tile is south east
        if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize))
        {
            if (!t.passive)
            {
                seTile = t;
            }
#if UNITY_EDITOR
            if (seTile != null)
            {
                EditorUtility.SetDirty(seTile);
            }
#endif
            return;
        }

        // Check if tile is south west
        if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize))
        {
            if (!t.passive)
            {
                swTile = t;
            }
#if UNITY_EDITOR
            if (swTile != null)
            {
                EditorUtility.SetDirty(swTile);
            }
#endif
            return;
        }

        // Check if tile is overlapping (EDITOR ONLY)
        //#if UNITY_EDITOR
        //		if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) {
        //			tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
        //			//Undo.DestroyObjectImmediate(t.gameObject);
        //			//DestroyImmediate(t.gameObject);
        //			return;
        //		}
        //#endif
        //		// Check if tile is overlapping
        //		if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) {
        //			tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
        //			Destroy(t.gameObject);
        //			return;
        //		}
    }
예제 #11
0
    public void CheckOverlap(bool enableUndo, bool enablePhysics)
    {
        //Only useable in Editor
#if UNITY_EDITOR
        float overLapSize = 2f * tileSize;
        int   layer       = cacheRenderer.sortingLayerID;
        if (enablePhysics)
        {
            if (layer != 0)
            {
                tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize), cacheRenderer.sortingLayerID);
            }
            else
            {
                tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize));
            }

            for (int i = 0; i < tiles.Length; i++)
            {
                Tile2D t = tiles[i].GetComponent <Tile2D>();
                if (t != null)
                {
                    Transform tt = t.transform;
                    if (t != this && gameObject != null && tt.parent == transform.parent && tt.position.x == transform.position.x && tt.position.y == transform.position.y)
                    {
                        tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
                        if (enableUndo)
                        {
                            Undo.DestroyObjectImmediate(t.gameObject);
                        }
                        else
                        {
                            DestroyImmediate(t.gameObject);
                        }
                    }
                }
            }
        }
        else
        {
            for (int i = 0; i < transform.parent.childCount; i++)
            {
                Tile2D t = transform.parent.GetChild(i).GetComponent <Tile2D>();
                if (t != null)
                {
                    Transform tt = t.transform;
                    if (t != this && gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y)
                    {
                        tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
                        if (enableUndo)
                        {
                            Undo.DestroyObjectImmediate(t.gameObject);
                        }
                        else
                        {
                            DestroyImmediate(t.gameObject);
                        }
                    }
                }
            }
        }
#endif
    }
예제 #12
0
    public void AttackToTile(Tile2D tile)
    {
        GameObject newExplosion = Instantiate(attackPrefab);

        newExplosion.transform.position = tile.transform.position;
    }
예제 #13
0
 public void MoveToTile(Tile2D tile)
 {
     targetTile = tile;
 }
예제 #14
0
    public void Fill(Sprite[] sprites, Tile2D tile2DTarget, bool useName, bool warnings)
    {
        tile2DTarget.cacheRenderer = tile2DTarget.GetComponent <SpriteRenderer>();
        ArrayList fooList = new ArrayList();

        for (int i = 0; i < sprites.Length; i++)
        {
            string[] splitString = sprites[i].name.Split("_"[0]);
            if (!useName || splitString[0].ToUpper() == tile2DTarget.tileName.ToUpper())
            {
                fooList.Add(sprites[i]);
            }
        }
        if (tile2DTarget.tileType == "")
        {
            tile2DTarget.tileType = tile2DTarget.tileName;
        }
        string log  = "TileTool2D: Couldn't find MAIN tile types :";
        string olog = "TileTool2D: Couldn't find OPTIONAL tile types :";

        if (FindTiles(fooList, "A", "0").Length > 0)
        {
            tile2DTarget.tileA = FindTiles(fooList, "A", "0");
        }
        if (tile2DTarget.tileA.Length == 0)
        {
            log = log + " A";
        }
        tile2DTarget.tileC = FindTiles(fooList, "C", "4");
        if (tile2DTarget.tileC.Length == 0)
        {
            log = log + " - C";
        }
        tile2DTarget.tileCE = FindTiles(fooList, "CE", "15");
        if (tile2DTarget.tileCE.Length == 0)
        {
            log = log + " - CE";
        }
        tile2DTarget.tileCN = FindTiles(fooList, "CN", "5");
        if (tile2DTarget.tileCN.Length == 0)
        {
            log = log + " - CN";
        }
        tile2DTarget.tileCS = FindTiles(fooList, "CS", "6");
        if (tile2DTarget.tileCS.Length == 0)
        {
            log = log + " - CS";
        }
        tile2DTarget.tileCW = FindTiles(fooList, "CW", "14");
        if (tile2DTarget.tileCW.Length == 0)
        {
            log = log + " - CW";
        }
        tile2DTarget.tileE = FindTiles(fooList, "E", "3");
        if (tile2DTarget.tileE.Length == 0)
        {
            log = log + " - E";
        }
        tile2DTarget.tileN = FindTiles(fooList, "N", "9");
        if (tile2DTarget.tileN.Length == 0)
        {
            log = log + " - N";
        }
        tile2DTarget.tileNE = FindTiles(fooList, "NE", "8");
        if (tile2DTarget.tileNE.Length == 0)
        {
            log = log + " - NE";
        }
        tile2DTarget.tileNS = FindTiles(fooList, "NS", "2");
        if (tile2DTarget.tileNS.Length == 0)
        {
            log = log + " - NS";
        }
        tile2DTarget.tileNW = FindTiles(fooList, "NW", "7");
        if (tile2DTarget.tileNW.Length == 0)
        {
            log = log + " - NW";
        }
        tile2DTarget.tileS = FindTiles(fooList, "S", "23");
        if (tile2DTarget.tileS.Length == 0)
        {
            log = log + " - S";
        }
        tile2DTarget.tileSE = FindTiles(fooList, "SE", "22");
        if (tile2DTarget.tileSE.Length == 0)
        {
            log = log + " - SE";
        }
        tile2DTarget.tileSW = FindTiles(fooList, "SW", "21");
        if (tile2DTarget.tileSW.Length == 0)
        {
            log = log + " - SW";
        }
        tile2DTarget.tileW = FindTiles(fooList, "W", "1");
        if (tile2DTarget.tileW.Length == 0)
        {
            log = log + " - W";
        }
        tile2DTarget.tileWE = FindTiles(fooList, "WE", "16");
        if (tile2DTarget.tileWE.Length == 0)
        {
            log = log + " - WE";
        }
        tile2DTarget.tileCNW = FindTiles(fooList, "CNW", "26");
        if (tile2DTarget.tileCNW.Length == 0)
        {
            olog = olog + " CNW";
        }
        tile2DTarget.tileCNE = FindTiles(fooList, "CNE", "24");
        if (tile2DTarget.tileCNE.Length == 0)
        {
            olog = olog + " - CNE";
        }
        tile2DTarget.tileCSW = FindTiles(fooList, "CSW", "12");
        if (tile2DTarget.tileCSW.Length == 0)
        {
            olog = olog + " - CSW";
        }
        tile2DTarget.tileCSE = FindTiles(fooList, "CSE", "10");
        if (tile2DTarget.tileCSE.Length == 0)
        {
            olog = olog + " - CSE";
        }
        tile2DTarget.tileCNWE = FindTiles(fooList, "CNWE", "25");
        if (tile2DTarget.tileCNWE.Length == 0)
        {
            olog = olog + " - CNWE";
        }
        tile2DTarget.tileCENS = FindTiles(fooList, "CENS", "17");
        if (tile2DTarget.tileCENS.Length == 0)
        {
            olog = olog + " - CENS";
        }
        tile2DTarget.tileCSWE = FindTiles(fooList, "CSWE", "11");
        if (tile2DTarget.tileCSWE.Length == 0)
        {
            olog = olog + " - CSWE";
        }
        tile2DTarget.tileCWNS = FindTiles(fooList, "CWNS", "19");
        if (tile2DTarget.tileCWNS.Length == 0)
        {
            olog = olog + " - CWNS";
        }
        tile2DTarget.tileCNSWE = FindTiles(fooList, "CNSWE", "18");
        if (tile2DTarget.tileCNSWE.Length == 0)
        {
            olog = olog + " - CNSWE";
        }
        tile2DTarget.tileCWE = FindTiles(fooList, "CWE", "13");
        if (tile2DTarget.tileCWE.Length == 0)
        {
            olog = olog + " - CWE";
        }
        tile2DTarget.tileCNS = FindTiles(fooList, "CNS", "27");
        if (tile2DTarget.tileCNS.Length == 0)
        {
            olog = olog + " - CNS";
        }
        tile2DTarget.tileCSN = FindTiles(fooList, "CSN", "34");
        if (tile2DTarget.tileCSN.Length == 0)
        {
            olog = olog + " - CSN";
        }
        tile2DTarget.tileCEW = FindTiles(fooList, "CEW", "20");
        if (tile2DTarget.tileCEW.Length == 0)
        {
            olog = olog + " - CEW";
        }
        tile2DTarget.tileCWNN = FindTiles(fooList, "CWNN", "37");
        if (tile2DTarget.tileCWNN.Length == 0)
        {
            olog = olog + " - CWNN";
        }
        tile2DTarget.tileCNEE = FindTiles(fooList, "CNEE", "32");
        if (tile2DTarget.tileCNEE.Length == 0)
        {
            olog = olog + " - CNEE";
        }
        tile2DTarget.tileCSWW = FindTiles(fooList, "CSWW", "40");
        if (tile2DTarget.tileCSWW.Length == 0)
        {
            olog = olog + " - CSWW";
        }
        tile2DTarget.tileCESS = FindTiles(fooList, "CESS", "31");
        if (tile2DTarget.tileCESS.Length == 0)
        {
            olog = olog + " - CESS";
        }
        tile2DTarget.tileCNSS = FindTiles(fooList, "CNSS", "33");
        if (tile2DTarget.tileCNSS.Length == 0)
        {
            olog = olog + " - CNSS";
        }
        tile2DTarget.tileCENN = FindTiles(fooList, "CENN", "38");
        if (tile2DTarget.tileCENN.Length == 0)
        {
            olog = olog + " - CENN";
        }
        tile2DTarget.tileCWSS = FindTiles(fooList, "CWSS", "30");
        if (tile2DTarget.tileCWSS.Length == 0)
        {
            olog = olog + " - CWSS";
        }
        tile2DTarget.tileCSEE = FindTiles(fooList, "CSEE", "39");
        if (tile2DTarget.tileCSEE.Length == 0)
        {
            olog = olog + " - CSEE";
        }
        tile2DTarget.tileSENW = FindTiles(fooList, "SENW", "36");
        if (tile2DTarget.tileSENW.Length == 0)
        {
            olog = olog + " - SENW";
        }
        tile2DTarget.tileSWNE = FindTiles(fooList, "SWNE", "35");
        if (tile2DTarget.tileSWNE.Length == 0)
        {
            olog = olog + " - SWNE";
        }
        tile2DTarget.tileNESW = FindTiles(fooList, "NESW", "29");
        if (tile2DTarget.tileNESW.Length == 0)
        {
            olog = olog + " - NESW";
        }
        tile2DTarget.tileNWSE = FindTiles(fooList, "NWSE", "28");
        if (tile2DTarget.tileNWSE.Length == 0)
        {
            olog = olog + " - NWSE";
        }
        tile2DTarget.tileCENSW = FindTiles(fooList, "CENSW", "43");
        if (tile2DTarget.tileCENSW.Length == 0)
        {
            olog = olog + " - CENSW";
        }
        tile2DTarget.tileCNWES = FindTiles(fooList, "CNWES", "44");
        if (tile2DTarget.tileCNWES.Length == 0)
        {
            olog = olog + " - CNWES";
        }
        tile2DTarget.tileCSWEN = FindTiles(fooList, "CSWEN", "45");
        if (tile2DTarget.tileCSWEN.Length == 0)
        {
            olog = olog + " - CSWEN";
        }
        tile2DTarget.tileCWNSE = FindTiles(fooList, "CWNSE", "46");
        if (tile2DTarget.tileCWNSE.Length == 0)
        {
            olog = olog + " - CWNSE";
        }
        tile2DTarget.tileCNWSE = FindTiles(fooList, "CNWSE", "41");
        if (tile2DTarget.tileCNWSE.Length == 0)
        {
            olog = olog + " - CNWSE";
        }
        tile2DTarget.tileCNESW = FindTiles(fooList, "CNESW", "42");
        if (tile2DTarget.tileCNESW.Length == 0)
        {
            olog = olog + " - CNESW";
        }
        if (log != "TileTool2D: Couldn't find MAIN tile types :")
        {
            Debug.LogWarning(log);
        }
        if (warnings && log != "TileTool2D: Couldn't find MAIN tile types :")
        {
            Debug.LogWarning("\n<b> (Textures must be in the resource folder while auto detecting)</b>");
        }
        if (olog != "TileTool2D: Couldn't find OPTIONAL tile types :")
        {
            Debug.LogWarning(olog);
        }
        if (tile2DTarget.tileA.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileA[0];
        }
        else if (tile2DTarget.tileCN.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCN[0];
        }
        else if (tile2DTarget.tileCE.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCE[0];
        }
        else if (tile2DTarget.tileCS.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCS[0];
        }
        else if (tile2DTarget.tileCW.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileCW[0];
        }
        else if (tile2DTarget.tileC.Length > 0)
        {
            tile2DTarget.cacheRenderer.sprite = tile2DTarget.tileC[0];
        }
        else if (warnings)
        {
            Debug.LogWarning("Please assign default sprite to tile manually");
        }
        EditorUtility.SetDirty(tile2DTarget.gameObject);
        string spritePath = AssetDatabase.GetAssetPath(tile2DTarget.gameObject);

        AssetDatabase.ImportAsset(spritePath, ImportAssetOptions.ForceUpdate);
    }
예제 #15
0
	public void FindTiles() {
		nwTile = neTile = seTile = swTile= nTile = eTile = sTile = wTile = null;
	//// Previous version of neighbour tiles used physics check
	//	float overLapSize = 2.0f *tileSize;
	//	tiles = Physics2D.OverlapAreaAll(new Vector2(transform.position.x - overLapSize, transform.position.y - overLapSize), new Vector2(transform.position.x + overLapSize, transform.position.y + overLapSize));
	//	for (int i = 0; i < tiles.Length; i++) {
	//		Debug.Log(tiles[i].name);
	//		Tile2D t = tiles[i].transform.GetComponent<Tile2D>();
	//		if (t != this) FindTile(t);
	//	}
		for (int i = 0; i < transform.parent.childCount; i++) {
			Tile2D t = transform.parent.GetChild(i).GetComponent<Tile2D>();
			if (t != this) FindTile(t);
		}
	}
예제 #16
0
	public void FindTile(Tile2D t) {
		Transform tt = t.transform;
		if (tt.parent != transform.parent)
			return;

		// Check if tile is directly above
		if (tt.position.y == Round(transform.position.y + tileSize, tileSize) && tt.position.x == transform.position.x) {

			if (!t.passive) nTile = t;
#if UNITY_EDITOR
			if (nTile != null) EditorUtility.SetDirty(nTile);
#endif
			return;
		}

		// Check if tile is directly below
		if (tt.position.y == Round(transform.position.y - tileSize, tileSize) && tt.position.x == transform.position.x) {
			if (!t.passive) sTile = t;
#if UNITY_EDITOR
			if (sTile != null) EditorUtility.SetDirty(sTile);
#endif
			return;
		}

		// Check if tile is directly to the right
		if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == transform.position.y) {
			if (!t.passive) eTile = t;
#if UNITY_EDITOR
			if (eTile != null) EditorUtility.SetDirty(eTile);
#endif
			return;
		}

		// Check if tile is directly to the left
		if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == transform.position.y) {
			if (!t.passive) wTile = t;
#if UNITY_EDITOR
			if (wTile != null) EditorUtility.SetDirty(wTile);
#endif
			return;
		}

		// Check if tile is north west
		if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) {
			if (!t.passive) nwTile = t;
#if UNITY_EDITOR
			if (nwTile != null) EditorUtility.SetDirty(nwTile);
#endif
			return;
		}

		// Check if tile is north east
		if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y + tileSize, tileSize)) {
			if (!t.passive) neTile = t;
#if UNITY_EDITOR
			if (neTile != null) EditorUtility.SetDirty(neTile);
#endif
			return;
		}

		// Check if tile is south east
		if (tt.position.x == Round(transform.position.x + tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) {
			if (!t.passive) seTile = t;
#if UNITY_EDITOR
			if (seTile != null) EditorUtility.SetDirty(seTile);
#endif
			return;
		}

		// Check if tile is south west
		if (tt.position.x == Round(transform.position.x - tileSize, tileSize) && tt.position.y == Round(transform.position.y - tileSize, tileSize)) {
			if (!t.passive) swTile = t;
#if UNITY_EDITOR
			if (swTile != null) EditorUtility.SetDirty(swTile);
#endif
			return;
		}

		// Check if tile is overlapping (EDITOR ONLY)
#if UNITY_EDITOR
		if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) {
			tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
			Undo.DestroyObjectImmediate(t.gameObject);
			//DestroyImmediate(t.gameObject);
			return;
		}
#endif
		// Check if tile is overlapping
		if (gameObject != null && tt.position.x == transform.position.x && tt.position.y == transform.position.y) {
			tt.position = new Vector3(9999999.999999f, 9999999.999999f, 0);
			Destroy(t.gameObject);
			return;
		}
	}
예제 #17
0
 public void NewArray(string s, int length, Tile2D tileTarget)
 {
     if (s == "tileA")
     {
         tileTarget.tileA = new Sprite[length];
     }
     else if (s == "tileC")
     {
         tileTarget.tileC = new Sprite[length];
     }
     else if (s == "tileCE")
     {
         tileTarget.tileCE = new Sprite[length];
     }
     else if (s == "tileCN")
     {
         tileTarget.tileCN = new Sprite[length];
     }
     else if (s == "tileCS")
     {
         tileTarget.tileCS = new Sprite[length];
     }
     else if (s == "tileCW")
     {
         tileTarget.tileCW = new Sprite[length];
     }
     else if (s == "tileE")
     {
         tileTarget.tileE = new Sprite[length];
     }
     else if (s == "tileN")
     {
         tileTarget.tileN = new Sprite[length];
     }
     else if (s == "tileNE")
     {
         tileTarget.tileNE = new Sprite[length];
     }
     else if (s == "tileNS")
     {
         tileTarget.tileNS = new Sprite[length];
     }
     else if (s == "tileNW")
     {
         tileTarget.tileNW = new Sprite[length];
     }
     else if (s == "tileS")
     {
         tileTarget.tileS = new Sprite[length];
     }
     else if (s == "tileSE")
     {
         tileTarget.tileSE = new Sprite[length];
     }
     else if (s == "tileSW")
     {
         tileTarget.tileSW = new Sprite[length];
     }
     else if (s == "tileW")
     {
         tileTarget.tileW = new Sprite[length];
     }
     else if (s == "tileWE")
     {
         tileTarget.tileWE = new Sprite[length];
     }
     else if (s == "tileCNW")
     {
         tileTarget.tileCNW = new Sprite[length];
     }
     else if (s == "tileCNE")
     {
         tileTarget.tileCNE = new Sprite[length];
     }
     else if (s == "tileCSE")
     {
         tileTarget.tileCSE = new Sprite[length];
     }
     else if (s == "tileCSW")
     {
         tileTarget.tileCSW = new Sprite[length];
     }
     else if (s == "tileCWE")
     {
         tileTarget.tileCWE = new Sprite[length];
     }
     else if (s == "tileCNS")
     {
         tileTarget.tileCNS = new Sprite[length];
     }
     else if (s == "tileCSN")
     {
         tileTarget.tileCSN = new Sprite[length];
     }
     else if (s == "tileCEW")
     {
         tileTarget.tileCEW = new Sprite[length];
     }
     else if (s == "tileCWNN")
     {
         tileTarget.tileCWNN = new Sprite[length];
     }
     else if (s == "tileCNEE")
     {
         tileTarget.tileCNEE = new Sprite[length];
     }
     else if (s == "tileCSWW")
     {
         tileTarget.tileCSWW = new Sprite[length];
     }
     else if (s == "tileCESS")
     {
         tileTarget.tileCESS = new Sprite[length];
     }
     else if (s == "tileCNSS")
     {
         tileTarget.tileCNSS = new Sprite[length];
     }
     else if (s == "tileCENN")
     {
         tileTarget.tileCENN = new Sprite[length];
     }
     else if (s == "tileCWSS")
     {
         tileTarget.tileCWSS = new Sprite[length];
     }
     else if (s == "tileCSEE")
     {
         tileTarget.tileCSEE = new Sprite[length];
     }
     else if (s == "tileSENW")
     {
         tileTarget.tileSENW = new Sprite[length];
     }
     else if (s == "tileSWNE")
     {
         tileTarget.tileSWNE = new Sprite[length];
     }
     else if (s == "tileNESW")
     {
         tileTarget.tileNESW = new Sprite[length];
     }
     else if (s == "tileNWSE")
     {
         tileTarget.tileNWSE = new Sprite[length];
     }
     else if (s == "tileCNWE")
     {
         tileTarget.tileCNWE = new Sprite[length];
     }
     else if (s == "tileCENS")
     {
         tileTarget.tileCENS = new Sprite[length];
     }
     else if (s == "tileCSWE")
     {
         tileTarget.tileCSWE = new Sprite[length];
     }
     else if (s == "tileCWNS")
     {
         tileTarget.tileCWNS = new Sprite[length];
     }
     else if (s == "tileCENSW")
     {
         tileTarget.tileCENSW = new Sprite[length];
     }
     else if (s == "tileCSWEN")
     {
         tileTarget.tileCSWEN = new Sprite[length];
     }
     else if (s == "tileCNWES")
     {
         tileTarget.tileCNWES = new Sprite[length];
     }
     else if (s == "tileCWNSE")
     {
         tileTarget.tileCWNSE = new Sprite[length];
     }
     else if (s == "tileCNWSE")
     {
         tileTarget.tileCNWSE = new Sprite[length];
     }
     else if (s == "tileCNESW")
     {
         tileTarget.tileCNESW = new Sprite[length];
     }
     else if (s == "tileCNSWE")
     {
         tileTarget.tileCNSWE = new Sprite[length];
     }
 }