Пример #1
0
 public void GetPCGLevels(List <string> levels)
 {
     if (levels != null)
     {
         levRef.levels.pcg.Clear();
         List <LevelReferenceObject> refs = new List <LevelReferenceObject>();
         for (int i = 0; i < levels.Count; i++)
         {
             if (levels[i] != "")
             {
                 LevelReferenceObject lro = new LevelReferenceObject();
                 lro.file  = "levelX";
                 lro.title = "X";
                 if (i < 10)
                 {
                     lro.file  += 0;
                     lro.title += 0;
                 }
                 lro.file          += i;
                 lro.title         += i;
                 lro.data           = GameManager.Instance.GetSaveManager().currentSave.pcgLevels[i];
                 lro.levelId        = i;
                 lro.completionRank = 0;
                 refs.Add(lro);
             }
         }
         levRef.levels.pcg = refs;
     }
 }
Пример #2
0
    void SetupLevelButton(LevelReferenceObject lr, Transform container, bool pcg)
    {
        char[] trimArray = new char[5] {
            'L', 'l', 'e', 'v', ' '
        };
        string              levelName      = lr.file;
        GameObject          g              = Instantiate(loadUI.levelButtonPrefab) as GameObject;
        LevelButtonBehavior buttonInstance = g.GetComponent <LevelButtonBehavior>();

        if (buttonInstance != null)
        {
            buttonInstance.SetLevelSprite(pcg, lr.completionRank > 0);
            buttonInstance.SetLevelRank(lr.GetLevelCompletionRank());
        }

        Button gButton = g.GetComponent <Button>();

        g.transform.SetParent(container);
        g.transform.localScale = Vector3.one;
        Text gText = g.GetComponentInChildren <Text>();

        gText.text = levelName.TrimStart(trimArray);
        if (!pcg)
        {
            gButton.onClick.AddListener(() => LoadButtonBehavior(levelName));
        }
        else
        {
            gButton.onClick.AddListener(() => LoadPCGButtonBehavior(lr.data));
        }
    }
Пример #3
0
    public void TriggerAdvanceToNextLevel()
    {
        LevelReferenceObject nextLevel = dataManager.GetNextLevel(currentLevelReferenceObject);

        Debug.Log("Next level is: " + nextLevel.levelId);
        TriggerLoadLevel(DataManager.LoadType.RESOURCES, nextLevel.file);
    }
Пример #4
0
    public void TriggerLoadLevel(bool restartPhase = false, DataManager.LoadType loadType = DataManager.LoadType.RESOURCES, string inputLevelName = "")
    {
        tracker.ResetModelLog();
        if (inputLevelName.Length == 0)
        {
            inputLevelName = dataManager.levelname;
        }
        dataManager.InitializeLoadLevel(inputLevelName, loadType);
        LevelReferenceObject levRef = dataManager.GetLevelByFile(inputLevelName);

        if (levRef != null)
        {
            currentLevelReferenceObject = levRef;
        }
        InitiateTrackGeneration(restartPhase);
        if (restartPhase)
        {
            SetGamePhase(GamePhases.PlayerInteraction);
        }
        if (loadType == DataManager.LoadType.STRING)
        {
            tracker.CreateEventExt("TriggerLoadLevel", currentLevelReferenceObject.file);
        }
        else
        {
            tracker.CreateEventExt("TriggerLoadLevel", inputLevelName);
        }
    }
Пример #5
0
 void SetupSolutions()
 {
     for (int i = 0; i < solutions.Length; i++)
     {
         LevelReferenceObject l = GameManager.Instance.GetDataManager().GetLevelById(i);
         if (l != null)
         {
             if (solutions[i].attemptCount < 2)
             {
                 solutions[i].attemptCount = 2;
             }
             if (solutions[i].completed == false)
             {
                 solutions[i].completed = true;
             }
             if (solutions[i].index != i)
             {
                 solutions[i].index = i;
             }
             if (solutions[i].stepCount != GameManager.Instance.GetDataManager().GetLevelEfficiency(l.file))
             {
                 solutions[i].stepCount = (int)GameManager.Instance.GetDataManager().GetLevelEfficiency(l.file);
             }
         }
     }
 }
Пример #6
0
 public void LoadButtonBehavior(LevelReferenceObject levelReference)
 {
     loadUI.levelLoadingOverlay.OpenPanel();
     try
     {
         GameManager.Instance.TriggerLoadLevel(levelReference);
     }
     catch (System.Exception e)
     {
         loadUI.levelLoadingOverlay.ClosePanel();
         DisplayError("Level Loading Failed", "An error was encountered while loading the level, if this issue persists, please contact the research team.");
     }
 }
Пример #7
0
    public void TriggerLoadLevel(DataManager.LoadType loadType = DataManager.LoadType.RESOURCES, string inputLevelName = "")
    {
        Debug.Log(loadType);
        tracker.CreateEventExt("TriggerLoadLevel", inputLevelName);
        if (inputLevelName.Length == 0)
        {
            inputLevelName = dataManager.levelname;
        }
        dataManager.InitializeLoadLevel(inputLevelName, loadType);
        LevelReferenceObject levRef = dataManager.GetLevelByFile(inputLevelName);

        if (levRef != null)
        {
            currentLevelReferenceObject = levRef;
        }
        //TODO: Since this gets called when a simulation completes and re-opens everything, it can cause bugs with the tutorials loading
        SetGamePhase(GameManager.GamePhases.GenerateTrack);
    }
Пример #8
0
    public LevelReferenceObject GetNextLevel(LevelReferenceObject currentLevelRef)
    {
        bool levelFound = false;

        foreach (LevelReferenceObject l in levRef.levels.required)
        {
            if (levelFound)
            {
                return(l);
            }
            if (l.levelId == currentLevelRef.levelId)
            {
                levelFound = true;
            }
        }
        foreach (LevelReferenceObject l in levRef.levels.previous)
        {
            if (levelFound)
            {
                return(l);
            }
            if (l.levelId == currentLevelRef.levelId)
            {
                levelFound = true;
            }
        }
        foreach (LevelReferenceObject l in levRef.levels.optional)
        {
            if (levelFound)
            {
                return(l);
            }
            if (l.levelId == currentLevelRef.levelId)
            {
                levelFound = true;
            }
        }
        Debug.LogError("No level after " + currentLevelRef.file + " found");
        return(null);
    }
Пример #9
0
 public void TriggerLoadLevel(LevelReferenceObject inputLevelReferenceObject)
 {
     currentLevelReferenceObject = inputLevelReferenceObject;
     TriggerLoadLevel(DataManager.LoadType.RESOURCES, inputLevelReferenceObject.file);
 }
Пример #10
0
 public void LoadButtonBehavior(LevelReferenceObject levelReference)
 {
     loadUI.levelLoadingOverlay.OpenPanel();
     GameManager.Instance.TriggerLoadLevel(levelReference);
 }
Пример #11
0
 public void TriggerLoadLevel(LevelReferenceObject inputLevelReferenceObject)
 {
     tracker.ResetModelLog();
     currentLevelReferenceObject = inputLevelReferenceObject;
     TriggerLoadLevel(true, DataManager.LoadType.RESOURCES, inputLevelReferenceObject.file);
 }