public void AddLevels(List <LevelsContainer> levelsContainer, List <SaveData> saves) { for (int i = saves.Count - 1, j = 0; i >= 0; i--) { LevelsContainer container = null; LevelDescription lvl = null; foreach (var lc in levelsContainer) { lvl = lc.Levels.Find(x => x.ID == saves[i].LevelID); if (lvl != null) { container = lc; break; } } if (lvl != null) { if ((j) % (LevelsOnPage) == 0) { RectTransform lvlPage = Instantiate(PagePrefab); pages.Add(lvlPage); lvlPage.transform.SetParent(PageParent); lvlPage.transform.localScale = Vector3.one; lvlPage.offsetMin = Vector2.zero; lvlPage.offsetMax = Vector2.zero; // CalculateInventoryPanelParameters(lvlPage, LevelsOnPage); } Button btn = Instantiate(LevelButtonPrefab); btn.transform.SetParent(pages[pages.Count - 1]); btn.transform.localScale = Vector3.one; btn.GetComponentInChildren <TextMeshProUGUI>().text = lvl.Name; RecordLevelSave recordLevelSave = FindObjectOfType <RecordLevelSave>(); if (recordLevelSave != null) { int record = recordLevelSave.GetRecordByLevelID(lvl); if (record != 0) { SetPassedLevel(btn.transform, record.ToString()); } } btn.onClick.AddListener(() => { GameManager.Instance.LoadLevel(lvl, container); }); j++; } } ScrollSnapRect scrollSnapRect = GetComponentInChildren <ScrollSnapRect>(); if (scrollSnapRect != null) { scrollSnapRect.OnPageSwitched += GetCurrentPage; } GetCurrentPage(currentPage); }
public void AddLevels(LevelsContainer levelsContainer) { for (int i = 0; i < levelsContainer.Levels.Count; i++) { if (i == 0 || (i) % (LevelsOnPage) == 0) { RectTransform lvlPage = Instantiate(PagePrefab); pages.Add(lvlPage); lvlPage.transform.SetParent(PageParent); lvlPage.transform.localScale = Vector3.one; lvlPage.offsetMin = Vector2.zero; lvlPage.offsetMax = Vector2.zero; //CalculateInventoryPanelParameters(lvlPage, LevelsOnPage); } Button btn = Instantiate(LevelButtonPrefab); btn.transform.SetParent(pages[pages.Count - 1]); btn.transform.localScale = Vector3.one; btn.GetComponentInChildren <TextMeshProUGUI>().text = levelsContainer.Levels[i].Name; LevelDescription lvl = levelsContainer.Levels[i]; RecordLevelSave recordLevelSave = FindObjectOfType <RecordLevelSave>(); if (recordLevelSave != null) { int record = recordLevelSave.GetRecordByLevelID(lvl); if (record != 0) { SetPassedLevel(btn.transform, record.ToString()); } } btn.onClick.AddListener(() => { GameManager.Instance.LoadLevel(lvl, levelsContainer); }); } ScrollSnapRect scrollSnapRect = GetComponentInChildren <ScrollSnapRect>(); if (scrollSnapRect != null) { scrollSnapRect.OnPageSwitched += GetCurrentPage; } GetCurrentPage(currentPage); }
private void Start() { RecordLevelSave = FindObjectOfType <RecordLevelSave>(); LevelUIController levelUIController = FindObjectOfType <LevelUIController>(); if (levelUIController != null) { OnMapChanged += levelUIController.SetStoneCells; OnMove += levelUIController.SetMovesCount; OnVictory += levelUIController.Win; OnStepMade += levelUIController.SetBack; levelUIController.SetLevelName(CurrentLevel.Name); if (RecordLevelSave != null) { levelUIController.SetMovesRecord(RecordLevelSave.GetRecordByLevelID(CurrentLevel)); } } saveController = FindObjectOfType <SaveController>(); SaveData sd = null; if (saveController != null) { sd = saveController.GetSave(CurrentLevel.ID, CurrentLevel.Name); if (sd != null) { movesCount = sd.MovesCount; } OnMove?.Invoke(movesCount); } GenUtil.SetPrefabs(CellPrefab, StonePrefab, CellContainerPrefab, CellPitPrefab, CellSolvePartPrefab, CellPitSolvePartPrefab); GenUtil.CountParameters(Parent, CurrentLevel.W, CurrentLevel.H, Gap, StoneDeltaTime); map = GenUtil.GenerateLevel(Parent, CurrentLevel, sd); upReserve = GenUtil.GenerateReserveUp(Parent, CurrentLevel, sd); leftReserve = GenUtil.GenerateReserveLeft(Parent, CurrentLevel, sd); GetTargetCellsCount(); if (levelUIController != null) { levelUIController.SetStonesTotal(GenUtil.AllStones.Count); } }