Example #1
0
        public bool RemoveSubnet(SubnetID subnet)
        {
            var ret = Simulation.RemoveSubnet(subnet);

            Print($"RemoveSubnet(Subnet: {subnet}) -> {ret}");
            return(ret);
        }
Example #2
0
        public bool AddSubnet(SubnetID subnet)
        {
            var ret = Simulation.AddSubnet(subnet);

            Print($"AddSubnet(Subnet: {subnet}) -> {ret}");
            return(ret);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
 }
Example #7
0
 public static string SubnetAttributeKey(SubnetID id)
 {
     return(Attribute.SysAttributeSubnet + id.Value);
 }
Example #8
0
 public bool AddSubnet(SubnetID subnet) => RustLogic.AddSubnet(data, (int)subnet);
Example #9
0
 public bool RemoveSubnet(SubnetID subnet) => RustLogic.RemoveSubnet(data, (int)subnet);
Example #10
0
 public bool Unlink(ComponentID component, int port, SubnetID subnet) => RustLogic.Unlink(data, (int)component, port, (int)subnet);
Example #11
0
 public ValueState SubnetState(SubnetID subnet) => Engine.SubnetState(subnet);
Example #12
0
 public bool Unlink(ComponentID component, int port, SubnetID subnet) => Engine.Unlink(component, port, subnet);
Example #13
0
 public bool RemoveSubnet(SubnetID subnet) => Engine.RemoveSubnet(subnet);
Example #14
0
 public bool AddSubnet(SubnetID subnet) => Engine.AddSubnet(subnet);
Example #15
0
 public Subnet(SubnetID id, Value value)
 {
     ID    = id;
     Value = value;
 }
Example #16
0
 public Subnet(SubnetID id)
 {
     ID    = id;
     Value = Value.Floating;
 }
Example #17
0
 public ValueState SubnetState(SubnetID subnet) => RustLogic.SubnetState(data, (int)subnet);