public void UpdateRadarSettings(RadarSettings updated)
        {
            _logger.debugLog("Updating settings", "UpdateRadarSettings");

            // Process assginments
            List <long> unassign = _settings.assignedIds.Except(updated.assignedIds).ToList();
            List <long> assign   = updated.assignedIds.Except(_settings.assignedIds).ToList();

            foreach (Radar r in _allRadars)
            {
                if (unassign.Contains(r.entID))
                {
                    UnassignedRadar(r);
                }
                else if (assign.Contains(r.entID))
                {
                    AssignRadar(r);
                }
            }

            _settings.range     = updated.range;
            _settings.frequency = updated.frequency;

            RecalculateSectorCoverage();
            ReclassifySystem();
        }
        /// <summary>
        /// Deserializes data saved in the world file
        /// </summary>
        private void LoadSavedData()
        {
            if (Helpers.IsServer)
            {
                _logger.debugLog("Starting load", "LoadSavedData");

                if (Entity.Storage.ContainsKey(Constants.GUIDRadarSettings))
                {
                    _logger.debugLog("Loading saved radar settings: " + Entity.Storage[Constants.GUIDRadarSettings], "LoadSavedData");
                    RadarSettings settings = MyAPIGateway.Utilities.SerializeFromXML <RadarSettings>(Entity.Storage[Constants.GUIDRadarSettings]);

                    UpdateRadarSettings(settings);
                }
            }
            else
            {
                _logger.debugLog("Getting radar settings from server", "LoadSavedData");
                Message <long, long> request
                    = new Message <long, long>(Entity.EntityId, 0);
                MyAPIGateway.Multiplayer.SendMessageToServer(
                    Constants.MIDGetRadarSettingsServer,
                    request.ToXML());
            }
        }
Пример #3
0
        public static List <ClassifiedObject> ScanCreatures(RadarSettings settings, Core ArcheBuddyCore)
        {
            List <Creature>         AllCreatures      = ArcheBuddyCore.getCreatures();
            List <ClassifiedObject> FilteredCreatures = new List <ClassifiedObject>(AllCreatures.Count);

            foreach (Creature c in AllCreatures)
            {
                if (c.type == BotTypes.Housing && settings.HouseScanSettings.ShowRealEstate)
                {
                    Housing h = (Housing)c;
                    //this is a house, but what kind?
                    if (h.housingId == 267) //Scarecrow Garden
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.ScarecrowGarden, obj = c
                        });
                        continue;
                    }
                    else if (h.housingId == 89) //Scarecrow Farm
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.ScarecrowFarm, obj = c
                        });
                        continue;
                    }
                    else if (h.housingId == 171 || h.housingId == 199 ||
                             h.housingId == 182 || h.housingId == 200 ||
                             h.housingId == 202 || h.housingId == 204 || //actually some of these are Manors
                             h.housingId == 194 || h.housingId == 203 ||
                             h.housingId == 201 || h.housingId == 197)   //ThatchedFarmhouse or otherwise 24x24
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.Farmhouse, obj = c
                        });
                        continue;
                    }
                    else if (h.housingId >= 172 && h.housingId <= 181) //Small house
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.SmallHousing, obj = c
                        });
                        continue;
                    }
                    else if (h.housingId == 41 || h.housingId == 42 || h.housingId == 43 || h.housingId == 90)
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.HousingWorkbench, obj = c
                        });
                        continue;
                    }
                    else if (false)
                    {
                        //i don't know what 28x28 or greater houses look like yet
                        //FilteredCreatures.Add(new ClassifiedObject { category = ObjectCategory.LargeHousing, obj = c });
                    }
                }


                if (c.type == BotTypes.Player)
                {
                    if (ArcheBuddyCore.isAlly(c) && settings.ActiveTab.ShowAlliedPlayers)
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.FriendlyPlayer, obj = c
                        });
                        continue;
                    }
                    else if (ArcheBuddyCore.isEnemy(c) && settings.ActiveTab.ShowEnemyPlayers)
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.EnemyPlayer, obj = c
                        });
                        continue;
                    }
                }

                if (c.type == BotTypes.Npc)
                {
                    //ignore Glorious Nui because, who cares
                    if (c.name.Equals("Glorious Nui"))
                    {
                        continue;
                    }

                    if (c.factionId == 1054)
                    {
                        continue;                      //ignore fast travel portals
                    }
                    if (ArcheBuddyCore.isAlly(c) && settings.ActiveTab.ShowFriendlyNPCs)
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.FriendlyNPC, obj = c
                        });
                        continue;
                    }
                    else if (ArcheBuddyCore.isEnemy(c) && settings.ActiveTab.ShowEnemyNPCs)
                    {
                        FilteredCreatures.Add(new ClassifiedObject {
                            category = ObjectCategory.EnemyNPC, obj = c
                        });
                        continue;
                    }
                }

                if (c.type == BotTypes.Slave)
                {
                    Slave s = (Slave)c;
                    if (s.slaveId == 14 || s.slaveId == 76) //clippers
                    {
                        if (ArcheBuddyCore.isAlly(s) && settings.ActiveTab.ShowAlliedPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.FriendlyClipper, obj = s
                            });
                            continue;
                        }
                        else if (ArcheBuddyCore.isEnemy(s) && settings.ActiveTab.ShowEnemyPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.EnemyClipper, obj = s
                            });
                            continue;
                        }
                    }
                    else if (s.slaveId == 110)     //fishing boats
                    {
                        if (ArcheBuddyCore.isAlly(s) && settings.ActiveTab.ShowAlliedPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.FriendlyFishingBoat, obj = s
                            });
                            continue;
                        }
                        else if (ArcheBuddyCore.isEnemy(s) && settings.ActiveTab.ShowEnemyPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.EnemyFishingBoat, obj = s
                            });
                            continue;
                        }
                    }
                    else if (s.slaveId == 75) //merchant ships
                    {
                        if (ArcheBuddyCore.isAlly(s) && settings.ActiveTab.ShowAlliedPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.FriendlyMerchantShip, obj = s
                            });
                            continue;
                        }
                        else if (ArcheBuddyCore.isEnemy(s) && settings.ActiveTab.ShowEnemyPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.EnemyMerchantShip, obj = s
                            });
                            continue;
                        }
                    }
                    else if (s.slaveId == 21) //galleons
                    {
                        if (ArcheBuddyCore.isAlly(s) && settings.ActiveTab.ShowAlliedPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.FriendlyGalleon, obj = s
                            });
                            continue;
                        }
                        else if (ArcheBuddyCore.isEnemy(s) && settings.ActiveTab.ShowEnemyPlayers)
                        {
                            FilteredCreatures.Add(new ClassifiedObject {
                                category = ObjectCategory.EnemyGalleon, obj = s
                            });
                            continue;
                        }
                    }
                }
                if (c.type == BotTypes.Transfer)
                {
                    //it's an airship or carriage
                }
            }
            return(FilteredCreatures);
        }