public static bool Prefix(ref bool __result, ushort nodeId, ref ToggleTrafficLightError reason)
        {
            var nodeData = NodeManager.Instance.buffer[nodeId];

            return(PrefixUtils.HandleTernaryBool(
                       nodeData?.CanHaveTrafficLights(out reason),
                       ref __result));
        }
        public static bool Prefix(ushort nodeID, ushort segmentID, ref bool __result)
        {
            var data = SegmentEndManager.Instance.GetAt(
                segmentID: segmentID, nodeID: nodeID);

            return(PrefixUtils.HandleTernaryBool(
                       data?.ShouldHideCrossingTexture(),
                       ref __result));
        }
        public static bool Prefix(ushort segmentId, bool startNode, ref bool __result)
        {
            ushort   nodeID = startNode ? segmentId.ToSegment().m_startNode : segmentId.ToSegment().m_endNode;
            NodeData data   = NodeManager.Instance.buffer[nodeID];

            return(PrefixUtils.HandleTernaryBool(
                       data?.GetDefaultPedestrianCrossingAllowed(),
                       ref __result));
        }
Ejemplo n.º 4
0
        public static bool Prefix(ushort segmentId, bool startNode, ref bool __result)
        {
            ushort nodeID = startNode ? segmentId.ToSegment().m_startNode : segmentId.ToSegment().m_endNode;
            var    data   = NodeManager.Instance.buffer[nodeID];

            return(PrefixUtils.HandleTernaryBool(
                       data?.GetDefaultEnteringBlockedJunctionAllowed(),
                       ref __result));
        }
Ejemplo n.º 5
0
        public static bool Prefix(ushort segmentId, bool startNode, ref bool __result)
        {
            ushort nodeID = startNode ? segmentId.ToSegment().m_startNode : segmentId.ToSegment().m_endNode;
            var    data   = NodeManager.Instance.buffer[nodeID];

            return(PrefixUtils.HandleTernaryBool(
                       data?.IsUturnAllowedConfigurable(),
                       ref __result));
        }
        public static bool Prefix(ushort segmentId, bool startNode, ref bool __result)
        {
            ushort nodeID = startNode ? segmentId.ToSegment().m_startNode : segmentId.ToSegment().m_endNode;
            var    data   = NodeManager.Instance.buffer[nodeID];

            if (data == null)
            {
                var  flags  = nodeID.ToNode().m_flags;
                bool oneway = flags.IsFlagSet(NetNode.Flags.OneWayIn) & flags.IsFlagSet(NetNode.Flags.OneWayOut);
                if (oneway & !segmentId.ToSegment().Info.m_hasPedestrianLanes)
                {
                    __result = false;
                    return(false);
                }
            }


            return(PrefixUtils.HandleTernaryBool(
                       data?.IsEnteringBlockedJunctionAllowedConfigurable(),
                       ref __result));
        }
Ejemplo n.º 7
0
        private void OnItemChanged()
        {
            reforgeList.Clear();
            if (reforgeSlot.item.IsAir)
            {
                return;
            }

            Item controlItem = reforgeSlot.item.Clone();

            if (!ItemLoader.PreReforge(controlItem))
            {
                return;
            }
            controlItem.netDefaults(reforgeSlot.item.netID);
            controlItem = controlItem.CloneWithModdedDataFrom(reforgeSlot.item);

            UIReforgeLabel reforgeLabel;
            List <byte>    tempSelected = new List <byte>();
            bool           isArmor      = false;

            for (byte i = 1; i < ModPrefix.PrefixCount; i++)
            {
                Item tempItem = controlItem.Clone();

                isArmor = ModCompat.ArmorPrefix(tempItem);
                if (isArmor && !tempItem.accessory)
                {
                    tempItem.accessory = true;
                }

                if (!tempItem.CanApplyPrefix(i))
                {
                    continue;
                }

                tempItem.Prefix(i);
                if (isArmor)
                {
                    ModCompat.ApplyArmorPrefix(tempItem, i);
                }

                if (tempItem.prefix != i)
                {
                    continue;
                }
                reforgeLabel              = new UIReforgeLabel(tempItem);
                reforgeLabel.OnMouseDown += ChoseReforge;
                reforgeLabel.SetPadding(10);

                if (selectedPrefixes.Contains(i))
                {
                    reforgeLabel.selected = true;
                    tempSelected.Add(i);
                }

                PrefixUtils.Prefix pref = PrefixUtils.BestPrefix(tempItem);

                if (pref == PrefixUtils.Prefix.Accessory)
                {
                    if (i == 65 || i == 72 || i == 68)
                    {
                        reforgeLabel.BorderColor = Color.Yellow;
                        reforgeLabel.Text       += "   (Recommended)";
                        reforgeLabel.recommended = true;
                    }
                }
                else if ((int)pref == i)
                {
                    reforgeLabel.BorderColor = Color.Yellow;
                    reforgeLabel.Text       += "   (Recommended)";
                    reforgeLabel.recommended = true;
                }

                reforgeList.Add(reforgeLabel);
            }

            selectedPrefixes = tempSelected;
        }