Пример #1
0
        private void _guiLaneChangeWindow(int num)
        {
            var info = Singleton <NetManager> .instance.m_segments.m_buffer[SelectedSegmentId].Info;

            List <object[]> laneList  = TrafficManagerTool.GetSortedVehicleLanes(SelectedSegmentId, info, SelectedNodeId);
            SegmentGeometry geometry  = SegmentGeometry.Get(SelectedSegmentId);
            bool            startNode = geometry.StartNodeId() == SelectedNodeId;

            GUILayout.BeginHorizontal();

            for (var i = 0; i < laneList.Count; i++)
            {
                var flags = (NetLane.Flags)Singleton <NetManager> .instance.m_lanes.m_buffer[(uint)laneList[i][0]].m_flags;

                var style1 = new GUIStyle("button");
                var style2 = new GUIStyle("button")
                {
                    normal  = { textColor = new Color32(255, 0, 0, 255) },
                    hover   = { textColor = new Color32(255, 0, 0, 255) },
                    focused = { textColor = new Color32(255, 0, 0, 255) }
                };

                var laneStyle = new GUIStyle {
                    contentOffset = new Vector2(12f, 0f)
                };

                var laneTitleStyle = new GUIStyle {
                    contentOffset = new Vector2(36f, 2f),
                    normal        = { textColor = new Color(1f, 1f, 1f) }
                };

                GUILayout.BeginVertical(laneStyle);
                GUILayout.Label(Translation.GetString("Lane") + " " + (i + 1), laneTitleStyle);
                GUILayout.BeginVertical();
                GUILayout.BeginHorizontal();
                if (!Flags.applyLaneArrowFlags((uint)laneList[i][0]))
                {
                    Flags.removeLaneArrowFlags((uint)laneList[i][0]);
                }
                Flags.LaneArrowChangeResult res = Flags.LaneArrowChangeResult.Invalid;
                bool buttonClicked = false;
                if (GUILayout.Button("←", ((flags & NetLane.Flags.Left) == NetLane.Flags.Left ? style1 : style2), GUILayout.Width(35), GUILayout.Height(25)))
                {
                    buttonClicked = true;
                    Flags.toggleLaneArrowFlags((uint)laneList[i][0], startNode, Flags.LaneArrows.Left, out res);
                }
                if (GUILayout.Button("↑", ((flags & NetLane.Flags.Forward) == NetLane.Flags.Forward ? style1 : style2), GUILayout.Width(25), GUILayout.Height(35)))
                {
                    buttonClicked = true;
                    Flags.toggleLaneArrowFlags((uint)laneList[i][0], startNode, Flags.LaneArrows.Forward, out res);
                }
                if (GUILayout.Button("→", ((flags & NetLane.Flags.Right) == NetLane.Flags.Right ? style1 : style2), GUILayout.Width(35), GUILayout.Height(25)))
                {
                    buttonClicked = true;
                    Flags.toggleLaneArrowFlags((uint)laneList[i][0], startNode, Flags.LaneArrows.Right, out res);
                }

                if (buttonClicked)
                {
                    switch (res)
                    {
                    case Flags.LaneArrowChangeResult.Invalid:
                    case Flags.LaneArrowChangeResult.Success:
                    default:
                        break;

                    case Flags.LaneArrowChangeResult.HighwayArrows:
                        MainTool.ShowTooltip(Translation.GetString("Lane_Arrow_Changer_Disabled_Highway"), Singleton <NetManager> .instance.m_nodes.m_buffer[SelectedNodeId].m_position);
                        break;

                    case Flags.LaneArrowChangeResult.LaneConnection:
                        MainTool.ShowTooltip(Translation.GetString("Lane_Arrow_Changer_Disabled_Connection"), Singleton <NetManager> .instance.m_nodes.m_buffer[SelectedNodeId].m_position);
                        break;
                    }
                }

                GUILayout.EndHorizontal();
                GUILayout.EndVertical();
                GUILayout.EndVertical();
            }

            GUILayout.EndHorizontal();
        }
Пример #2
0
        private void _guiLaneChangeWindow(int num)
        {
            var info = Singleton <NetManager> .instance.m_segments.m_buffer[SelectedSegmentId].Info;

            IList <LanePos> laneList = Constants.ServiceFactory.NetService.GetSortedLanes(SelectedSegmentId, ref Singleton <NetManager> .instance.m_segments.m_buffer[SelectedSegmentId], Singleton <NetManager> .instance.m_segments.m_buffer[SelectedSegmentId].m_startNode == SelectedNodeId, LaneArrowManager.LANE_TYPES, LaneArrowManager.VEHICLE_TYPES, true);
            SegmentGeometry geometry = SegmentGeometry.Get(SelectedSegmentId);

            if (geometry == null)
            {
                Log.Error($"LaneArrowTool._guiLaneChangeWindow: No geometry information available for segment {SelectedSegmentId}");
                return;
            }
            bool startNode = geometry.StartNodeId() == SelectedNodeId;

            GUILayout.BeginHorizontal();

            for (var i = 0; i < laneList.Count; i++)
            {
                var flags = (NetLane.Flags)Singleton <NetManager> .instance.m_lanes.m_buffer[laneList[i].laneId].m_flags;

                var style1 = new GUIStyle("button");
                var style2 = new GUIStyle("button")
                {
                    normal  = { textColor = new Color32(255, 0, 0, 255) },
                    hover   = { textColor = new Color32(255, 0, 0, 255) },
                    focused = { textColor = new Color32(255, 0, 0, 255) }
                };

                var laneStyle = new GUIStyle {
                    contentOffset = new Vector2(12f, 0f)
                };

                var laneTitleStyle = new GUIStyle {
                    contentOffset = new Vector2(36f, 2f),
                    normal        = { textColor = new Color(1f, 1f, 1f) }
                };

                GUILayout.BeginVertical(laneStyle);
                GUILayout.Label(Translation.GetString("Lane") + " " + (i + 1), laneTitleStyle);
                GUILayout.BeginVertical();
                GUILayout.BeginHorizontal();
                if (!Flags.applyLaneArrowFlags(laneList[i].laneId))
                {
                    Flags.removeLaneArrowFlags(laneList[i].laneId);
                }
                Flags.LaneArrowChangeResult res = Flags.LaneArrowChangeResult.Invalid;
                bool buttonClicked = false;
                if (GUILayout.Button("←", ((flags & NetLane.Flags.Left) == NetLane.Flags.Left ? style1 : style2), GUILayout.Width(35), GUILayout.Height(25)))
                {
                    buttonClicked = true;
                    LaneArrowManager.Instance.ToggleLaneArrows(laneList[i].laneId, startNode, Flags.LaneArrows.Left, out res);
                }
                if (GUILayout.Button("↑", ((flags & NetLane.Flags.Forward) == NetLane.Flags.Forward ? style1 : style2), GUILayout.Width(25), GUILayout.Height(35)))
                {
                    buttonClicked = true;
                    LaneArrowManager.Instance.ToggleLaneArrows(laneList[i].laneId, startNode, Flags.LaneArrows.Forward, out res);
                }
                if (GUILayout.Button("→", ((flags & NetLane.Flags.Right) == NetLane.Flags.Right ? style1 : style2), GUILayout.Width(35), GUILayout.Height(25)))
                {
                    buttonClicked = true;
                    LaneArrowManager.Instance.ToggleLaneArrows(laneList[i].laneId, startNode, Flags.LaneArrows.Right, out res);
                }

                if (buttonClicked)
                {
                    switch (res)
                    {
                    case Flags.LaneArrowChangeResult.Invalid:
                    case Flags.LaneArrowChangeResult.Success:
                    default:
                        break;

                    case Flags.LaneArrowChangeResult.HighwayArrows:
                        MainTool.ShowTooltip(Translation.GetString("Lane_Arrow_Changer_Disabled_Highway"));
                        break;

                    case Flags.LaneArrowChangeResult.LaneConnection:
                        MainTool.ShowTooltip(Translation.GetString("Lane_Arrow_Changer_Disabled_Connection"));
                        break;
                    }
                }

                GUILayout.EndHorizontal();
                GUILayout.EndVertical();
                GUILayout.EndVertical();
            }

            GUILayout.EndHorizontal();
        }