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); } } }
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(); }