public static LaneFlagToggle Add(UIPanel parent, uint laneID, NetLaneExt.Flags flag) { var toggle = parent.AddUIComponent <LaneFlagToggle>(); toggle.flag_ = flag; toggle.laneID_ = laneID; ref var lane = ref man_.LaneBuffer[laneID];
public void RenameCustomFlag(int laneIndex, NetLaneExt.Flags flag, string name) { try { Assertion.NotNull(Template); var lane = Template.m_lanes[laneIndex]; Dictionary <NetLaneExt.Flags, string> dict = null; CustomLaneFlagNames0 ??= new Dictionary <NetInfo.Lane, Dictionary <NetLaneExt.Flags, string> >(); if (!CustomLaneFlagNames0.TryGetValue(lane, out dict)) { dict = CustomLaneFlagNames0[lane] = new Dictionary <NetLaneExt.Flags, string>(); } if (name.IsNullOrWhiteSpace() || name == flag.ToString()) { dict.Remove(flag); } else { dict[flag] = name; } OnCustomFlagRenamed?.Invoke(); } catch (Exception ex) { ex.Log(); } }
public string GetCustomLaneFlagName(NetLaneExt.Flags flag, int laneIndex) { try { if (CustomLaneFlagNames0 is not null) { // edit prefab var lane = Template.m_lanes[laneIndex]; if (CustomLaneFlagNames0.TryGetValue(lane, out var dict) && dict.TryGetValue(flag, out string name)) { return(name); } } else if (CustomLaneFlagNames is not null) { // normal Assertion.InRange(CustomLaneFlagNames, laneIndex); var dict = CustomLaneFlagNames[laneIndex]; if (dict != null && dict.TryGetValue(flag, out string name)) { return(name); } } } catch (Exception ex) { ex.Log(); } return(null); }
public void AddLaneFlags(UIPanel parent, LaneData lane, NetLaneExt.Flags mask) { try { LogCalled("parent", lane.LaneID, mask); AddSpacePanel(parent, 6); var laneContainer = AddPanel(parent); laneContainer.padding = laneContainer.autoLayoutPadding = new RectOffset(); var caption = LaneCaptionButton.Add(laneContainer, lane); var lanePanel = AddPanel(laneContainer); caption.SetTarget(lanePanel); foreach (var flag in mask.ExtractPow2Flags()) { LaneFlagToggle.Add(lanePanel, lane.LaneID, flag); } laneContainer.eventMouseEnter += (_, __) => HighlighLaneID = lane.LaneID; laneContainer.eventMouseLeave += (_, __) => { if (HighlighLaneID == lane.LaneID) { HighlighLaneID = 0; } }; laneContainer.atlas = TextureUtil.Ingame; laneContainer.backgroundSprite = "MenuPanelInfo"; } catch (Exception ex) { Log.Exception(ex); } }
internal static NetLaneExt.Flags GetArrowsExt(ref this LaneData lane) { NetLaneExt.Flags arrows = 0; ushort segmentID = lane.SegmentID; foreach (var transition in GetForwardTransisions(lane.LaneID, lane.StartNode)) { ushort segmentID2 = transition.segmentId; arrows |= ArrowDirectionUtil.GetArrowExt(segmentID, segmentID2); } return(arrows);//.LogRet($"GetArrowsExt(lane:{lane.LaneID} segment:{lane.SegmentID})"); }
/// <summary> /// Gets the used lane flags for the input lane (not all the lanes of the NetInfo) /// </summary> public static NetLaneExt.Flags GetUsedCustomFlagsLane(LaneData lane) { NetLaneExt.Flags mask = 0; var props = (lane.LaneInfo.m_laneProps?.m_props).EmptyIfNull(); foreach (var prop in props) { var metadata = prop.GetMetaData(); if (metadata != null) { mask |= (metadata.LaneFlags.Required | metadata.LaneFlags.Forbidden); } } return(mask & NetLaneExt.Flags.CustomsMask); }
public void AddLaneFlags(UIPanel container, LaneData lane, NetLaneExt.Flags mask) { try { LogCalled(container, lane.LaneID, mask); AddSpacePanel(container, 6); var laneContainer = LanePanelCollapsable.Add(container, lane, mask); laneContainer.eventMouseEnter += (_, __) => HighlighLaneID = lane.LaneID; laneContainer.eventMouseLeave += (_, __) => { if (HighlighLaneID == lane.LaneID) { HighlighLaneID = 0; } }; } catch (Exception ex) { Log.Exception(ex); } }
public static LanePanelCollapsable Add(UIComponent parent, LaneData lane, NetLaneExt.Flags mask) { Log.Called(); Assertion.AssertNotNull(parent, "parent"); var ret = parent.AddUIComponent <LanePanelCollapsable>(); Assertion.AssertNotNull(ret, "laneContainer"); var caption = LaneCaptionButton.Add(ret, lane); var innerPanel = AddPanel(ret); caption.SetTarget(innerPanel); innerPanel.name = "lanePanel"; foreach (var flag in mask.ExtractPow2Flags()) { LaneFlagToggle.Add(innerPanel, lane.LaneID, flag); } return(ret); }
public bool CheckFlags(NetLaneExt.Flags flags) => flags.CheckFlags(Required, Forbidden);
public static bool CheckFlags(this NetLaneExt.Flags value, NetLaneExt.Flags required, NetLaneExt.Flags forbidden) => (value & (required | forbidden)) == required;