mirror of https://github.com/OpenRCT2/OpenRCT2.git
Fix filtering
This commit is contained in:
parent
ec0d35bac7
commit
71bd110526
|
@ -222,7 +222,7 @@ static void window_editor_object_selection_manage_tracks();
|
||||||
static void editor_load_selected_objects();
|
static void editor_load_selected_objects();
|
||||||
static bool filter_selected(uint8_t objectFlags);
|
static bool filter_selected(uint8_t objectFlags);
|
||||||
static bool filter_string(const ObjectRepositoryItem* item);
|
static bool filter_string(const ObjectRepositoryItem* item);
|
||||||
static bool filter_source(const ObjectRepositoryItem* item, bool selected);
|
static bool filter_source(const ObjectRepositoryItem* item);
|
||||||
static bool filter_chunks(const ObjectRepositoryItem* item);
|
static bool filter_chunks(const ObjectRepositoryItem* item);
|
||||||
static void filter_update_counts();
|
static void filter_update_counts();
|
||||||
|
|
||||||
|
@ -302,8 +302,7 @@ static void visible_list_refresh(rct_window* w)
|
||||||
const ObjectRepositoryItem* item = &items[i];
|
const ObjectRepositoryItem* item = &items[i];
|
||||||
uint8_t objectType = item->ObjectEntry.flags & 0x0F;
|
uint8_t objectType = item->ObjectEntry.flags & 0x0F;
|
||||||
if (objectType == get_selected_object_type(w) && !(selectionFlags & OBJECT_SELECTION_FLAG_6)
|
if (objectType == get_selected_object_type(w) && !(selectionFlags & OBJECT_SELECTION_FLAG_6)
|
||||||
&& filter_source(item, (selectionFlags & OBJECT_SELECTION_FLAG_SELECTED))
|
&& filter_source(item) && filter_string(item) && filter_chunks(item) && filter_selected(selectionFlags))
|
||||||
&& filter_string(item) && filter_chunks(item) && filter_selected(selectionFlags))
|
|
||||||
{
|
{
|
||||||
rct_object_filters* filter = new rct_object_filters;
|
rct_object_filters* filter = new rct_object_filters;
|
||||||
filter->ride.category[0] = 0;
|
filter->ride.category[0] = 0;
|
||||||
|
@ -1430,12 +1429,15 @@ static bool sources_match(uint8_t source)
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool filter_source(const ObjectRepositoryItem* item, bool selected)
|
static bool filter_source(const ObjectRepositoryItem * item)
|
||||||
{
|
{
|
||||||
if (_FILTER_ALL)
|
if (_FILTER_ALL)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return sources_match(item->Source);
|
uint8_t source = object_entry_get_source_game(&item->ObjectEntry);
|
||||||
|
uint8_t secondSource = item->Source;
|
||||||
|
|
||||||
|
return sources_match(source) || (secondSource != OBJECT_SOURCE_CUSTOM && sources_match(secondSource));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool filter_chunks(const ObjectRepositoryItem* item)
|
static bool filter_chunks(const ObjectRepositoryItem* item)
|
||||||
|
@ -1475,8 +1477,7 @@ static void filter_update_counts()
|
||||||
const ObjectRepositoryItem* items = object_repository_get_items();
|
const ObjectRepositoryItem* items = object_repository_get_items();
|
||||||
for (size_t i = 0; i < numObjects; i++) {
|
for (size_t i = 0; i < numObjects; i++) {
|
||||||
const ObjectRepositoryItem * item = &items[i];
|
const ObjectRepositoryItem * item = &items[i];
|
||||||
if (filter_source(item, (selectionFlags[i] & OBJECT_SELECTION_FLAG_SELECTED)) && filter_string(item)
|
if (filter_source(item) && filter_string(item) && filter_chunks(item) && filter_selected(selectionFlags[i]))
|
||||||
&& filter_chunks(item) && filter_selected(selectionFlags[i]))
|
|
||||||
{
|
{
|
||||||
uint8_t objectType = item->ObjectEntry.flags & 0xF;
|
uint8_t objectType = item->ObjectEntry.flags & 0xF;
|
||||||
_filter_object_counts[objectType]++;
|
_filter_object_counts[objectType]++;
|
||||||
|
|
Loading…
Reference in New Issue