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... }
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); } } } }
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); }
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); }
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); }
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); } }
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; } } } }
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); }
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); }
private void SetNodeNetwork(ISignalNode node, SignalNetwork net) { }