addEntry
Definition
-- @/lua/ge/extensions/core/quickAccess.lua:592
-- this function adds a new menu entry
local function addEntry(_args)
local args = deepcopy(_args) -- do not modify the outside table by any chance
if type(args.generator) ~= 'function' and (type(args.title) ~= 'string' or (type(args.onSelect) ~= 'function' and type(args["goto"]) ~= 'string')) then
-- TODO: add proper warning/error
log('W', 'quickaccess', 'Menu item needs at least a title and an onSelect function callback: ' .. dumps(args))
--return false
end
-- defaults
if args.level == nil then args.level = '/root/sandbox/general/' end
if args.desc == nil then args.desc = '' end
if not (string.startswith(args.level, "/root/")) then
args.level = '/root/sandbox' .. args.level
end
if type(args.level) ~= 'string' then
log('E', 'quickaccess', 'Menu item level incorrect, needs to be a string: ' .. dumps(args))
return false
end
if string.sub(args.level, string.len(args.level)) ~= '/' then args.level = args.level .. '/' end -- make sure there is always a trailing slash in the level
if menuTree[args.level] == nil then
-- add new level if not existing
menuTree[args.level] = {}
end
if args.uniqueID then
-- make this entry unique in this level
local replaced = false
for k, v in pairs(menuTree[args.level]) do
if v.uniqueID == args.uniqueID then
menuTree[args.level][k] = args
replaced = true
break
end
end
if not replaced then
table.insert(menuTree[args.level], args)
end
else
-- always insert
table.insert(menuTree[args.level], args)
end
return true
end
Callers
@/lua/ge/extensions/core/quickAccess.lua
-- multi menu
addEntry({ level = '/root/', generator = function(entries)
table.insert(entries, {title = "Vehicle Actions", ["goto"] = playerVehicleDefaultPath, icon = "steeringWheelSporty", startSlot = 1, endSlot = 1, isLTabAction = true, desc = "Interact with the vehicle itself, like engine, electrics, etc.", ignoreAsRecentAction = true})
addEntry({ level = '/root/', generator = function(entries)
local title = "Freeroam Actions"
local res = tableMerge(category, {level = '/root/sandbox/'})
addEntry(res)
end
end
addEntry({ level = '/root/sandbox/mission/', generator = function(entries) end })
addEntry({ level = '/root/sandbox/mission/', generator = function(entries) end })
addEntry({ level = '/root/sandbox/mission/', generator = function(entries) end })
addEntry({ level = '/root/sandbox/mission/', generator = function(entries) end })
local envBlacklist = {['scenario'] = true, ['mission'] = true, ['garage'] = true}
addEntry({ level = '/root/sandbox/other/', generator = function(entries)
if getPlayerVehicle(0) and not core_input_actionFilter.isActionBlocked("reload_vehicle") then
end})
addEntry({ level = '/root/sandbox/other/timeofday/', generator = function(entries)
if not envBlacklist[core_gamestate.state.menuItems] then
end})
addEntry({ level = '/root/sandbox/other/tiremarks/', generator = function(entries)
table.insert(entries, {
addEntry({ level = '/root/sandbox/repair/', generator = function(entries)
local playerVeh = getPlayerVehicle(0)
addEntry({ level = '/root/sandbox/quick/', generator = function(entries)
addEntry({ level = '/root/sandbox/vehicles/', generator = function(entries)
if not core_input_actionFilter.isActionBlocked("vehicle_selector") then
addEntry({ level = '/root/sandbox/vehicles/switch_vehicles/', icon = 'cars', generator = function(entries)
if be:getObjectCount() == 0 or core_input_actionFilter.isActionBlocked("switch_next_vehicle") then return end
addEntry({ level = "/root/sandbox/ai/", generator = function(entries)
if not core_input_actionFilter.isActionBlocked("toggleAITraffic") and getPlayerVehicle(0) then
addEntry({ level = '/root/sandbox/traffic/', generator = function(entries)
if not core_input_actionFilter.isActionBlocked("toggleTraffic") then
-- see also quickAccess.lua in vlua folder
addEntry({ level = '/root/playerVehicle/helperSystems/', generator = function(entries)
if getPlayerVehicle(0) and not core_input_actionFilter.isActionBlocked("switch_camera_next") then
end})
addEntry({ level = '/root/playerVehicle/general/', generator = function(entries)
table.insert(entries, {dynamicSlot = {id = "vehicle_left"}, startSlot = 1, endSlot = 1, ignoreAsRecentActionForCategory = "playerVehicle" })
end})
addEntry({ level = '/root/playerVehicle/vehicleFeatures/', generator = function(entries)
-- Add vehicle entry/exit action
if debugAddVehicleTriggers then
addEntry({ level = '/root/playerVehicle/general/', generator = function(entries)
if not getPlayerVehicle(0) then return end
@/lua/vehicle/controller/braking/transbrake.lua
if gearbox then
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/vehicleController/shiftLogic/electricMotor.lua
-- electric motor regeneration
core_quickAccess.addEntry(
{
-- TODO: Icons
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/twoStepLaunch.lua
if engine then
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
@/lua/ge/extensions/core/recoveryPrompt.lua
local root = context.root
core_quickAccess.addEntry(
{
end
core_quickAccess.addEntry({ level = root, title = name, icon = icon, ["goto"] = root ..level, uniqueID = name.."unique" })
end
@/inspector/Debug/CapturingProtocolTracer.js
{
this._trace.addEntry(entry);
}
@/lua/vehicle/controller/tirePressureControl.lua
if not tableIsEmpty(wheelGroups) then
core_quickAccess.addEntry(
{
)
core_quickAccess.addEntry(
{
@/inspector/Debug/ProtocolTrace.js
addEntry(entry)
{
@/lua/vehicle/controller/lineLock.lua
if not hasBuiltPie then
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/esc.lua
if not hasRegisteredQuickAccess then
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
@/lua/ge/extensions/ui/topBar.lua
else
addEntry(entryKey, entry)
end
@/lua/ge/extensions/career/modules/testDrive.lua
quickAccessInitialized = true
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/4wd.lua
if shaft then
core_quickAccess.addEntry(
{
if rangeBox then
core_quickAccess.addEntry(
{
@/lua/ge/extensions/core/cameraModes/relative.lua
function C:sendMenus()
core_quickAccess.addEntry({level = '/root/sandbox/', uniqueID = "camera", icon = "camera", ignoreAsRecentAction = true, ["goto"] = '/root/sandbox/camera/', title = "Relative Camera"})
core_quickAccess.addEntry({ level = '/root/sandbox/camera/',
originalActionInfo = {level = "/root/sandbox/", uniqueID = "camera"},
core_quickAccess.addEntry({ level = '/root/sandbox/camera/slots/', uniqueID = 'slots',
originalActionInfo = {level = "/root/sandbox/", uniqueID = "camera"},
@/lua/vehicle/controller/lightbar.lua
if not hasRegisteredQuickAccess and #modes > 1 then
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/vehicleController/vehicleController.lua
if not hasRegisteredQuickAccessMenu then
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/controlModes.lua
if not hasRegisteredQuickAccess then
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/couplings/fifthwheel.lua
if not hasBuiltPie then
core_quickAccess.addEntry(
{
@/lua/vehicle/electrics.lua
-- headlights
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
core_quickAccess.addEntry(
{
-- ignition level 0-2
core_quickAccess.addEntry(
{
--this is a bandaid for the missing "hold" functionality of the radial menu
core_quickAccess.addEntry(
{
@/lua/ge/extensions/core/funstuff.lua
local function registerFunstuffActions(entries)
core_quickAccess.addEntry({ level = '/root/sandbox/funStuff/', generator = function(entries)
-- Destruction submenu
core_quickAccess.addEntry({ level = '/root/sandbox/funStuff/destruction/', generator = function(entries)
if not core_input_actionFilter.isActionBlocked("funBreak") then
-- Forces submenu
core_quickAccess.addEntry({ level = '/root/sandbox/funStuff/forces/', generator = function(entries)
if not core_input_actionFilter.isActionBlocked("forceField") then
-- Other submenu
core_quickAccess.addEntry({ level = '/root/sandbox/funStuff/other/', generator = function(entries)
if not core_input_actionFilter.isActionBlocked("latchesOpen") then
@/lua/vehicle/controller/driveModes.lua
if not hasRegisteredQuickAccess and #enabledDriveModes > 0 then
core_quickAccess.addEntry(
{
@/lua/vehicle/extensions/core/quickAccess.lua
-- same as GE/core/quickAccess/addEntry - sync with it!
local function addEntry(_args)
local args = deepcopy(_args) -- do not modify the outside table by any chance
-- cruise control
addEntry(
{
local res = tableMerge(category, {level = '/root/playerVehicle/'})
addEntry(res)
end
@/lua/vehicle/controller/axleLift.lua
if not hasBuiltPie then
core_quickAccess.addEntry(
{
@/lua/vehicle/beamstate.lua
-- couplers
core_quickAccess.addEntry(
{
@/lua/vehicle/controller/nitrousOxideInjection.lua
if not hasBuiltPie then
core_quickAccess.addEntry(
{