GE Lua Documentation

Press F to search!

getQuickraceList

Definition


-- @/lua/ge/extensions/scenario/quickRaceLoader.lua:49


-- this function returns a list containing all levels that contain quickraces.
-- each level has a 'tracks'-property, which contains a list of all quickrace tracks for this level.
local function getQuickraceList()
  local files = M.getLevelList()

  local proceduralLevel = {}
  local levels = {}
  local addingProcedural = true

  local trackBuilderTracks =  M.getTrackEditorTracks()
 --dump(files)
  for _, levelName in ipairs(files) do
    --print(levelName)
    local levelPath = '/levels/' .. levelName .. '/quickrace/'
    local quickraceFiles =  FS:findFiles(levelPath, '*.json', -1, true, false)
      local newLevel = {}
    if #quickraceFiles > 0 or trackBuilderTracks[levelName] ~= nil  then -- only add the level if it has quickraces inside!

      newLevel.radiusMultiplierAI = 2
      newLevel.levelObjects = {
        tod   = { time = 0.9, dayLength = 120, play = false }
        --sunsky  = { colorize = "0.427451 0.572549 0.737255 1" }
      }
      newLevel.prefabs = {}

      newLevel.playersCountRange = { min = 1, max = 1 }
      newLevel.uilayout = 'quickraceScenario'
      newLevel.levelName = levelName
      newLevel.levelInfo =  jsonReadFile('/levels/'..levelName..'/info.json') -- this contains the level info for the UI!

      newLevel.official = isOfficialContentVPath('levels/'..levelName..'/info.json')
      if not newLevel.levelInfo then
        log('W', 'quickrace', 'could not load info-file for level ' .. levelName)
      else
        newLevel.name = newLevel.levelInfo.title
      end

      if newLevel.levelName == "driver_training" then
        newLevel.levelInfo.title = 'Procedural Tracks'
        newLevel.name = newLevel.levelInfo.title
        newLevel.uilayout = 'proceduralScenario'
      end

      if newLevel.levelName == "smallgrid" then
        newLevel.levelInfo.title = "Track Editor Tracks"
        newLevel.name = newLevel.levelInfo.title
      end

      newLevel.scenarioName = newLevel.name

      newLevel.previews = M.customPreviewLoader(newLevel, levelName)
      if levelName == "smallgrid" then
        newLevel.previews = {"/ui/images/trackEdit.png"}
      end
      newLevel.mission = path.getPathLevelMain(levelName)

      --if newLevel.levelName == "smallgrid" then
      --  newLevel.tracks = M.getTrackEditorTracks(quickraceFiles, levelName)
      --  if newLevel.tracks and #(newLevel.tracks) > 0 then
      --    newLevel.previews = newLevel.tracks[1].previews
      --  end
      --else
        newLevel.tracks = M.getTracks(quickraceFiles, levelName, newLevel.levelName)
      --end
      local tbt = trackBuilderTracks[levelName] or trackBuilderTracks[levelName:lower()]
      if tbt ~= nil then

        for _,t in ipairs(tbt) do
          newLevel.tracks[#newLevel.tracks+1] = t
        end
      end

      newLevel.trackCount = #newLevel.tracks

      newLevel.vehicles = {
        scenario_player0 = {
          driver = { player = true, startFocus = true, required = true }
        }
      }
      newLevel.vehicles['*'] = {}

      if #newLevel.tracks > 0 then
        if newLevel.previews and #newLevel.previews > 0 then
          newLevel.preview = newLevel.previews[1]
          newLevel.preImgIndex = 0
        end

        newLevel.maxPlayers = 0

        if newLevel.playersCountRange and newLevel.playersCountRange.max then
          newLevel.maxPlayers = newLevel.playersCountRange.max
        else
          for _,v in pairs(newLevel.vehicles) do
            if (v.playerUsable == true or v.playerUsable == '1') or (v.driver and v.driver.player == true) then
              newLevel.maxPlayers = newLevel.maxPlayers + 1
            end
          end
        end

        if newLevel.playersCountRange and newLevel.playersCountRange.min then
          newLevel.minPlayers = newLevel.playersCountRange.min
        else
          newLevel.minPlayers = newLevel.maxPlayers;
        end

        table.insert(levels, newLevel)
      end
    --  if addingProcedural then
   --     addingProcedural = false
    --  end
     end
    end
  return levels
end

Callers

@/ui/modules/dragrace/dragrace.js
  Future how to use:
  Call quickRaceLoader.getQuickraceList(), which contanis a list of levels.
  Each level has a levelInfo-property, which is the info from the info.json in the level.
@/lua/ge/extensions/editor/missionEditor.lua

--  for _, qr in ipairs(scenario_quickRaceLoader.getQuickraceList()) do
--    csvdata:add(translateLanguage(qr.scenarioName, qr.scenarioName, true), tonumber(qr.date), "Time Trial")
@/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/timeTrialMissions.lua
  extensions.load('scenario_quickRaceLoader')
  local data = scenario_quickRaceLoader.getQuickraceList()
  local missions = {}
@/ui/modules/quickrace/quickrace.js
  Future how to use:
  Call quickRaceLoader.getQuickraceList(), which contanis a list of levels.
  Each level has a levelInfo-property, which is the info from the info.json in the level.

  bngApi.engineLua('scenario_quickRaceLoader.getQuickraceList()', function(res) {
    showList(res)
@/ui/modules/busRoute/busRoute.js
  Future how to use:
  Call quickRaceLoader.getQuickraceList(), which contanis a list of levels.
  Each level has a levelInfo-property, which is the info from the info.json in the level.
@/ui/modules/lightrunner/lightrunner.js
    Future how to use:
    Call quickRaceLoader.getQuickraceList(), which contanis a list of levels.
    Each level has a levelInfo-property, which is the info from the info.json in the level.

      bngApi.engineLua('scenario_quickRaceLoader.getQuickraceList()', function (res) {
        $scope.$evalAsync(function () {
@/lua/ge/extensions/scenario/quickRaceLoader.lua
local function getLevel(levelName)
  local raceList = getQuickraceList()
  if raceList then