0x00473D1D
| 819 | |
| 820 | // 0x00473D1D |
| 821 | static bool selectObjectFromIndexInternal(SelectObjectModes mode, bool isRecursed, const ObjectHeader& objHeader, ObjectIndexSelection& selection) |
| 822 | { |
| 823 | auto objIndexEntry = internalFindObjectInIndex(objHeader); |
| 824 | if (!objIndexEntry.has_value()) |
| 825 | { |
| 826 | auto buffer = const_cast<char*>(StringManager::getString(StringIds::buffer_2040)); |
| 827 | buffer = StringManager::formatString(buffer, 512, StringIds::data_for_following_object_not_found); |
| 828 | objectCreateIdentifierName(buffer, objHeader); |
| 829 | GameCommands::setErrorText(StringIds::buffer_2040); |
| 830 | if (isRecursed) |
| 831 | { |
| 832 | resetSelectedObjectCountsAndSize(selection); |
| 833 | } |
| 834 | return false; |
| 835 | } |
| 836 | |
| 837 | auto& [index, entry] = *objIndexEntry; |
| 838 | |
| 839 | bool success = (mode & SelectObjectModes::select) != SelectObjectModes::none |
| 840 | ? selectObjectInternal(mode, isRecursed, objHeader, selection, index, entry) |
| 841 | : deselectObjectInternal(mode, objHeader, selection, index, entry); |
| 842 | |
| 843 | if (success) |
| 844 | { |
| 845 | if (!isRecursed) |
| 846 | { |
| 847 | refreshRequiredByAnother(selection.objectFlags); |
| 848 | } |
| 849 | } |
| 850 | else |
| 851 | { |
| 852 | if (isRecursed) |
| 853 | { |
| 854 | resetSelectedObjectCountsAndSize(selection); |
| 855 | } |
| 856 | } |
| 857 | return success; |
| 858 | } |
| 859 | |
| 860 | bool ObjectIndexSelection::selectObject(SelectObjectModes mode, const ObjectHeader& objHeader) |
| 861 | { |
no test coverage detected