public override List <KeyValuePair <long, List <MyCubeGrid> > > FindGrids(GridsBroadcastConfig config, bool connected)
        {
            List <KeyValuePair <long, List <MyCubeGrid> > > gridsList = new List <KeyValuePair <long, List <MyCubeGrid> > >();

            if (connected)
            {
                foreach (var group in MyCubeGridGroups.Static.Physical.Groups)
                {
                    var grids = CheckGroupsPcu(group.Nodes, config);

                    if (grids.Value.Count > 0)
                    {
                        gridsList.Add(grids);
                    }
                }
            }
            else
            {
                foreach (var group in MyCubeGridGroups.Static.Mechanical.Groups)
                {
                    var grids = CheckGroupsPcu(group.Nodes, config);

                    if (grids.Value.Count > 0)
                    {
                        gridsList.Add(grids);
                    }
                }
            }

            gridsList.Sort(delegate(KeyValuePair <long, List <MyCubeGrid> > pair1, KeyValuePair <long, List <MyCubeGrid> > pair2) {
                return(pair2.Key.CompareTo(pair1.Key));
            });

            return(gridsList);
        }
示例#2
0
        public static bool IsGridInsideFilter(MyCubeGrid grid, GridsBroadcastConfig config)
        {
            if (grid.IsStatic && !config.SendStations)
            {
                return(false);
            }

            if (!grid.IsStatic && !config.SendShips)
            {
                return(false);
            }

            if (grid.GridSizeEnum == MyCubeSize.Large && !config.SendLargeGrids)
            {
                return(false);
            }

            if (grid.GridSizeEnum == MyCubeSize.Small && !config.SendSmallGrids)
            {
                return(false);
            }

            return(true);
        }
        public override List <KeyValuePair <long, List <MyCubeGrid> > > FindGrids(GridsBroadcastConfig config, bool connected)
        {
            List <KeyValuePair <long, List <MyCubeGrid> > > gridsList = new List <KeyValuePair <long, List <MyCubeGrid> > >();

            bool checkFaction = config.MinDaysFactionCheck;

            DateTime today = DateTime.Today;

            foreach (var group in MyCubeGridGroups.Static.Mechanical.Groups)
            {
                var relevantGrids = CheckGroupsDays(group.Nodes, checkFaction, today);

                if (relevantGrids.Value.Count > 0)
                {
                    gridsList.Add(relevantGrids);
                }
            }

            gridsList.Sort(delegate(KeyValuePair <long, List <MyCubeGrid> > pair1, KeyValuePair <long, List <MyCubeGrid> > pair2) {
                return(pair2.Key.CompareTo(pair1.Key));
            });

            return(gridsList);
        }
        private KeyValuePair <long, List <MyCubeGrid> > CheckGroupsPcu(HashSetReader <MyGroups <MyCubeGrid, MyGridPhysicalGroupData> .Node> nodes, GridsBroadcastConfig config)
        {
            List <MyCubeGrid> gridsList = new List <MyCubeGrid>();
            long pcu = 0;

            foreach (var groupNodes in nodes)
            {
                MyCubeGrid cubeGrid = groupNodes.NodeData;

                if (cubeGrid.Physics == null)
                {
                    continue;
                }

                if (!IsGridInsideFilter(cubeGrid, config))
                {
                    continue;
                }

                gridsList.Add(cubeGrid);

                pcu += cubeGrid.BlocksPCU;
            }

            return(new KeyValuePair <long, List <MyCubeGrid> >(pcu, gridsList));
        }
 public override void WriteSettings(StringBuilder sb, int top, int playerdistance, int min, bool filterOffline, bool ignoreNpcs, bool connected, GridsBroadcastConfig pluginConfig)
 {
     sb.AppendLine("[Top " + top + " grids by " + GetUnitName() + "]");
     sb.AppendLine();
     sb.AppendLine("Used Settings");
     sb.AppendLine("---------------------------------------");
     sb.AppendLine("Number of grids: " + top);
     sb.AppendLine("Player distance: " + playerdistance);
     sb.AppendLine("Min " + GetUnitName() + ": " + min);
     sb.AppendLine("Show Offline: " + !filterOffline);
     sb.AppendLine("Show NPCs: " + !ignoreNpcs);
     sb.AppendLine("Include: " + (!connected ? "Phyiscal Connections (Rotors, Pistons)" : "Mechanical Connections (Rotors, Pistons, Connectors)"));
 }
        private KeyValuePair <long, List <MyCubeGrid> > CheckGroupsDistance(Vector3D origin, HashSetReader <MyGroups <MyCubeGrid, MyGridPhysicalGroupData> .Node> nodes, GridsBroadcastConfig config)
        {
            List <MyCubeGrid> gridsList = new List <MyCubeGrid>();
            double            distance  = 0;

            foreach (var groupNodes in nodes)
            {
                MyCubeGrid cubeGrid = groupNodes.NodeData;

                if (cubeGrid.Physics == null)
                {
                    continue;
                }

                if (!IsGridInsideFilter(cubeGrid, config))
                {
                    continue;
                }

                gridsList.Add(cubeGrid);

                var gridPositon = cubeGrid.PositionComp.GetPosition();

                double distanceSquared = Vector3D.DistanceSquared(origin, gridPositon);

                distance = Math.Max(distance, distanceSquared);
            }

            return(new KeyValuePair <long, List <MyCubeGrid> >((long)Math.Sqrt(distance), gridsList));
        }
示例#7
0
 public abstract void WriteSettings(StringBuilder sb, int top, int playerdistance, int min, bool filterOffline, bool ignoreNpcs, bool connected, GridsBroadcastConfig pluginConfig);
示例#8
0
 public abstract List <KeyValuePair <long, List <MyCubeGrid> > > FindGrids(GridsBroadcastConfig config, bool connected);
 public override void WriteSettings(StringBuilder sb, int top, int playerdistance, int min, bool filterOffline, bool ignoreNpcs, bool connected, GridsBroadcastConfig pluginConfig)
 {
     sb.AppendLine("[Abandoned grids in " + GetUnitName() + "]");
     sb.AppendLine();
     sb.AppendLine("Used Settings");
     sb.AppendLine("---------------------------------------");
     sb.AppendLine("Min " + GetUnitName() + ": " + min);
     sb.AppendLine("Faction: " + (pluginConfig.MinDaysFactionCheck ? "true" : "false"));
 }