@@ -127,6 +127,7 @@ internal DbcStore(IParameterFactory parameterFactory,
127127 public Dictionary < long , Dictionary < long , long > > ScenarioToStepStore { get ; internal set ; } = new ( ) ;
128128
129129 public IReadOnlyList < IArea > Areas { get ; internal set ; } = Array . Empty < IArea > ( ) ;
130+ public IReadOnlyList < IArea > ZonesOnly { get ; internal set ; } = Array . Empty < IArea > ( ) ;
130131 public Dictionary < uint , IArea > AreaById { get ; internal set ; } = new ( ) ;
131132
132133 public IReadOnlyList < IMap > Maps { get ; internal set ; } = Array . Empty < IMap > ( ) ;
@@ -235,6 +236,7 @@ public void FinishMainThread()
235236 store . BattlePetSpeciesIdStore = data . BattlePetSpeciesIdStore ;
236237 store . CurrencyTypeStore = data . CurrencyTypeStore ;
237238 store . Areas = data . Areas ;
239+ store . ZonesOnly = data . Areas . Where ( a => a . ParentAreaId == 0 ) . ToList ( ) ;
238240 store . CharShipmentContainers = data . CharShipmentContainers ;
239241 store . AreaById = data . Areas . ToDictionary ( a => a . Id , a => ( IArea ) a ) ;
240242 store . Missions = data . Missions ;
@@ -399,11 +401,11 @@ void RegisterCharShipmentContainerParameter(string key, TabularDataAsyncColumn<u
399401 }
400402 RegisterCharShipmentContainerParameter ( "CharShipmentContainerParameter" ) ;
401403
402- void RegisterZoneAreParameter ( string key , TabularDataAsyncColumn < uint > ? counterColumn = null )
404+ void RegisterZoneAreaParameter ( string key , TabularDataAsyncColumn < uint > ? counterColumn = null , bool onlyZones = false )
403405 {
404406 parameterFactory . Register ( key ,
405407 new DbcParameterWithPicker < IArea > ( dataPicker , data . AreaStore , "zone or area" , area => area . Id ,
406- ( ) => store . Areas ,
408+ ( ) => onlyZones ? store . ZonesOnly : store . Areas ,
407409 ( area , text ) => area . Name . Contains ( text , StringComparison . InvariantCultureIgnoreCase ) || area . Id . Contains ( text ) ||
408410 area . MapId . Contains ( text ) || ( area . Map != null && area . Map . Name . Contains ( text , StringComparison . InvariantCultureIgnoreCase ) ) ||
409411 area . ParentAreaId . Contains ( text ) || ( area . ParentArea != null && area . ParentArea . Name . Contains ( text , StringComparison . InvariantCultureIgnoreCase ) ) ,
@@ -421,15 +423,16 @@ void RegisterZoneAreParameter(string key, TabularDataAsyncColumn<uint>? counterC
421423 new TabularDataColumn ( nameof ( IArea . Map ) + "." + nameof ( IMap . Name ) , "Map name" , 120 ) ,
422424 counterColumn ) , QuickAccessMode . Limited ) ;
423425 }
424- RegisterZoneAreParameter ( "ZoneAreaParameter" ) ;
425- RegisterZoneAreParameter ( "ZoneArea(spell_area)Parameter" ,
426+ RegisterZoneAreaParameter ( "ZoneAreaParameter" ) ;
427+ RegisterZoneAreaParameter ( "ZoneParameter" , onlyZones : true ) ;
428+ RegisterZoneAreaParameter ( "ZoneArea(spell_area)Parameter" ,
426429 new TabularDataAsyncColumn < uint > ( nameof ( IArea . Id ) , "Count" , async ( zoneId , token ) =>
427430 {
428431 if ( zoneId == 0 )
429432 return "0" ;
430433 return ( await store . databaseRowsCountProvider . GetRowsCountByPrimaryKey ( DatabaseTable . WorldTable ( "spell_area" ) , zoneId , token ) ) . ToString ( ) ;
431434 } , 50 ) ) ;
432- RegisterZoneAreParameter ( "ZoneArea(phase_definitions)Parameter" ,
435+ RegisterZoneAreaParameter ( "ZoneArea(phase_definitions)Parameter" ,
433436 new TabularDataAsyncColumn < uint > ( nameof ( IArea . Id ) , "Count" , async ( zoneId , token ) =>
434437 {
435438 if ( zoneId == 0 )
0 commit comments