Exemplo n.º 1
0
        private void Level_Click(object sender, RoutedEventArgs e)
        {
            StinkyLevel level = (StinkyLevel)(sender as Button).Tag;

            Parser.RefreshLevel(level);
            NavigationService.Navigate(new StinkyUI(level, Workspace));
        }
Exemplo n.º 2
0
 public void ScrollToLevel(StinkyLevel level)
 {
     if (level == default)
     {
         return;
     }
     ScrollIntoView(transforms[level]);
 }
Exemplo n.º 3
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);
    }
Exemplo n.º 4
0
 public void SelectLevelOnMap(StinkyLevel level, bool scrollTo = false)
 {
     if (level == null)
     {
         return;
     }
     mapScreen.ChangeSelectedLevel(level);
     CurrentLevel = level;
     if (scrollTo)
     {
         levelPopulator.ScrollToLevel(level);
     }
 }
Exemplo n.º 5
0
    public void ChangeSelectedLevel(StinkyLevel level)
    {
        if (level == null)
        {
            return;
        }
        var source    = mparser.Levels;
        var selection = source.Where(x => x.Key.LevelWorldName == level.LevelWorldName);

        if (selection.Count() > 0)
        {
            var point  = ConvertToMapRelativePosition(selection.First().Value);
            var marker = CurrentLevelIndicator.transform;
            marker.localPosition = new Vector3(point.x, 0.15f, point.y);
            CurrentlySelected    = level;
        }
        SetUIText();
    }
Exemplo n.º 6
0
    public GameObject PlaceMarker(StinkyLevel level, SPoint position)
    {
        var marker = Instantiate(MarkerTemplate.transform, transform, false);

        marker.name = level.Name + " Marker";
        var sprite = UnlockedNotCompleted[(int)level.Context];

        if (sprite == null)
        {
            Rect source        = default;
            bool sourceUpdated = false;
            if (SaveFileManager.IsFileOpened)
            {
                var saveFileInfo = level.GetSaveFileInfo(currentSave);
                if (saveFileInfo.WasPerfect)
                {
                    source        = GetTextureSource(0, 64, 64, 64); // Original Krabby Patty
                    sourceUpdated = true;
                }
                else if (saveFileInfo.WasSuccessful)
                {
                    source        = GetTextureSource(65, 5, 60, 52); // Original Krabby Patty
                    sourceUpdated = true;
                }
                else if (saveFileInfo.IsAvailable)
                {
                    source        = GetTextureSource(0, 0, 64, 64); // Original Krabby Patty
                    sourceUpdated = true;
                }
            }
            if (!sourceUpdated)
            {
                switch (level.Context)
                {
                default:
                    source = GetTextureSource(65, 5, 60, 52);     // Original Krabby Patty
                    break;

                case LevelContext.BIKINI:
                    source = GetTextureSource(64, 64, 64, 64);    // Bikini Flag
                    break;

                case LevelContext.BEACH:
                    source = GetTextureSource(128, 0, 64, 64);    // Beach Flag
                    break;

                case LevelContext.FIELDS:
                    source = GetTextureSource(192, 0, 64, 64);    // Jelly Flag
                    break;

                case LevelContext.KELP:
                    source = GetTextureSource(128, 64, 64, 64);    // Kelp Flag
                    break;

                case LevelContext.CAVES:
                    source = GetTextureSource(192, 64, 64, 64);    // Caves Flag
                    break;
                }
            }
            sprite = Sprite.Create(markerSheet, source, new Vector2(.5f, .5f));
        }
        marker.GetComponent <SpriteRenderer>().sprite = sprite;
        var point = ConvertToMapRelativePosition(position);

        marker.localPosition = new Vector3(point.x, marker.localPosition.y, point.y);
        marker.gameObject.SetActive(true);
        return(marker.gameObject);
    }