private void Level_Click(object sender, RoutedEventArgs e) { StinkyLevel level = (StinkyLevel)(sender as Button).Tag; Parser.RefreshLevel(level); NavigationService.Navigate(new StinkyUI(level, Workspace)); }
public void ScrollToLevel(StinkyLevel level) { if (level == default) { return; } ScrollIntoView(transforms[level]); }
// 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); }
public void SelectLevelOnMap(StinkyLevel level, bool scrollTo = false) { if (level == null) { return; } mapScreen.ChangeSelectedLevel(level); CurrentLevel = level; if (scrollTo) { levelPopulator.ScrollToLevel(level); } }
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(); }
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); }