public bool RemoveSubnet(SubnetID subnet) { var ret = Simulation.RemoveSubnet(subnet); Print($"RemoveSubnet(Subnet: {subnet}) -> {ret}"); return(ret); }
public bool AddSubnet(SubnetID subnet) { var ret = Simulation.AddSubnet(subnet); Print($"AddSubnet(Subnet: {subnet}) -> {ret}"); return(ret); }
public bool Unlink(ComponentID component, int port, SubnetID subnet) { var ret = Simulation.Unlink(component, port, subnet); Print($"Unlink(Component: {component}, Port: {port}, Subnet: {subnet}) -> {ret}"); return(ret); }
public ValueState SubnetState(SubnetID subnet) { var ret = Simulation.SubnetState(subnet); //Print($"SubnetState(Subnet: {subnet}) -> {ret}"); return(ret); }
public List <(string, List <Node>)> GetSelectionBase(SubnetID subnetId, Selector sel) { List <(string, List <Node>)> result = new(); Filters.TryGetValue(sel.Filter, out Filter filter); if (sel.Attribute == "") { foreach (var node in Map.Nodes.Where(n => subnetId is null || BelongToSubnet(n, subnetId)).Where(p => sel.Filter == MainFilterName || Match(filter, p))) { result.Add(("", new List <Node> { node })); } } else { foreach (var group in Map.Nodes.Where(n => subnetId is null || BelongToSubnet(n, subnetId)).Where(p => sel.Filter == MainFilterName || Match(filter, p)).GroupBy(p => p.Attributes.TryGetValue(sel.Attribute, out string value) ? value : "")) { result.Add((group.Key, group.ToList())); } } if (pivot is not null) { List <(string, List <Node>)> r = new(); foreach (var group in result) { var list = group.Item2.Select(p => { p.Weight = weightFunc(p); p.Distance = p.Hash.Distance(pivotHash); return(p); }).ToList(); var uniform = !list.Skip(1).Any(p => p.Weight != list[0].Weight); if (uniform) { list.Sort((n1, n2) => { return(n1.Distance.CompareTo(n2.Distance)); }); } else { list.Sort((n1, n2) => { var w1 = (~0u - n1.Distance) * n1.Weight; var w2 = (~0u - n2.Distance) * n2.Weight; return(w2.CompareTo(w1)); }); } r.Add((group.Item1, list)); } result = r; } return(result); }
private bool BelongToSubnet(Node node, SubnetID id) { foreach (var subnet in node.Info.Subnets) { if (subnet.Equals(id)) { return(true); } } return(false); }
public static string SubnetAttributeKey(SubnetID id) { return(Attribute.SysAttributeSubnet + id.Value); }
public bool AddSubnet(SubnetID subnet) => RustLogic.AddSubnet(data, (int)subnet);
public bool RemoveSubnet(SubnetID subnet) => RustLogic.RemoveSubnet(data, (int)subnet);
public bool Unlink(ComponentID component, int port, SubnetID subnet) => RustLogic.Unlink(data, (int)component, port, (int)subnet);
public ValueState SubnetState(SubnetID subnet) => Engine.SubnetState(subnet);
public bool Unlink(ComponentID component, int port, SubnetID subnet) => Engine.Unlink(component, port, subnet);
public bool RemoveSubnet(SubnetID subnet) => Engine.RemoveSubnet(subnet);
public bool AddSubnet(SubnetID subnet) => Engine.AddSubnet(subnet);
public Subnet(SubnetID id, Value value) { ID = id; Value = value; }
public Subnet(SubnetID id) { ID = id; Value = Value.Floating; }
public ValueState SubnetState(SubnetID subnet) => RustLogic.SubnetState(data, (int)subnet);