Example #1
0
        public void AddConnection(Connection con)
        {
            NodePos       pos1 = con.pos1;
            NodePos       pos2 = con.pos2;
            SignalNetwork net1 = GetNetworkAt(pos1, false);
            SignalNetwork net2 = GetNetworkAt(pos2, false);

            if (net1 == null || net2 == null)
            {
                return;
            }
            SignalNetwork mergedNetwork;

            if (net1 != net2)
            {
                mergedNetwork = net1.Merge(net2);
                Api.Logger.Debug("Merging signal networks {0} and {1}, into net {2}", net1.networkId, net2.networkId, mergedNetwork.networkId);
                foreach (ISignalNode node in mergedNetwork.nodes.Values)
                {
                    SetNodeNetwork(node, mergedNetwork);
                }
            }
            else
            {
                mergedNetwork = net1;
            }

            Api.Logger.Debug("Adding connection into net {0}", mergedNetwork.networkId);
            mergedNetwork.AddConnection(con);

            //Notify handler and sync ect...
        }
Example #2
0
        private static void EditProto(Proto proto)
        {
            if (proto is ItemProto itemProto)
            {
                if (itemUpgradeList.ContainsKey(itemProto.ID))
                {
                    itemProto.Grade = itemUpgradeList[itemProto.ID];
                    SignalNetwork.logDebug("Changing grade of " + itemProto.name);
                }

                if (itemProto.Grade == 0 || items.ContainsKey(itemProto.ID))
                {
                    return;
                }

                foreach (var kv in items)
                {
                    if (kv.Value.Grade == 0 || kv.Value.Upgrades == null)
                    {
                        continue;
                    }
                    if (itemProto.Grade > kv.Value.Upgrades.Length)
                    {
                        continue;
                    }

                    if (kv.Value.Upgrades[itemProto.Grade - 1] == itemProto.ID)
                    {
                        itemProto.Upgrades = kv.Value.Upgrades;
                        SignalNetwork.logDebug("Updating upgrade list of " + itemProto.name);
                    }
                }
            }
        }
Example #3
0
        public void TryToAddConnection(Connection con)
        {
            NodePos       pos1 = con.pos1;
            NodePos       pos2 = con.pos2;
            SignalNetwork net1 = GetNetworkAt(pos1, false);
            SignalNetwork net2 = GetNetworkAt(pos2, false);

            if (net1 == null && net2 == null)
            {
                return;
            }
            if (net1 == null)
            {
                ISignalNode node = GetDeviceAt(pos1.blockPos)?.GetNodeAt(pos1);
                if (node == null)
                {
                    return;
                }
                net2.AddNodesFoundFrom(pos1, node);
            }
            else if (net2 == null)
            {
                ISignalNode node = GetDeviceAt(pos2.blockPos)?.GetNodeAt(pos2);
                if (node == null)
                {
                    return;
                }
                net1.AddNodesFoundFrom(pos2, node);
            }
            AddConnection(con);
        }
Example #4
0
        private SignalNetwork CreateNetwork()
        {
            Api.Logger.Debug("Creating signal network with Id: {0}", data.nextNetworkId);
            SignalNetwork net = new SignalNetwork(this, data.nextNetworkId);

            data.networksById[data.nextNetworkId] = net;
            data.nextNetworkId++;
            return(net);
        }
Example #5
0
        public static bool Prefix(ref string filename)
        {
            if (filename.Contains(Registry.keyWord) && !Registry.vertaFolder.Equals(""))
            {
                filename = $"{Registry.vertaFolder}/{filename}";

                SignalNetwork.logDebug("Loading my verta file " + filename);
            }

            return(true);
        }
Example #6
0
        internal void OnDeviceRemoved(ISignalNodeProvider device)
        {
            Dictionary <NodePos, ISignalNode> nodes = device.GetNodes();

            foreach (ISignalNode node in nodes.Values)
            {
                SignalNetwork net = GetNetworkAt(node.Pos, false);
                if (net == null)
                {
                    return;
                }
                net.RemoveNode(node.Pos);
            }
        }
Example #7
0
        public static void Postfix(ItemProto[,] ___protos)
        {
            SignalNetwork.logDebug("Patching UIBuildMenu");

            foreach (var kv in Registry.items)
            {
                int buildIndex = kv.Value.BuildIndex;
                if (buildIndex > 0)
                {
                    int num  = buildIndex / 100;
                    int num2 = buildIndex % 100;
                    if (num <= 12 && num2 <= 12)
                    {
                        ___protos[num, num2] = kv.Value;
                    }
                }
            }
        }
Example #8
0
        private SignalNetwork GetNetworkAt(NodePos pos, bool createIfnull)
        {
            foreach (SignalNetwork net in data.networksById.Values)
            {
                if (net.nodes.ContainsKey(pos))
                {
                    return(net);
                }
            }

            if (!createIfnull)
            {
                return(null);
            }

            SignalNetwork newNet = CreateNetwork();

            return(newNet);
        }
Example #9
0
        public static bool Prefix(ref string path, Type systemTypeInstance, ref UnityEngine.Object __result)
        {
            if (path.Contains(Registry.keyWord) && Registry.bundle != null)
            {
                SignalNetwork.logDebug("Loading my asset " + path);
                if (Registry.bundle.Contains(path + ".prefab") && systemTypeInstance == typeof(GameObject))
                {
                    Material[]         mats     = Registry.modelMats[path];
                    UnityEngine.Object myPrefab = Registry.bundle.LoadAsset(path + ".prefab");
                    if (myPrefab != null)
                    {
                        MeshRenderer[] renderers = ((GameObject)myPrefab).GetComponentsInChildren <MeshRenderer>();
                        foreach (MeshRenderer renderer in renderers)
                        {
                            Material[] newMats = new Material[renderer.sharedMaterials.Length];
                            for (int i = 0; i < newMats.Length; i++)
                            {
                                newMats[i] = mats[i];
                            }

                            renderer.sharedMaterials = newMats;
                        }
                    }

                    __result = myPrefab;
                    return(false);
                }

                if (Registry.bundle.Contains(path + ".png"))
                {
                    UnityEngine.Object mySprite =
                        Registry.bundle.LoadAsset(path + ".png", systemTypeInstance);
                    __result = mySprite;
                    return(false);
                }
            }

            return(true);
        }
Example #10
0
 private void SetNodeNetwork(ISignalNode node, SignalNetwork net)
 {
 }