MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / selectObjectFromIndexInternal

Function selectObjectFromIndexInternal

src/OpenLoco/src/Objects/ObjectIndex.cpp:821–858  ·  view source on GitHub ↗

0x00473D1D

Source from the content-addressed store, hash-verified

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 {

Callers 3

selectObjectInternalFunction · 0.85
deselectObjectInternalFunction · 0.85
selectObjectMethod · 0.85

Calls 9

getStringFunction · 0.85
formatStringFunction · 0.85
setErrorTextFunction · 0.85
selectObjectInternalFunction · 0.85
deselectObjectInternalFunction · 0.85
refreshRequiredByAnotherFunction · 0.85

Tested by

no test coverage detected