Exemple #1
0
        //Spawns All THe Tiles
        private void SpawnAllTiles()
        {
            float columnSwitch = 1;

            //temporary list to hold all the tiles
            List <List <BaseTileController> > allTiles = new List <List <BaseTileController> >();

            //Create The Tile Parent Object
            if (m_tilesParentObject != null)
            {
                DestroyImmediate(m_tilesParentObject);
                m_tilesParentObject = new GameObject("Tiles");
                m_tilesParentObject.transform.SetParent(m_groundParentObject.transform);
            }
            else
            {
                m_tilesParentObject = new GameObject("Tiles");
                m_tilesParentObject.transform.SetParent(m_groundParentObject.transform);
            }

            //Loop over the columns
            for (int i = 0; i < m_desiredTileGrid.y; i++)
            {
                columnSwitch *= -1;
                float sideSwitch = 1;

                float columnXOffset = (i * (m_requiredOffset.x * m_desiredScale.x + (m_requiredOffset.x * m_desiredScale.x / 1.525f)));

                //temporary list to hold 1 column of tiles
                List <BaseTileController> tiles = new List <BaseTileController>();

                //Loop over each tile in each column
                for (int z = 0; z < m_desiredTileGrid.x; z++)
                {
                    GameObject newTile = Instantiate(m_tilePrefab, new Vector3((z * ((m_requiredOffset.x * m_desiredScale.x) + (m_requiredOffset.x * m_desiredScale.x / 5.7f)) + (columnXOffset / 2)), (i * (m_desiredScale.y * m_requiredOffset.y * 2)), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform);
                    newTile.transform.localScale = m_desiredScale;

                    //if we are debugging change the material to the debug material
                    if ((sideSwitch * columnSwitch) == 1)
                    {
                        newTile.GetComponentInChildren <SpriteRenderer>().color = new Color(1, 0, 0, 0.3f);
                    }
                    else
                    {
                        newTile.GetComponentInChildren <SpriteRenderer>().color = new Color(0, 0, 1, 0.3f);
                    }

                    //every loop swap the side to give a checkerboard effect tot he grid while debugging
                    sideSwitch *= -1;

                    BaseTileController newTileController = newTile.GetComponent <BaseTileController>();
                    if (newTileController != null)
                    {
                        tiles.Add(newTileController);
                    }
                }

                allTiles.Add(tiles);
            }

            LinkTiles(allTiles);

            m_tilesParentObject.transform.localPosition = m_desiredGroundOffset;
        }
Exemple #2
0
        //Spawns All THe Tiles
        private void SpawnAllTiles()
        {
            GameObject groundTile = (m_tileAreaObject == null) ? m_groundAreaObject : m_tileAreaObject;

            float columnSwitch = 1;

            //temporary list to hold all the tiles
            List <List <BaseTileController> > allTiles = new List <List <BaseTileController> >();

            //Create The Tile Parent Object
            if (m_tilesParentObject != null)
            {
                DestroyImmediate(m_tilesParentObject);
                m_tilesParentObject = new GameObject("Tiles");
                m_tilesParentObject.transform.SetParent(m_groundParentObject.transform);
            }
            else
            {
                m_tilesParentObject = new GameObject("Tiles");
                m_tilesParentObject.transform.SetParent(m_groundParentObject.transform);
            }

            //Correct the tile parent object to the center of all the tiles
            m_tilesParentObject.transform.position += new Vector3((-m_requiredSize.x / 2) + m_areaSize.x / 2, -(m_requiredSize.y / 2) + m_areaSize.y / 2, 0);

            //Loop over the columns
            for (int i = 0; i < m_desiredTileGrid.y; i++)
            {
                columnSwitch *= -1;
                float sideSwitch = 1;

                //temporary list to hold 1 column of tiles
                List <BaseTileController> tiles = new List <BaseTileController>();

                int sequenceID = 0;

                //Loop over each tile in each column
                for (int z = 0; z < m_desiredTileGrid.x; z++)
                {
                    float offset = z * m_requiredSize.x;

                    GameObject newTile = null;

                    //if we are debugging change the material to the debug material
                    if ((sideSwitch * columnSwitch) == 1)
                    {
                        if (m_fisrtTileVariatons.Count == 0)
                        {
                            newTile = Instantiate(m_tilePrefab, new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform);
                            newTile.GetComponentInChildren <SpriteRenderer>().color = Color.cyan;
                            newTile.transform.localScale = m_requiredScale;
                        }
                        else
                        {
                            Debug.Log("Sequence ID: " + sequenceID);

                            newTile = Instantiate(m_fisrtTileVariatons[sequenceID], new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform);
                            newTile.transform.localScale = m_requiredScale;
                        }
                    }
                    else
                    {
                        if (m_secondTileVariations.Count == 0)
                        {
                            newTile = Instantiate(m_tilePrefab, new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform);
                            newTile.transform.localScale = m_requiredScale;
                            newTile.GetComponentInChildren <SpriteRenderer>().color = Color.grey;
                        }
                        else
                        {
                            newTile = Instantiate(m_secondTileVariations[sequenceID], new Vector3(z * m_requiredSize.x, (i * m_requiredSize.y), 0), Quaternion.Euler(m_desiredTileRotation), m_tilesParentObject.transform);
                            newTile.transform.localScale = m_requiredScale;
                        }
                    }

                    if (sequenceID < m_fisrtTileVariatons.Count - 1)
                    {
                        sequenceID++;
                    }
                    else
                    {
                        sequenceID = 0;
                    }



                    //every loop swap the side to give a checkerboard effect tot he grid while debugging
                    sideSwitch *= -1;

                    BaseTileController newTileController = newTile.GetComponent <BaseTileController>();
                    if (newTileController != null)
                    {
                        newTileController.Data.ColumnID = i;
                        newTileController.Data.RowID    = z;
                        tiles.Add(newTileController);
                    }
                }

                allTiles.Add(tiles);
            }

            //LinkTiles(allTiles);

            Vector3 offsetedParent = new Vector3();

            offsetedParent = groundTile.transform.position;

            m_tilesParentObject.transform.position = offsetedParent;

            m_tilesParentObject.transform.position += m_desiredGroundOffset;
        }