public List<GameObject> GetObjectsAt(int dx, int dy)
{
var tile = _tiles[dx, dy];
var ret = new List<GameObject>();
ret.AddRange(tile.AllObjects.OfType<SmudgeObject>());
ret.AddRange(tile.AllObjects.OfType<OverlayObject>().Where(o => o.Drawable == null || !o.Drawable.Overrides));
ret.AddRange(tile.AllObjects.OfType<TerrainObject>());
ret.AddRange(tile.AllObjects.OfType<InfantryObject>());
ret.AddRange(tile.AllObjects.OfType<UnitObject>());
ret.AddRange(tile.AllObjects.OfType<StructureObject>());
ret.AddRange(tile.AllObjects.OfType<AircraftObject>());
ret.AddRange(tile.AllObjects.OfType<OverlayObject>().Where(o => o.Drawable != null && o.Drawable.Overrides));
return ret;
}