Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
        }
    }