private void GenerateResearchButtons() { foreach (Transform child in ResearchOptionParent) { Destroy(child.gameObject); } ResearchOption[] available = Controller.GetAvailable(); ResourceComparer resourceComparer = new ResourceComparer(); Array.Sort(available, new Comparison <ResearchOption>((x, y) => resourceComparer.Compare(x.ResourceCost, y.ResourceCost))); foreach (var option in available) { GameObject butt = Instantiate(ResearchButtonPrefab, ResearchOptionParent); ResearchOptionButton button = butt.GetComponent <ResearchOptionButton>(); button.Assign(option); Button actualButton = butt.GetComponent <Button>(); actualButton.interactable = ShouldButtonBeAvailable(button); actualButton.onClick.AddListener(() => OnReseachButtonClick(option)); } UpdateAllButtonAvailability(); }
private void UpdateAllButtonAvailability() { foreach (Transform child in ResearchOptionParent) { ResearchOptionButton butt = child.GetComponent <ResearchOptionButton>(); UpdateButtonAvailability(butt); } }
private void UpdateButtonAvailability(ResearchOptionButton butt) { butt.UpdateButton(ShouldButtonBeAvailable(butt)); }
private bool ShouldButtonBeAvailable(ResearchOptionButton butt) => _resourceContainer.HasEnough(butt.Research.ResourceCost) && butt.Research.UniquePrerequisitesCompleted;