Example #1
0
        public void PopulateTransportLineLabels()
        {
            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.IsLineHidden = TransportUtil.IsTransportLineHidden(index);
                _transportLineLabels.Add(go);
            }

            _transportLineLabels.Sort(
                (left, right) =>
                String.Compare(left.GetComponent <UITransportLineRow>()
                               .LineName, right.GetComponent <UITransportLineRow>().LineName, StringComparison.OrdinalIgnoreCase)
                );

            bool odd = false;

            foreach (var go in _transportLineLabels)
            {
                AttachUIComponent(go);
                go.GetComponent <UITransportLineRow>().IsOdd = odd;
                odd = !odd;
            }

            var neededHeight = _transportLineLabels.Count * (16 + 2) + 95;

            height = Mathf.Clamp(neededHeight, 347, 1000);

            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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        public override void OnUpdate(float realTimeDelta, float simulationTimeDelta)
        {
            var handlers = LineCountChanged;

            if (handlers == null)
            {
                return;
            }

            var newCount = TransportUtil.GetUsedTransportLineIndices().Count;

            if (newCount != _lineCount)
            {
                handlers(newCount);
                _lineCount = newCount;
            }
        }
Example #4
0
        private void SetupControls()
        {
            _transportLineLabels = new List <GameObject>();

            _title        = AddUIComponent <UITitleContainer>();
            _title.Parent = this;

            _buttons  = AddUIComponent <UIButtonContainer>();
            _captions = AddUIComponent <UICaptionContainer>();

            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;
            }

            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();
                }
            };
        }