private float AddBuildingToMenu(int index, float[] buildingCostArray, float lastAnchorMaxY) { BuildMenu.buildingCostDick.Add(buildingsNameArray[index], new Dictionary <ResourceType, float> ()); Button buildingButton = Instantiate <Button> (originalBuildingButton); buildingButton.GetComponentInChildren <Text> ().text = buildingsNameArray[index]; buildingButton.name = buildingsNameArray [index]; float thisAnchorMaxY = lastAnchorMaxY - buildingInfoHeight * menuEditorHeight / menuHeight; // float thisAnchorMaxY = lastAnchorMaxY - 0.1f * Screen.height * 2 / menuHeight; RectTransform buttonRectTransform = buildingButton.GetComponent <RectTransform> (); SetDisplayRectTransforms(buttonRectTransform); buttonRectTransform.anchorMin = new Vector2(insetX, thisAnchorMaxY - buildingButtonHeight * menuEditorHeight / menuHeight); buttonRectTransform.anchorMax = new Vector2(insetX + buildingButtonWidth, thisAnchorMaxY); for (int i = 0; i < buildingCostArray.Length; i++) { if (buildingCostArray[i] > 0) { BuildMenu.buildingCostDick[buildingsNameArray[index]].Add(GameManager.resourceTypeArraytoDick[i], buildingCostArray[i]); } } Image firstResImage = Instantiate <Image> (originalResImage); Text firstResText = Instantiate <Text> (originalResText); Text[] resTexts = SetCostDisplay(buildingsNameArray[index], firstResImage, firstResText, thisAnchorMaxY); buildingButton.onClick.AddListener(delegate { buildMenu.StartPlacement(buildingsNameArray[index], resTexts); }); buildingsTextDick.Add(buildingButton, resTexts); buildingEraDick.Add(buildingButton, buildingArray [index].buildingEra); if (buildingEraDick[buildingButton] != Eras.StoneAge) { buildingButton.interactable = false; } return(thisAnchorMaxY); }
// private float resWidth = 0.30f; public void SetSize(BuildMenu thisBuildMenu) { buildMenu = thisBuildMenu; buildingsTextDick = new Dictionary <Button, Text[]> (); // includes strat points List <string> allBuildingNamesList = GameManager.GetSpeciesWOTList(GameManager.HumanPlayer.species, WorldObjectType.Building); List <string> buildingNamesList = new List <string>(); foreach (string buildingName in allBuildingNamesList) { StrategicPoint stratPoint = GameManager.GetGameObject(buildingName).GetComponent <StrategicPoint>(); if (stratPoint == null || (stratPoint as Monument == null && stratPoint.originalSpecies != Species.NonPlayer)) { buildingNamesList.Add(buildingName); } } buildingArray = new Building [buildingNamesList.Count]; // sort the buildings by era for (int i = 0; i < buildingNamesList.Count; i++) { buildingArray[i] = GameManager.GetGameObject(buildingNamesList[i]).GetComponent <Building>(); } Array.Sort(buildingArray, delegate(Building building1, Building building2) { return(GameManager.eraOrderDick[building1.buildingEra].CompareTo(GameManager.eraOrderDick[building2.buildingEra])); }); buildingsNameArray = new string[buildingArray.Length]; for (int i = 0; i < buildingArray.Length; i++) { buildingsNameArray[i] = buildingArray[i].name; } menuEditorHeight = Screen.height * 2; buildingInfoHeight = insetY + (originalBuildingButton.GetComponent <RectTransform> ().anchorMax.y - originalResImage.rectTransform.anchorMin.y); menuHeight = buildingsNameArray.Length * buildingInfoHeight * menuEditorHeight; RectTransform rectTransform = GetComponent <RectTransform> (); rectTransform.sizeDelta = new Vector2(Screen.width * (MainPanel.rectTransform.anchorMax.x - MainPanel.rectTransform.anchorMin.x), menuHeight); // Setting the first buildingButton and shit float[] firstBuildingCostArray = GameManager.GetGameObject(buildingsNameArray [0]).GetComponent <Building> ().buildingCostArray; BuildMenu.buildingCostDick.Add(buildingsNameArray[0], new Dictionary <ResourceType, float> ()); for (int i = 0; i < firstBuildingCostArray.Length; i++) { if (firstBuildingCostArray[i] > 0) { BuildMenu.buildingCostDick[buildingsNameArray[0]].Add(GameManager.resourceTypeArraytoDick[i], firstBuildingCostArray[i]); } } buildingEraDick = new Dictionary <Button, Eras> (); originalBuildingButton.GetComponentInChildren <Text> ().text = buildingsNameArray[0]; originalBuildingButton.name = buildingsNameArray [0]; RectTransform obRectTransform = originalBuildingButton.GetComponent <RectTransform> (); obRectTransform.anchorMax = new Vector2(insetX + buildingButtonWidth, 1f - insetY * menuEditorHeight / menuHeight); obRectTransform.anchorMin = new Vector2(insetX, 1f - (insetY + buildingButtonHeight) * menuEditorHeight / menuHeight); float lastAnchorMaxY = obRectTransform.anchorMax.y; Text[] obTexts = SetCostDisplay(buildingsNameArray[0], originalResImage, originalResText, lastAnchorMaxY); originalBuildingButton.onClick.AddListener(delegate { buildMenu.StartPlacement(buildingsNameArray[0], obTexts); }); buildingsTextDick.Add(originalBuildingButton, obTexts); buildingEraDick.Add(originalBuildingButton, buildingArray [0].buildingEra); // Andd the rest for (int i = 1; i < buildingsNameArray.Length; i++) { lastAnchorMaxY = AddBuildingToMenu(i, GameManager.GetGameObject(buildingsNameArray [i]).GetComponent <Building> ().buildingCostArray, lastAnchorMaxY); } }