private void SetStageGameObjects(int stage) { curr_stage = stage; UpdateNextPreviousButtons(); stage_text.text = LocManager.Instance.GetText("Stage") + ": " + stage; for (int i = 0; i < levels_list.Count; ++i) { Destroy(levels_list[i].gameObject); } levels_list.Clear(); int to_spawn = LevelsManager.Instance.GetStageLevelsCount(stage); for (int i = 0; i < to_spawn; ++i) { GameObject new_go = Instantiate(levels_prefab, new Vector3(0, 0, 0), Quaternion.identity); LevelButtonUI button_ui = new_go.GetComponent <LevelButtonUI>(); if (button_ui != null) { button_ui.SetLevel(curr_stage, i); levels_list.Add(button_ui); } } Canvas.ForceUpdateCanvases(); UpdateLevelsPosition(); UpdateLevelsPosition(); }
private void SpawnLevelButton(int index, bool isActiveLvl) { LevelButtonUI lvlButton = Instantiate(level_Button, gridLayout.transform); lvlButton.GetComponent <Button>().interactable = isActiveLvl; lvlButton.GetComponent <Button>().onClick.AddListener(() => LevelButtonPressed(index)); lvlButton.LevelIndex = index; level_Buttons.Add(lvlButton); }
private void PopulateLevels() { int noLevels = DataReader.instance.GetNolevels(); for (int i = 1; i <= noLevels; i++) { GameObject newLevelButton = Instantiate(levelButton) as GameObject; newLevelButton.transform.SetParent(buttonsRoot); newLevelButton.transform.localScale = Vector3.one; newLevelButton.GetComponentInChildren <Text>().text = "Level " + i.ToString(); LevelButtonUI buttonUI = newLevelButton.GetComponent <LevelButtonUI>(); buttonUI.level = i; buttonUI.levelMenu = this; } }
private IEnumerator PopulateWebLevels() { WWW www = null; int nextLevel = 0; #if !UNITY_EDITOR int indexPageIndex = Application.absoluteURL.IndexOf("index.html"); if (indexPageIndex < 0) { indexPageIndex = Application.absoluteURL.Length; } baseUrl = Application.absoluteURL.Substring(0, indexPageIndex - 1); #endif do { nextLevel++; try{ www = new WWW(string.Format("{0}/Data/Level{1}.xml", this.baseUrl, nextLevel)); } catch (Exception e) { Debug.LogWarning(e); } yield return(www); } while (string.IsNullOrEmpty(www.error)); int noLevels = nextLevel - 1; for (int i = 1; i <= noLevels; i++) { GameObject newLevelButton = Instantiate(levelButton) as GameObject; newLevelButton.transform.SetParent(buttonsRoot); newLevelButton.transform.localScale = Vector3.one; newLevelButton.GetComponentInChildren <Text>().text = "Level " + i.ToString(); LevelButtonUI buttonUI = newLevelButton.GetComponent <LevelButtonUI>(); buttonUI.level = i; buttonUI.levelMenu = this; } }
private void ActuallyUpdatePositions() { if (to_update_positions > 0) { int amount_per_line = 0; float actual_distance_x = distance_x; Vector2 size = levels_list[0].GetSize(); if (levels_list.Count > 0) { if ((size.x + distance_x) != 0) { float disponible_space = scroll_view_rect.rect.size.x - (margins_x * 2); float amount_per_line_dec = (disponible_space + distance_x) / (size.x + distance_x); amount_per_line = (int)Mathf.Floor(amount_per_line_dec); float used_space = ((float)amount_per_line * (float)size.x) + ((float)(amount_per_line - 1) * (float)distance_x); if ((amount_per_line - 1) != 0) { float space_to_add = (scroll_view_rect.rect.size.x - (margins_x * 2)) - used_space; space_to_add /= (amount_per_line - 1); actual_distance_x = size.x + distance_x + space_to_add; } } } int curr_row = 0; int curr_column = 0; for (int i = 0; i < levels_list.Count; ++i) { LevelButtonUI curr_button = levels_list[i]; curr_button.gameObject.transform.localScale = new Vector3(1, 1, 1); curr_button.gameObject.transform.parent = scroll_view_content.transform; Vector2 new_position = new Vector2(margins_x, -margins_y); new_position.x += size.x / 2; new_position.y -= size.y / 2; new_position.x += curr_row * actual_distance_x; new_position.y -= curr_column * (distance_y + size.y); curr_button.transform.localPosition = new_position; if (curr_row + 1 >= amount_per_line) { curr_row = 0; ++curr_column; } else { ++curr_row; } } scroll_view_rect.sizeDelta = new Vector2(scroll_view_rect.sizeDelta.x, (margins_y * 2) + ((size.y + distance_y) * curr_column)); --to_update_positions; } }