Exemple #1
0
    void Start()
    {
        int levelIndex = (bypassPrefsLevel) ? 1 : PlayerPrefs.GetInt("Level");

        if (initRowCount != 0 && initColumnCount != 0)
        {
            GridElementLevel level = new GridElementLevel();
            level.columns  = initColumnCount;
            level.rows     = initRowCount;
            level.elements = new List <Element>();
            for (int i = 0; i < level.rows * level.columns; i++)
            {
                Element newElement = Instantiate(UnitCube);
                level.elements.Add(newElement);
            }
            SetGrid(level);
        }
        else if (SerializeJson.LevelExists(levelIndex))
        {
            LoadLevel(levelIndex);
            if (editorContainer != null)
            {
                editorContainer.SetActive(false);
            }
        }
    }
Exemple #2
0
    public void SetGrid(GridElementLevel level)
    {
        if (level == null)
        {
            return;
        }

        Player.Instance.transform.parent = transform;
        if (level.columns * level.rows != level.elements.Count)
        {
            Debug.LogError("Corrupted Level");
            return;
        }
        loadedLevel = level;
        for (int i = 0; i < level.rows; i++)
        {
            for (int j = 0; j < level.columns; j++)
            {
                int     elementIndex = (i * level.columns) + j;
                Element element      = level.elements[elementIndex];
                element.index                   = elementIndex;
                element.transform.parent        = transform;
                element.transform.localPosition = new Vector3(j, 0, -i);

                if (element.isWall)
                {
                    element.transform.localPosition = element.transform.localPosition.With(y: .125f);
                    element.transform.Scale(element.transform.localScale.With(y: 1.25f), 0f);
                    element.transform.Color(Color.gray, 0f);
                }
                else
                {
                    element.transform.localPosition = element.transform.localPosition.With(y: 0f);
                    element.transform.Scale(element.transform.localScale.With(y: 1f), 0f);
                    element.transform.Color(Color.white, 0f);
                }

                if (element.isInvisible)
                {
                    element.transform.Alpha(0f, 0f);
                    element.isWall = true;
                }
                else
                {
                    element.transform.Alpha(1f, 0f);
                }

                if (element.isStartPosition)
                {
                    element.SetCollected();
                    Player.Instance.SetCurrentPos(element.index);
                    Player.Instance.transform.localPosition = element.transform.localPosition.With(y: 1f);
                }
            }
        }
        transform.position = new Vector3(-(level.columns * .5f) + .5f, transform.position.y, (level.rows / 2) - .5f);
        CameraMan.Instance.MoveCameraToFit(Mathf.Max(loadedLevel.columns, loadedLevel.rows));
        GameManager.Instance.DisplayCurrentLevel();
    }