| 310 | |
| 311 | template<typename TTabInfo> |
| 312 | static bool shouldShowTab(TTabInfo& tabInfo, FilterLevel filterLevel) |
| 313 | { |
| 314 | const ObjectTabFlags tabFlags = tabInfo.flags; |
| 315 | |
| 316 | if (filterLevel == FilterLevel::expert) |
| 317 | { |
| 318 | return true; |
| 319 | } |
| 320 | |
| 321 | if ((tabFlags & ObjectTabFlags::alwaysHidden) != ObjectTabFlags::none) |
| 322 | { |
| 323 | return false; |
| 324 | } |
| 325 | |
| 326 | // Skip all types that don't have any objects |
| 327 | auto numObjectsForType = ObjectManager::getNumAvailableObjectsByType(tabInfo.objectType); |
| 328 | if (numObjectsForType == 0) |
| 329 | { |
| 330 | return false; |
| 331 | } |
| 332 | |
| 333 | // Skip certain object types that only have one entry in game |
| 334 | if ((tabFlags & ObjectTabFlags::showEvenIfSingular) == ObjectTabFlags::none && numObjectsForType == 1) |
| 335 | { |
| 336 | return false; |
| 337 | } |
| 338 | |
| 339 | // Hide advanced object types in beginner mode |
| 340 | if (filterLevel == FilterLevel::beginner && (tabFlags & ObjectTabFlags::advanced) != ObjectTabFlags::none) |
| 341 | { |
| 342 | return false; |
| 343 | } |
| 344 | |
| 345 | if (SceneManager::isEditorMode() && (tabFlags & ObjectTabFlags::hideInEditor) != ObjectTabFlags::none) |
| 346 | { |
| 347 | return false; |
| 348 | } |
| 349 | |
| 350 | if (!SceneManager::isEditorMode() && (tabFlags & ObjectTabFlags::hideInGame) != ObjectTabFlags::none) |
| 351 | { |
| 352 | return false; |
| 353 | } |
| 354 | |
| 355 | return true; |
| 356 | } |
| 357 | |
| 358 | static bool shouldShowPrimaryTab(uint8_t index, FilterLevel filterLevel) |
| 359 | { |
no test coverage detected