Exemple #1
0
        public void Init(LevelPrefabs prefabs)
        {
            m_weapon = GameObject.Instantiate(prefabs.HandCannon);
            m_weapon.transform.SetParent(m_handTransform, false);

            m_initialised = true;
        }
Exemple #2
0
    public static void GenerateSquares(Transform transform, bool useColumns, LevelPrefabs prefabs, GameObject squarePrefab,
                                       Vector3[,,] coordinates, MazeSquare[,,] squares)
    {
        for (int z = 0; z < squares.GetLength(2); z++)
        {
            GameObject layer = NewSection("Layer", z, transform);

            for (int i = 0; i < squares.GetLength(0); i++)
            {
                GameObject row = NewSection("Row", i, layer.transform);

                for (int j = 0; j < squares.GetLength(1); j++)
                {
                    if (squares[i, j, z] == null)
                    {
                        continue;
                    }

                    MazeSurveyLogic.Survey(i, j, z, squares);

                    #region Setup Square in Hierarchy
                    squares[i, j, z].layout = BuildLayout(useColumns, prefabs, squarePrefab, squares[i, j, z].adjacents);
                    GameObject sq = squares[i, j, z].layout;

                    sq.transform.parent        = transform;
                    sq.transform.localPosition = coordinates[i, j, z];
                    sq.transform.parent        = row.transform;

                    sq.name = "Sq" + (j + 1);
                    #endregion
                }
            }
        }
    }
Exemple #3
0
    public static void GenerateSquares(Transform transform, bool useColumns, LevelPrefabs prefabs, GameObject squarePrefab,
                                       Vector3[,] coordinates, Maze2DSquare[,] squares)
    {
        for (int i = 0; i < squares.GetLength(0); i++)
        {
            GameObject row = new GameObject("Row" + (i + 1));
            row.transform.parent   = transform;
            row.transform.position = transform.position;

            for (int j = 0; j < squares.GetLength(1); j++)
            {
                if (squares[i, j] == null)
                {
                    continue;
                }

                Survey(i, j, squares);

                #region Setup Square in Hierarchy
                squares[i, j].layout = BuildLayout(useColumns, prefabs, squarePrefab, squares[i, j].adjacents);
                GameObject sq = squares[i, j].layout;

                sq.transform.parent        = transform;
                sq.transform.localPosition = coordinates[i, j];
                sq.transform.parent        = row.transform;

                sq.name = "Sq" + (j + 1);
                #endregion
            }
        }
    }
Exemple #4
0
    // Start is called before the first frame update
    void Start()
    {
        prefabs = GetComponent <LevelPrefabs>();
        outlets = new SprawlerSquare[2];

        ReloadMaze();
    }
Exemple #5
0
    static GameObject BuildLayout(bool useColumns, LevelPrefabs prefabs, GameObject sqPrefab, MazeSquare[] adjacents)
    {
        GameObject output = Object.Instantiate(sqPrefab);

        //Store the four corners
        Transform[] corners = new Transform[CORNERS];
        for (int i = 0; i < corners.Length; i++)
        {
            corners[i] = output.transform.GetChild(i);
        }

        for (int i = 0; i < CORNERS; i++)
        {
            MazeSquare next       = adjacents[i];
            MazeSquare previous   = (i > 0) ? adjacents[i - 1] : adjacents[CORNERS - 1];
            GameObject edgePrefab = prefabs.wall;

            //Columns. If two adjacent sides have MazeSquares, put a column on the corner.
            if (useColumns && next != null && previous != null)
            {
                //Prevent duplication. Maze construction goes west to east and south to north, so check west adjacent square
                //  and south adjacent square for where they could already have columns.
                if (i == 0 && previous.adjacents[0] != null)
                {
                    continue;
                }
                else if (i > 1 && next.adjacents[i - 1] != null)
                {
                    continue;
                }

                edgePrefab = prefabs.column;
            }
            else if (next != null)
            {
                continue;
            }

            Object.Instantiate(edgePrefab, corners[i]);
        }

        //4 is up and 5 is down
        if (adjacents[4] == null || adjacents[4].isOutlet)
        {
            Object.Instantiate(prefabs.ceiling, output.transform.GetChild(4));
        }
        if (adjacents[5] == null || adjacents[5].isOutlet)
        {
            Object.Instantiate(prefabs.floor, output.transform.GetChild(5));
        }

        return(output);
    }
Exemple #6
0
    public static void SetOutlet(bool useColumns, LevelPrefabs prefabs, GameObject outlet, out Maze2DSquare outletSq, Maze2DSquare[,] squares)
    {
        List <Maze2DSquare> vacancyList = new List <Maze2DSquare>();

        vacancyList = FillVacancyList(vacancyList, squares);

        int          outletIndex = Random.Range(0, vacancyList.Count);
        Maze2DSquare square      = vacancyList[outletIndex];
        Maze2DSquare tempSq;

        //Identify and store the root square's open adjacent squares
        List <int>          indices       = new List <int>();
        List <Maze2DSquare> openAdjacents = new List <Maze2DSquare>();

        for (int i = 0; i < square.adjacents.Length; i++)
        {
            if (square.adjacents[i] == null)
            {
                openAdjacents.Add(square.adjacents[i]);
                indices.Add(i);
            }
        }

        int rand = Random.Range(0, openAdjacents.Count);

        SurveyOutlet(square, indices[rand], squares, out tempSq);
        outletSq = tempSq;

        //Replace wall with outlet;
        if (square.layout.transform.GetChild(indices[rand]).childCount > 0)
        {
            Object.Destroy(square.layout.transform.GetChild(indices[rand]).GetChild(0).gameObject);
        }
        outlet = Object.Instantiate(outlet, square.layout.transform.GetChild(indices[rand]));
        ZeroOut(outlet);
        outletSq.layout = outlet;

        //Add columns
        if (useColumns && prefabs.column != null)
        {
            Transform  t   = square.layout.transform;
            GameObject col = Object.Instantiate(prefabs.column, t.GetChild(indices[rand]));
            ZeroOut(col);
            col = (indices[rand] < 3) ? Object.Instantiate(prefabs.column, t.GetChild(indices[rand] + 1)) :
                  Object.Instantiate(prefabs.column, t.GetChild(0));
            ZeroOut(col);
        }

        if (vacancyList.Count > 1)
        {
            vacancyList.RemoveAt(outletIndex);
        }
    }
Exemple #7
0
    public static GameObject BuildLayout(bool useColumns, LevelPrefabs prefabs, GameObject sqPrefab, Maze2DSquare[] adjacents)
    {
        int num2D = 4;

        GameObject output = Object.Instantiate(sqPrefab);

        //Store the four corners
        Transform[] corners = new Transform[num2D];
        for (int i = 0; i < corners.Length; i++)
        {
            corners[i] = output.transform.GetChild(i);
        }

        for (int i = 0; i < adjacents.Length; i++)
        {
            Maze2DSquare next       = adjacents[i];
            Maze2DSquare previous   = (i > 0) ? adjacents[i - 1] : adjacents[num2D - 1];
            GameObject   edgePrefab = prefabs.wall;

            if (next != null && previous != null && useColumns)
            {
                edgePrefab = prefabs.column;
            }
            else if (next != null)
            {
                continue;
            }

            if (edgePrefab != null)
            {
                Object.Instantiate(edgePrefab, corners[i]);
            }
        }
        if (prefabs.ceiling != null)
        {
            Object.Instantiate(prefabs.ceiling, output.transform.GetChild(4));
        }
        if (prefabs.floor != null)
        {
            Object.Instantiate(prefabs.floor, output.transform.GetChild(5));
        }

        return(output);
    }
Exemple #8
0
    public static GameObject BuildSquare(SprawlerSquare square, LevelPrefabs prefabs, GameObject sqPrefab)
    {
        GameObject output = Object.Instantiate(sqPrefab);

        GameObject currentPrefab;

        for (int i = 0; i < square.adjacents.Length; i++)
        {
            currentPrefab = i < 4 ? prefabs.wall :
                            i == 4 ? prefabs.ceiling : prefabs.floor;

            if (square.adjacents[i] == null)
            {
                Object.Instantiate(currentPrefab, output.transform.GetChild(i));
            }
        }

        return(output);
    }
Exemple #9
0
    public static void SetOutlet(bool useColumns, LevelPrefabs prefabs, GameObject outlet, out MazeSquare outletSq, MazeSquare[,,] squares)
    {
        List <MazeSquare> vacancyList = new List <MazeSquare>();

        vacancyList = FillVacancyList(vacancyList, squares);

        int        outletIndex = Random.Range(0, vacancyList.Count);
        MazeSquare square      = vacancyList[outletIndex];
        MazeSquare tempSq;

        //Identify and store the root square's open adjacent squares
        List <int>        indices       = new List <int>();
        List <MazeSquare> openAdjacents = new List <MazeSquare>();

        for (int i = 0; i < CORNERS; i++)
        {
            if (square.adjacents[i] == null)
            {
                openAdjacents.Add(square.adjacents[i]);
                indices.Add(i);
            }
        }

        int rand = Random.Range(0, openAdjacents.Count);

        MazeSurveyLogic.SurveyOutlet(square, indices[rand], squares, out tempSq);
        outletSq = tempSq;

        //Replace wall with outlet
        Transform wall = square.layout.transform.GetChild(indices[rand]);

        Object.Destroy(wall.GetChild(0).gameObject);
        outlet = Object.Instantiate(outlet, wall);
        ZeroOut(outlet);
        outletSq.layout = outlet;

        if (vacancyList.Count > 1)
        {
            vacancyList.RemoveAt(outletIndex);
        }
    }
Exemple #10
0
 private void Start()
 {
     connectLogic = GetComponent <ConnectLogic>();
     levelPrefabs = GetComponent <LevelPrefabs>();
 }
Exemple #11
0
 private void Awake()
 {
     levelPrefabs = GetComponent <LevelPrefabs>();
 }
Exemple #12
0
 private void Start()
 {
     levelPrefabs = GetComponent <LevelPrefabs>();
 }