GE Lua Documentation

Press F to search!

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(
        {