// Start is called before the first frame update
    void Start()
    {
        GameInitialization.Initialize();
        scrollRegion = GetComponent <ScrollRect>();
        var bhav = GameObject.Find("EventSystem").GetComponent <MainMenuBehavior>();

        sampleButton = scrollRegion.content.transform.GetChild(0).gameObject.GetComponent <Button>();
        ButtonStyler.Style(sampleButton);
        playerNameField = transform.parent.transform.GetChild(4).gameObject;
        var saveFiles  = StinkyFile.Save.SaveFile.GetAllSaves();
        int lastHeight = 0;

        foreach (var save in saveFiles)
        {
            if (save.SaveFileInfo.IsBackup)
            {
                continue;
            }
            MakeButton(save.SaveFileInfo.PlayerName, ref lastHeight,
                       delegate
            {
                saveFileMode = false;
                playerNameField.SetActive(false);
                if (save == selected)
                {
                    bhav.GoToMapScreen(save);
                }
                else
                {
                    SoundLoader.Play("sb-type.wav", false).volume = .5f;
                    selected = save;
                    save.FullLoad();
                    SaveFileInfoPopulate.PopulateInfo(save);
                }
            });
        }
        var createButton = MakeButton("Create New Save File", ref lastHeight, delegate
        {
#if false
            if (!saveFileMode)
            {
                SaveFileInfoPopulate.PopulateInfo(null);
                playerNameField.SetActive(true);
                createButton.transform.GetChild(0).GetComponent <Text>().text = "OK";
                return;
            }
            var text = playerNameField.transform.GetChild(1).GetChild(1).GetComponent <Text>();
#endif
            var name = DateTime.Today.ToShortDateString();
            var save = new SaveFile(name);
            bhav.GoToMapScreen(save);
        });

        MakeButton("Go Back", ref lastHeight,
                   delegate
        {
            bhav.CloseSaveSelect();
        });
        (scrollRegion.content.transform as RectTransform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, lastHeight);
    }
Example #2
0
    // Start is called before the first frame update
    void Start()
    {
        GameInitialization.Initialize();
        ScrollRect scrollRegion  = GetComponent <ScrollRect>();
        var        mapScreenBhav = GameObject.Find("EventSystem").GetComponent <MapScreenBehavior>();

        sampleButton = scrollRegion.content.transform.GetChild(0).gameObject.GetComponent <Button>();
        ButtonStyler.Style(sampleButton);
        var parser = GameInitialization.GlobalParser;

        parser.FindAllLevels(Path.Combine(TextureLoader.AssetDirectory, "levels"));
        int lastHeight = 0, CURRENT = 0, lastAvailableLevel = 0;

        transforms.Clear();
        foreach (var level in parser.LevelInfo)
        {
            bool isAvailable = false;
            var  levelInfo   = level.GetSaveFileInfo(SaveFileManager.Current);
            isAvailable = levelInfo.IsAvailable;
            isAvailable = isAvailable ? true : CURRENT < 2; // first 2 levels always unlocked regardless
            isAvailable = true;
            var button    = Instantiate(sampleButton);
            var transform = button.gameObject.transform as RectTransform;
            transform.position = new Vector3(0, -lastHeight, 0);
            lastHeight        += (int)transform.rect.height + 10;
            var name = ((isAvailable) ? "" : "LOCKED - ") + (levelInfo.WasPerfect ? "*" : "") + level.Name + (levelInfo.WasPerfect ? "*" : "");
            if (name.Length > 25)
            {
                name = name.Substring(0, 25) + "...";
            }
            transform.GetChild(0).GetComponent <Text>().text = name;
            transform.SetParent(scrollRegion.content, false);
            button.gameObject.SetActive(true);
            if (isAvailable)
            {
                button.onClick.AddListener(delegate
                {
                    if (selected != level)
                    {
                        selected = level;
                        mapScreenBhav.SelectLevelOnMap(level);
                        return;
                    }
                    mapScreenBhav.GoToLevel(Path.GetFileName(level.LevelFilePath).Replace(".lv5", ""));
                });
            }
            else
            {
                button.spriteState = new SpriteState(); // make sure hovering doesn't work on these.
            }
            transforms.Add(level, transform);
            CURRENT++;
        }
        (scrollRegion.content.transform as RectTransform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, lastHeight);
        OnLevelsLoaded?.Invoke(this, null);
    }
 protected Theme(ButtonStyler styleButton)
 {
     StyleButton = styleButton;
 }