feat: Adds AdvancedSearch (XmlFind) (#1649)

### Summary

Adds Advanced Search (XmlFind) using `[AS` command.


Notable differences from XmlFind:
* No save to file.
* No "Display from" option (might add that later).
* No advanced XmlSpawner property test syntax. Only basic property operator comparisons.
* This version will freeze your shard, but fans out to all processors just like world saves. (So it should be stupid fast, especially if you have lots of cores)
* Does not support spawn entry/type/error searching. We have a spawn search command to do that already.
* I haven't set up correct "defaults" for the options when you first open it. I'll do that later.

### Screenshots
<img width="575" alt="image" src="https://github.com/modernuo/ModernUO/assets/3953314/2b08e586-0ea6-41c4-b7cd-f70e2ee62b86">

<img width="575" alt="image" src="https://github.com/modernuo/ModernUO/assets/3953314/da3f16b9-6a9e-4d2c-9d93-6cdfa67b4ddc">

<img width="572" alt="image" src="https://github.com/modernuo/ModernUO/assets/3953314/ae1d0a3f-a30d-497c-99ea-2cc988147f8f">
This commit is contained in:
Kamron Batman 2023-12-28 18:55:47 -08:00 • committed by GitHub
parent fe6e9dfe5c
commit fbbc407954
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 2129 additions and 0 deletions

View file

@ -0,0 +1,39 @@
using System;
namespace Server.Engines.AdvancedSearch;
public record AdvancedSearchResult(string Name, Type Type, Point3D Location, Map Map, IEntity Parent)
{
public IEntity Entity { get; set; }
public bool Selected { get; set; }
public Point3D GetLocation()
{
if (Parent?.Deleted == false)
{
return Parent.Location;
}
if (Entity?.Deleted == false)
{
return Entity.Location;
}
return Location;
}
public Map GetMap()
{
if (Parent?.Deleted == false)
{
return Parent.Map;
}
if (Entity?.Deleted == false)
{
return Entity.Map;
}
return Map;
}
}