Zum Inhalt

table_util

Quelle: base/tealdef/scripts/table_util.d.tl

Hinweise

Typen von /scripts/table_util.tl (TableUtil): tiefes Vergleichen und Kopieren von Tabellen und einfache Suchfunktionen für Arrays. Du lädst es mit local table_util = ug_require "/scripts/table_util.tl" as TableUtil.

TableUtil

record global base/tealdef/scripts/table_util.d.tl:3

global record TableUtil

Laden: local table_util = ug_require "::/scripts/table_util.tl" as TableUtil

Hinweise

Tabellen-Helfer, die ug_require "/scripts/table_util.tl" zurückgibt.

Funktionen

deepEquals(arg1 : any, arg2 : any, allowFunctions? : boolean, key? : any) : boolean base/tealdef/scripts/table_util.d.tl:4

Aufruf: table_util.deepEquals(…)

Hinweise

Vergleicht zwei Werte rekursiv. Tabellen sind gleich, wenn sie dieselben Schlüssel mit jeweils tief gleichen Werten haben.

Parameter Typ Beschreibung
arg1 any Erster Wert.
arg2 any Zweiter Wert.
allowFunctions? boolean Bei true werden Funktionen auf Identität verglichen. Sonst schreibt der Vergleich von Funktionen einen Fehler ins Log, außer beide Tabellen haben daneben einen Wert <key>_compareProxy (der dann verglichen wird) oder der Schlüssel endet auf ecipe.
key? any Schlüssel, unter dem die Werte liegen. Er wird für den Vergleich von Funktionen und in Fehlermeldungen gebraucht.

Rückgabe boolean: True, wenn die Werte tief gleich sind.

Details

Userdata-Werte brauchen eine Methode equals, die für den Vergleich aufgerufen wird.

Im Basisspiel verwendet: 140-mal in 50 Dateien

base/content/base/base/difficulty_util.tl:213

if table_util.deepEquals(current, preset) then
base/content/game_mechanics/game_mechanics/achievements/achievements.script.tl:501
if not table_util.deepEquals(newSfxEarned, achievementGuiState.earnedSFX) then
base/content/game_mechanics/game_mechanics/company/company_react_util.tl:180
if prev == nil or not table_util.deepEquals(prev, def, true) then
base/content/game_mechanics/game_mechanics/finance/finances_charts.tl:50
if table_util.deepEquals(state, newState) then
base/content/game_mechanics/game_mechanics/notifications/notification_util.tl:229
if table_util.deepEquals(newEntitiesAndParam.entities, entry.persisting) then
base/content/game_mechanics/game_mechanics/towns/town_growth.script.tl:185
elseif not table_util.deepEquals(scriptState.cargoDemandsSorted, allCargoTypesList) then
… und 44 weitere Dateien.

copy<T>(obj : T) : T base/tealdef/scripts/table_util.d.tl:5

Aufruf: table_util.copy(…)

Hinweise

Tiefe Kopie einer Tabelle (Schlüssel und Werte werden rekursiv kopiert). Werte, die keine Tabellen sind, kommen unverändert zurück.

Rückgabe T

Details

Metatabellen werden nicht kopiert, Vektoren aus vec3.new verlieren also ihre Operatoren.

Im Basisspiel verwendet: 238-mal in 67 Dateien

base/content/climates/climates/gen/mapgenutil.tl:126

local riverMapBackup = table_util.copy(config.map.riverMap)
base/content/game_mechanics/game_mechanics/celebrations/celebration_react_util.tl:155
local newState = table_util.copy(currentState)
base/content/game_mechanics/game_mechanics/company/company.script.tl:29
local newConsumedPermits : {ResName : {integer}} = table_util.copy(companyState.consumedPermits)
base/content/game_mechanics/game_mechanics/finance/finances_react_util.tl:194
local isNotTransported = table_util.copy(isNotTransportedState:old())
base/content/game_mechanics/game_mechanics/fun_elements/fireworks.script.tl:71
local copy = table_util.copy(rocketParams)
base/content/game_mechanics/game_mechanics/notifications/gui/notification_log.tl:384
local newState = table_util.copy(current)
… und 61 weitere Dateien.

shallowCopy<T>(obj : T) : T base/tealdef/scripts/table_util.d.tl:6

Aufruf: table_util.shallowCopy(…)

Hinweise

Kopiert die Schlüssel-Wert-Paare der obersten Ebene in eine neue Tabelle. Verschachtelte Tabellen werden geteilt.

Rückgabe T

Im Basisspiel verwendet: 67-mal in 20 Dateien

base/content/game_mechanics/game_mechanics/finance/finances_charts.tl:48

local newState = table_util.shallowCopy(state)
base/content/gui/gui/construction/construction.tl:1321
local newQueue = table_util.shallowCopy(newParamsQueue:old())
base/content/gui/gui/construction/construction_react_util.tl:4045
local definition = doCopy and table_util.shallowCopy(originalDefinition) or originalDefinition
base/content/gui/gui/entity_window/bridge_and_tunnel.tl:105
local newState = table_util.shallowCopy(state)
base/content/gui/gui/entity_window/industry/industry.tl:285
local eowState = table_util.shallowCopy(state:old())
base/content/gui/gui/entity_window/make_entity_window.tl:259
local entityWindowContentParams = table_util.shallowCopy(res.param)
… und 14 weitere Dateien.

arrayFind<T>(arr : {T}, value : T) : integer base/tealdef/scripts/table_util.d.tl:7

Aufruf: table_util.arrayFind(…)

Hinweise

Index des ersten Elements, das gleich (==) value ist.

Rückgabe integer: Der Index (ab 1) oder 0, wenn der Wert nicht im Array steht.

Im Basisspiel verwendet: 13-mal in 7 Dateien

base/content/gui/gui/entity_window/double_slip_switch.tl:118

local locked = table_util.arrayFind(selectedState.lockedLanes, lane) > 0
base/content/gui/gui/game_bar/game_bar_widgets.tl:353
local selectedIndex = table_util.arrayFind(calSpeedFactors, currentFactor)
base/content/gui/gui/main/industry_util.tl:568
if table_util.arrayFind(segmentsToRemove, segment) == 0 then
base/content/gui/gui/main/town_hud_react_util.tl:16
local index = table_util.arrayFind(result, c[1])
base/content/gui/gui/menu/mod_manager_react_util.tl:2335
local notApplied = table_util.arrayFind(params.tags, tag) == 0
base/content/mission/mission/mission_framework/mission_framework_react.tl:1059
local index = table_util.arrayFind(queue, taskUid)
… und 1 weitere Dateien.

arrayFindIf<T>(arr : {T}, pred : function(T) : boolean) : integer base/tealdef/scripts/table_util.d.tl:8

Aufruf: table_util.arrayFindIf(…)

Hinweise

Index des ersten Elements, für das pred true zurückgibt.

Rückgabe integer: Der Index (ab 1) oder 0, wenn kein Element passt.

Im Basisspiel verwendet: 5-mal in 4 Dateien

base/content/game_mechanics/game_mechanics/company/explorations/exploration_plane.script.tl:300

if table_util.arrayFindIf(explorationPlaneState.explorationPlanes,
base/content/gui/gui/construction/construction.tl:970
local index = table_util.arrayFindIf(objects, function(object : MenuCategoryUtil.FilterObject) : boolean
base/content/gui/gui/entity_window/bridge_and_tunnel.tl:109
if table_util.arrayFindIf(newState.availableObjects, function(object : MenuCategoryUtil.FilterObject) : boolean
base/content/gui/gui/main/menu_category_util.tl:368
local buttonIndex = table_util.arrayFindIf(param.filterBoxParam.objectsSorted, function(object : MenuCategoryUtil.FilterObject) : boolean

arrayRemove<T>(arr : {T}, value : T) : boolean base/tealdef/scripts/table_util.d.tl:9

Aufruf: table_util.arrayRemove(…)

Hinweise

Entfernt das erste Element, das gleich value ist, direkt aus dem Array.

Rückgabe boolean: True, wenn ein Element entfernt wurde.

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/economy/economy/placementparamsutil.lua:665

table_util.arrayRemove(placementParam.tags, tag)

arrayContains<T>(arr : {T}, value : T) : boolean base/tealdef/scripts/table_util.d.tl:10

Aufruf: table_util.arrayContains(…)

Hinweise

True, wenn das Array ein Element enthält, das gleich (==) value ist.

Rückgabe boolean

Im Basisspiel verwendet: 104-mal in 32 Dateien

base/content/game_mechanics/game_mechanics/achievements/achievements.script.tl:230

if IsDefaultModCargo(cargoName) and not table_util.arrayContains(achievementState.cargoTypesDelivered, cargoName) then
base/content/game_mechanics/game_mechanics/notifications/types/con_availability.script.tl:20
if table_util.arrayContains(notificationParams.categories, "street_constructions") then
base/content/game_mechanics/game_mechanics/towns/town_growth.script.tl:256
if table_util.arrayContains(cat.landUses, landUseType) then
base/content/gui/gui/construction/construction.tl:3350
and table_util.arrayContains(cargoSpecializationClasses, "UNIVERSAL")
base/content/gui/gui/construction/construction_react_util.tl:317
add = table_util.arrayContains(avail.carriers, carrier)
base/content/gui/gui/construction/tools/mixed_assets.script.tl:7
if table_util.arrayContains(category.filterCategories, filter) then
… und 26 weitere Dateien.

find<K, V>(dict : {{K, V}}, key : K) : V base/tealdef/scripts/table_util.d.tl:11

Aufruf: table_util.find(…)

Hinweise

Sucht key in einer Liste von {key, value}-Paaren.

Rückgabe V: Den Wert des ersten Paars, dessen erstes Element gleich key ist, oder nil.

Im Basisspiel verwendet: 5-mal in 2 Dateien

base/content/gui/gui/menu/new_game_or_map_settings_page.tl:94

map.climateId = table_util.find(configDict, "climate")
base/content/gui/gui/menu/new_game_react_util.tl:207
local climateId = table_util.find(configDict, "climate")

concatenate<T>(...: {T}) : {T} base/tealdef/scripts/table_util.d.tl:12

Aufruf: table_util.concatenate(…)

Hinweise

Gibt ein neues Array mit den Elementen aller übergebenen Arrays in ihrer Reihenfolge zurück.

Rückgabe {T}

Im Basisspiel verwendet: 28-mal in 16 Dateien

base/content/gui/gui/entity_window/industry/industry.tl:300

widgets = table_util.concatenate(widgets, gui_react_util.usePlugins(industry_eow.IndustryEowExtensionPoint, { firstRef = initialFocusRef, }, extensionParams))
base/content/gui/gui/entity_window/vehicle/vehicle_eow.script.tl:139
local colorPalette = color_util.toArray3(table_util.concatenate((api.gui.genericRep.get(api.gui.genericRep.find("::/gui/line_vehicle_mgmt/line_colors.gres")).da
base/content/gui/gui/game_bar/game_bar.tl:182
children = table_util.concatenate(children, radialMenuPlugins)
base/content/gui/gui/line_vehicle_mgmt/line_react_util.tl:601
local colorPalette = color_util.toArray3(table_util.concatenate((api.gui.genericRep.get(api.gui.genericRep.find("::/gui/line_vehicle_mgmt/line_colors.gres")).da
base/content/gui/gui/line_vehicle_mgmt/manager_window.tl:3600
local colorPalette = color_util.toArray3(table_util.concatenate((api.gui.genericRep.get(api.gui.genericRep.find("::/gui/line_vehicle_mgmt/line_colors.gres")).da
base/content/gui/gui/line_vehicle_mgmt/vehicle_store_util.tl:275
vehicleData.cargoClasses = table_util.concatenate(vehicleData.cargoClasses, cargoClasses)
… und 10 weitere Dateien.

merge<T, V>(...: {T : V}) : {T : V} base/tealdef/scripts/table_util.d.tl:13

Aufruf: table_util.merge(…)

if same key is in multiple tables, the last one wins.

Rückgabe {T : V}

Im Basisspiel verwendet: 11-mal in 3 Dateien

base/content/gui/gui/menu/graphics_presets_util.tl:169

consolePresetsSettings[i] = table_util.merge(proSettings, preset)
mods/release/urbangames_campaign_mission_02/content/mission/mission/mission_story.tl:80
local allowBuyVehiclesAfterTrainExtension : {string : integer} = table_util.merge(allowBuyVehiclesTrainExtension)
mods/release/urbangames_campaign_mission_05/content/mission/mission/mission_story.tl:527
return table_util.merge(observed_red, observed_yellow)

removeDuplicates<T>(arr : {T}) : {T} base/tealdef/scripts/table_util.d.tl:14

Aufruf: table_util.removeDuplicates(…)

Hinweise

Gibt ein neues Array ohne wiederholte Elemente zurück. Das erste Vorkommen und die Reihenfolge bleiben erhalten.

Rückgabe {T}

Im Basisspiel verwendet: 2-mal in 2 Dateien

base/content/gui/gui/line_vehicle_mgmt/vehicle_store_util.tl:367

vehicleData.cargoClasses = table_util.removeDuplicates(vehicleData.cargoClasses)
base/content/gui/gui/main/cargo_react_util.tl:709
local cargoClasses : { string } = table_util.removeDuplicates(data.cargoClasses)