/// <summary> /// Opens a building tab on bottom menu /// </summary> /// <param name="tab"></param> public void Open_Tab(Building.UI_Category tab) { if (Game.Instance.State != Game.GameState.RUNNING) { //No building menu access if game is not running Show_Message("Start new game from menu: Game -> New"); return; } if (tab == open_building_tab) { //Same tab -> hide menu bottom_menu_rectangle_transform.Translate(new Vector3(0.0f, -bottom_menu_height, 0.0f)); tab_buttons[(Building.UI_Category)open_building_tab].GetComponent <Image>().color = Color.white; foreach (Building building in BuildingPrototypes.Get_By_Category((Building.UI_Category)open_building_tab)) { building_buttons[building.Name].gameObject.SetActive(false); } open_building_tab = null; Hide_Building_Info(); BuildingPrototypes.Currently_Selected = null; return; } else if (open_building_tab == null) { //Show menu bottom_menu_rectangle_transform.Translate(new Vector3(0.0f, bottom_menu_height, 0.0f)); } if (open_building_tab != null) { //Hide buildings in old tab tab_buttons[(Building.UI_Category)open_building_tab].GetComponent <Image>().color = Color.white; foreach (Building building in BuildingPrototypes.Get_By_Category((Building.UI_Category)open_building_tab)) { building_buttons[building.Name].gameObject.SetActive(false); } } open_building_tab = tab; //Show buildings in new tab foreach (Building building in BuildingPrototypes.Get_By_Category(tab)) { building_buttons[building.Name].gameObject.SetActive(true); } tab_buttons[(Building.UI_Category)open_building_tab].GetComponent <Image>().color = Color.blue; }
public void Select_Building_At(int index) { if (Open_Building_Tab == null) { return; } List <Building> buildings_in_category = BuildingPrototypes.Get_By_Category(Open_Building_Tab.Value); if (index < 0 || index >= buildings_in_category.Count) { return; } if (BuildingPrototypes.Currently_Selected == buildings_in_category[index].Internal_Name) { BuildingPrototypes.Currently_Selected = null; } else { BuildingPrototypes.Currently_Selected = buildings_in_category[index].Internal_Name; } }
// Use this for initialization private void Start() { if (Instance != null) { Logger.Instance.Error("Start called multiple times"); } Instance = this; show_alerts = true; show_building_ranges = true; info_update_cooldown = 0; StorageSettingsPanel.SetActive(false); storage_settings_fields = new Dictionary <string, InputField>(); StorageLinksPanel.SetActive(false); storage_links_inputs = new Dictionary <string, InputField>(); storage_links_buttons = new Dictionary <string, Button>(); storage_links_building_ids = new Dictionary <string, int>(); select_link_building_mode = false; new_storage_link_building_id = -1; highlighted_road_tiles = new List <Tile>(); road_color = new Color(0.5f, 0.2f, 0.0f, 0.5f); highlighted_building_tiles = new List <Tile>(); building_color = new Color(0.2f, 0.5f, 0.0f, 0.5f); menu_is_open = true; city_menu_is_open = true; overlays_menu_is_open = true; tab_buttons = new Dictionary <Building.UI_Category, Button>(); building_buttons = new Dictionary <string, Button>(); open_building_tab = null; Close_Menus(); City_Menu_Enabled = false; //Initialize bottom menu int index = 0; //Resize bottom_menu_rectangle_transform = Bottom_Menu.GetComponent <RectTransform>(); bottom_menu_rectangle_transform.sizeDelta = new Vector2(Screen.width, bottom_menu_rectangle_transform.sizeDelta.y); //Calculate width & height of bottom menu Vector3[] bottom_menu_corners = new Vector3[4]; bottom_menu_rectangle_transform.GetWorldCorners(bottom_menu_corners); bottom_menu_width = bottom_menu_corners[2].x - bottom_menu_corners[0].x; bottom_menu_height = bottom_menu_corners[2].y - bottom_menu_corners[0].y; //Calculate width & height of buttons RectTransform button_rectangle_transform = Button_Prefab.GetComponent <RectTransform>(); Vector3[] corners = new Vector3[4]; button_rectangle_transform.GetWorldCorners(corners); float button_width = corners[2].x - corners[0].x; float button_height = corners[2].y - corners[0].y; foreach (Building.UI_Category category in Enum.GetValues(typeof(Building.UI_Category))) { //Add button for category Button button = Instantiate(Button_Prefab); button.name = category.ToString() + "_tab_button"; button.GetComponentInChildren <Text>().text = category.ToString(); button.transform.SetParent(Bottom_Menu.transform); button.transform.position = new Vector3(Bottom_Menu.transform.position.x + (index * button_width) + (button_width / 2.0f) - (bottom_menu_width / 2.0f), Bottom_Menu.transform.position.y + (bottom_menu_height / 2.0f) + (button_height / 2.0f)); Button.ButtonClickedEvent on_click_event = new Button.ButtonClickedEvent(); on_click_event.AddListener(new UnityEngine.Events.UnityAction(delegate() { Open_Tab(category); })); button.onClick = on_click_event; index++; tab_buttons.Add(category, button); //Create buttons for buildings int index_2 = 0; foreach (Building building in BuildingPrototypes.Get_By_Category(category)) { Button building_button = Instantiate(Button_Prefab); building_button.GetComponentInChildren <Text>().text = building.Name; building_button.transform.SetParent(Bottom_Menu.transform); building_button.gameObject.SetActive(false); Image image = building_button.GetComponent <Image>(); image.sprite = SpriteManager.Instance.Get_Sprite(building.Texture); image.rectTransform.sizeDelta = new Vector2(image.rectTransform.sizeDelta.x / 2.0f, image.rectTransform.sizeDelta.y * 3.0f); building_button.transform.position = new Vector3(Bottom_Menu.transform.position.x + (index_2 * image.rectTransform.sizeDelta.x) + (image.rectTransform.sizeDelta.x / 2.0f) - (bottom_menu_width / 2.0f), Bottom_Menu.transform.position.y + (bottom_menu_height / 2.0f) - (image.rectTransform.sizeDelta.y / 2.0f)); Button.ButtonClickedEvent building_on_click_event = new Button.ButtonClickedEvent(); building_on_click_event.AddListener(new UnityEngine.Events.UnityAction(delegate() { if (BuildingPrototypes.Currently_Selected == building.Internal_Name) { Hide_Building_Info(); BuildingPrototypes.Currently_Selected = null; } else { BuildingPrototypes.Currently_Selected = building.Internal_Name; } })); building_button.onClick = building_on_click_event; building_buttons.Add(building.Name, building_button); index_2++; } } //Hide bottom menu bottom_menu_rectangle_transform.Translate(new Vector3(0.0f, -bottom_menu_height, 0.0f)); //Hide message panel Message_Panel.SetActive(false); message_panel_open_time = 0.0f; //Initialize top menu top_menu_rectangle_transform = Top_Menu.GetComponent <RectTransform>(); top_menu_rectangle_transform.sizeDelta = new Vector2(Screen.width, top_menu_rectangle_transform.sizeDelta.y); //Right Menu RightPanel.SetActive(false); StorageSettingsButton.SetActive(false); StorageSettingsHeader.SetActive(false); StorageLinksButton.SetActive(false); selected_building = null; }