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); }
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)); }
public abstract void WriteSettings(StringBuilder sb, int top, int playerdistance, int min, bool filterOffline, bool ignoreNpcs, bool connected, GridsBroadcastConfig pluginConfig);
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")); }