Grid Selector
Facade module that routes all grid selector API calls to the appropriate backend (vehicle, gameplay, app, freeroam).
Facade module that routes all grid selector API calls to the appropriate backend (vehicle, gameplay, app, freeroam).
Overview
ui_gridSelector is a thin routing layer that dispatches API calls to the correct backend module based on backendName. It provides a unified interface for the UI to interact with any selector type.
Extension path: lua/ge/extensions/ui/gridSelector.lua
Dependencies: ui_vehicleSelector_general, ui_gameplaySelector_general, ui_appSelector_general, ui_freeroamSelector_general
Exports (M)
Backend Resolution
| Function | Signature | Description |
|---|---|---|
getBackendByName | (backendName) | Returns the backend module for a name. |
Delegated API (all take backendName as first arg)
| Category | Functions |
|---|---|
| Tiles | getTiles(backendName, ...) |
| Filters | getFilters(backendName, ...), getActiveFilters(backendName, ...), toggleFilter(backendName, ...), updateRangeFilter(backendName, ...), resetRangeFilter(backendName, ...), resetSetFilter(backendName, ...), getSearchText(backendName, ...), setSearchText(backendName, ...) - all delegate to the resolved backend |
| Display | getDisplayDataOptions, setDisplayDataOption, resetDisplayDataToDefaults |
| Navigation | getScreenHeaderTitleAndPath, profilerFinish, closedFromUI |
| Details | getDetails, executeButton, getManagementDetails, exitCallback, executeDoubleClick, toggleFavourite |
| Utility | exploreFolder, goToMod |
Data Fields
| Field | Description |
|---|---|
M.dependencies | {"ui_vehicleSelector_general", "ui_gameplaySelector_general", "ui_appSelector_general", "ui_freeroamSelector_general"} - all selector backends. |
Internals
Backend Mapping
local function getBackendByName(backendName)
if backendName == "vehicleSelector" then return ui_vehicleSelector_general
elseif backendName == "gameplaySelector" then return ui_gameplaySelector_general
elseif backendName == "appSelector" then return ui_appSelector_general
elseif backendName == "freeroamSelector" then return ui_freeroamSelector_general
end
endDirect Implementations
Two functions are implemented directly rather than delegated:
-- Opens the native file explorer
M.exploreFolder = function(_backendName, path)
Engine.Platform.exploreFolder(path)
end
-- Navigates to mod details page
M.goToMod = function(_backendName, modId)
guihooks.trigger('ChangeState', {state = 'menu.mods.details', params = {modId = modId}})
endCall Pattern
All delegated functions follow the same pattern - strip backendName and forward:
M.getTiles = function(backendName, ...) return getBackendByName(backendName).getTiles(...) end
M.toggleFilter = function(backendName, ...) return getBackendByName(backendName).toggleFilter(...) endHow It Works
- UI calls
ui_gridSelector.getTiles("gameplaySelector", path) getBackendByNameresolves toui_gameplaySelector_general- The call is forwarded with remaining arguments
- Backend processes and returns data to the UI
- This pattern keeps the UI code backend-agnostic
Additional Exports
The following exports are available but not yet documented in detail:
M.closedFromUIM.executeButtonM.executeDoubleClickM.exitCallbackM.getActiveFiltersM.getBackendByNameM.getDetailsM.getDisplayDataOptionsM.getFiltersM.getManagementDetailsM.getScreenHeaderTitleAndPathM.getSearchTextM.profilerFinishM.resetDisplayDataToDefaultsM.resetRangeFilterM.resetSetFilterM.setDisplayDataOptionM.setSearchTextM.toggleFavouriteM.updateRangeFilter