public void PopulateTransportLineLabels(string sortFieldName = "LineName") { foreach (var index in TransportUtil.GetUsedTransportLineIndices()) { if (TransportUtil.GetTransportLineType(index) != Type) { continue; } var go = new GameObject(Enum.GetName(typeof(TransportInfo.TransportType), Type) + "LineRow"); var uic = go.AddComponent <UITransportLineRow>(); uic.LineID = index; uic.LineNameChanged += id => { ClearTransportLineLabels(); PopulateTransportLineLabels(); }; _transportLineLabels.Add(go); } _transportLineLabels.Sort(new LineComparer(sortFieldName)); bool odd = false; foreach (var go in _transportLineLabels) { _scrollablePanel.AttachUIComponent(go); go.GetComponent <UITransportLineRow>().IsOdd = odd; odd = !odd; } switch (Type) { case TransportInfo.TransportType.Bus: _title.TitleText = String.Format("Bus Lines ({0})", _transportLineLabels.Count); break; case TransportInfo.TransportType.Metro: _title.TitleText = String.Format("Metro Lines ({0})", _transportLineLabels.Count); break; case TransportInfo.TransportType.Train: _title.TitleText = String.Format("Train Lines ({0})", _transportLineLabels.Count); break; case TransportInfo.TransportType.Tram: _title.TitleText = String.Format("Tram Lines ({0})", _transportLineLabels.Count); break; } }
private void SetupControls() { _transportLineLabels = new List <GameObject>(); _title = AddUIComponent <UITitleContainer>(); _title.Parent = this; _buttons = AddUIComponent <UIButtonContainer>(); _captions = AddUIComponent <UICaptionContainer>(); _captions.SortDelegate = SortTransportLinesMethod; switch (Type) { case TransportInfo.TransportType.Bus: _title.IconSprite = "SubBarPublicTransportBus"; _title.TitleText = "Bus Lines"; break; case TransportInfo.TransportType.Metro: _title.IconSprite = "SubBarPublicTransportMetro"; _title.TitleText = "Metro Lines"; break; case TransportInfo.TransportType.Train: _title.IconSprite = "SubBarPublicTransportTrain"; _title.TitleText = "Train Lines"; break; case TransportInfo.TransportType.Tram: _title.IconSprite = "SubBarPublicTransportTram"; _title.TitleText = "Tram Lines"; break; } eventVisibilityChanged += (component, visible) => { if (visible) { foreach (var index in TransportUtil.GetUsedTransportLineIndices()) { if (TransportUtil.GetTransportLineType(index) != Type) { TransportUtil.HideTransportLine(index); } } } else { foreach (var index in TransportUtil.GetUsedTransportLineIndices()) { TransportUtil.ShowTransportLine(index); } } }; // update if lines added or deleted TransportObserver.LineCountChanged += count => { ClearTransportLineLabels(); PopulateTransportLineLabels(); }; _buttons.SelectAll.eventClick += (component, param) => { foreach (var go in _transportLineLabels) { var row = go.GetComponent <UITransportLineRow>(); row.ShowLine(); } }; _buttons.SelectNone.eventClick += (component, param) => { foreach (var go in _transportLineLabels) { var row = go.GetComponent <UITransportLineRow>(); row.HideLine(); } }; }