More actions
starcitizentools>Alistair3149 Use Module:Pluralize instead of Module:Util |
m 1 revision imported |
(No difference)
|
Latest revision as of 03:03, 24 August 2024
Documentation for this module may be created at Module:Astronomical object/doc
-- Code bundled using https://github.com/ari-party/scribunto-bundler
-- Find module source code at https://github.com/ari-party/sct-module-astronomical-object
--- Global dictionary for `mw.smw.set`
---@type table<string, any>
local smwData = {}
local _bundler_load, _bundler_register = (function(superRequire)
local loadingPlaceholder = { [{}] = true }
local register
local modules = {}
local load
local loaded = {}
---@param name string
---@param body function
register = function(name, body)
if not modules[name] then
modules[name] = body
end
end
---@param name string
---@return any
load = function(name)
local loadedModule = loaded[name]
if loadedModule then
if loadedModule == loadingPlaceholder then
return nil
end
else
if not modules[name] then
if not superRequire then
local identifier = type(name) == 'string' and '\"' .. name .. '\"' or tostring(name)
error('Tried to require ' .. identifier .. ', but no such module has been registered')
else
return superRequire(name)
end
end
loaded[name] = loadingPlaceholder
loadedModule = modules[name]()
loaded[name] = loadedModule
end
return loadedModule
end
return load, register
end)(require)
_bundler_register('bundler_main', function()
local AstronomicalObject = {}
local Starmap = require( 'Module:Starmap_old' )
local Infobox = require( 'Module:InfoboxNeue' )
local config = mw.loadJsonData( 'Module:Astronomical object/config.json' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local getMetadata = _bundler_load("qqIivEkpEzI-S8jKgY-PO")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
local stringUtil = _bundler_load("LqcyuoqcgR16kBloizIfu")
local characteristicsSection = _bundler_load("aMzhP4yRWn_DL-gyVh5ma")
local detailsSection = _bundler_load("0ZBPzWtXUhIfhmylujQtS")
local featuresSection = _bundler_load("laZXalvuFwB-WExC9ra2U")
local footerSection = _bundler_load("o_kAUNNxCc7NiBSIG0A61")
local jumppointSection = _bundler_load("pCUqUMXDjO00k_s6kun2g")
local sensorsSection = _bundler_load("GJAfegS6nWBdSQk4HCMhR")
---@alias args { affiliation: string?, classification: string?, code: string?, designation: string?, founded: string?, founder: string?, galactapedia: string?, habitable: string?, image: string?, landingzones: string?, location: string?, name: string?, population: string?, satellites: string?, sensordanger: string?, sensoreconomy: string?, sensorpopulation: string?, services: string?, shops: string?, starmap: string?, tunneldirection: string?, tunnelentry: string?, tunnelexit: string?, tunnelsize: string?, type: string?, equatorialradius: string?, gravity: string?, atmosphere: string?, atmosphericpressure: string?, siderealday: string?, axialtilt: string?, density: string?, tidallylocked: string?, orbitalperiod: string?, orbitalspeed: string?, orbitalradius: string?, orbitaleccentricity: string?, aphelion: string?, perihelion: string?, inclination: string?, senator: string?, siderealrotation: string? }
---@param args args
---@param object table?
---@return string?
local function infoboxSubtitle( args, object )
if args.location then return args.location end
if not object then return nil end
return stringUtil.clean( Starmap.pathTo( object ) )
end
---@param infobox any
local function renderError( infobox )
return infobox:renderInfobox( infobox:renderMessage( {
title = t( 'error_title' ),
desc = t( 'error_invalid_args_desc' )
} ) )
end
---@param frame table https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Frame_object
function AstronomicalObject.main( frame )
---@type args
local args = frame:getParent().args
local infobox = Infobox:new( { placeholderImage = config.placeholder_image } )
local pageTitle = mw.title.getCurrentTitle().text
local searchParameter = args.code or args.name or pageTitle
if not searchParameter then return renderError( infobox ) end
-- Find the astronomical object
local object = Starmap.findStructure( 'object', searchParameter )
if not object then return renderError( infobox ) end
--- Infobox
local title = stringUtil.clean(
args.name or
object.name or
args.designation or
object.designation or
pageTitle or
'Unknown'
)
local fullTitle = title
if (args.name or object.name) and (args.designation or object.designation) ~= (args.name or object.name) then
fullTitle = fullTitle ..
' : ' .. stringUtil.clean( args.designation or object.designation )
end
infobox:renderImage( args.image )
infobox:renderHeader( {
title = fullTitle,
subtitle = infoboxSubtitle( args, object )
} )
local type, translatedType, classification = detailsSection( infobox, args, object )
infobox:renderSection( {
content = {
infobox:renderItem( {
label = t( 'lbl_services' ),
data = args.services
} ),
infobox:renderItem( {
label = t( 'lbl_shops' ),
data = args.shops
} )
},
col = 2
} )
jumppointSection( infobox, args, object )
featuresSection( infobox, args, object )
sensorsSection( infobox, args, object )
characteristicsSection( infobox, args, object )
infobox:renderSection( {
title = t( 'lbl_history' ),
content = {
infobox:renderItem( {
label = t( 'lbl_founded' ),
data = args.founded,
} ),
infobox:renderItem( {
label = t( 'lbl_founder' ),
data = args.founder,
} )
},
col = 2
} )
footerSection( infobox, args, object )
---
local renderedInfobox = infobox:renderInfobox( nil, title )
local categories, shortDesc = getMetadata(
object,
type,
translatedType,
classification
)
frame:callParserFunction(
'SHORTDESC',
stringUtil.clean( stringUtil.removeParentheses( shortDesc ) )
)
return renderedInfobox .. categories
end
return AstronomicalObject
end)
_bundler_register('Z5x8snU4sjkD3qLJGPy1D', function()
local TNT = require( 'Module:Translate' ):new()
local config = mw.loadJsonData( 'Module:Astronomical object/config.json' )
local lang
if config.module_lang then
lang = mw.getLanguage( config.module_lang )
else
lang = mw.getContentLanguage()
end
local langCode = lang:getCode()
--- Wrapper function for Module:Translate.translate
---@param key string The translation key
---@param addSuffix? boolean Adds a language suffix if config.smw_multilingual_text is true
---@return string value If the key was not found in the .tab page, the key is returned
return function ( key, addSuffix, ... )
return TNT:translate( 'Module:Astronomical object/i18n.json', config, key, addSuffix, { ... } ) or key
end
end)
_bundler_register('qqIivEkpEzI-S8jKgY-PO', function()
local config = mw.loadJsonData( 'Module:Astronomical object/config.json' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local linksUtil = _bundler_load("IhHmleEzICJDWYrwBq1XT")
local stringUtil = _bundler_load("LqcyuoqcgR16kBloizIfu")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
local pluralize = _bundler_load("0_S--UpdcwCozsaCBXH4g")
---@param object table?
---@param type string?
---@param translatedType string?
---@param classification string?
---@return string categories
---@return string shortDesc
return function ( object, type, translatedType, classification )
local parent = (object or {}).parent
--- SMW
smwData[ t( 'lbl_starmap_id' ) ] = tableUtil.safeAccess( object, 'id' )
smwData[ t( 'lbl_starmap_code' ) ] = tableUtil.safeAccess( object, 'code' )
mw.smw.set( smwData )
--- Categories
local categories = { 'Astronomical objects', 'Locations' } -- Defaults
if classification then table.insert( categories, pluralize( classification ) ) end
local systemName = tableUtil.safeAccess( object, 'star_system', 'name' )
if systemName then
table.insert(
categories,
stringUtil.clean( stringUtil.removeParentheses( systemName ) ) .. ' system'
)
end
if type then table.insert( categories, pluralize( t( 'val_type_' .. mw.ustring.lower( type ) ) ) ) end
local shortDesc = ''
if translatedType and object and tableUtil.safeAccess( object, 'star_system', 'name' ) and parent then
-- Has a parent that isn't a star
if parent.type ~= 'STAR' then
if tableUtil.contains( config.planetary_types, object.type ) then -- Planetary based
shortDesc = mw.ustring.format(
t( 'lbl_shortdesc_on' ),
translatedType,
parent.name or parent.designation or t( 'val_unknown' ),
object.star_system.name
)
else -- Space station or something
shortDesc = mw.ustring.format(
t( 'lbl_shortdesc_orbiting' ),
translatedType,
parent.name or parent.designation or t( 'val_unknown' ),
object.star_system.name
)
end
else -- Planet or asteroid belt or of sorts (decendant of the system's star)
shortDesc = mw.ustring.format(
t( 'lbl_shortdesc_in' ),
translatedType,
object.star_system.name
)
end
end
return linksUtil.convertCategories( categories ), shortDesc
end
end)
_bundler_register('IhHmleEzICJDWYrwBq1XT', function()
local LinksUtil = {}
---@param categories table<string> Plain text categories (Stanton, instead of Category:Stanton)
---@return string categories Categories as internal links)
function LinksUtil.convertCategories( categories )
local mapped = {}
for _, category in pairs( categories ) do
if category ~= nil then
if mw.ustring.sub( category, 1, 2 ) ~= '[[' then
category = mw.ustring.format( '[[Category:%s]]', category )
end
table.insert( mapped, category )
end
end
return table.concat( mapped )
end
---@param links table<string> Plain text links (Stanton, instead of [[Stanton]])
---@return table<string> links Now in [[link]] format
function LinksUtil.convertLinks( links )
local converted = {}
for _, link in ipairs( links ) do
table.insert( converted, mw.ustring.format( '[[%s]]', link ) )
end
return converted
end
return LinksUtil
end)
_bundler_register('LqcyuoqcgR16kBloizIfu', function()
local Common = require( 'Module:Common' )
local StringUtil = {
removeParentheses = Common.removeParentheses,
split = Common.split
}
--- Replace obnoxious characters
---@param str string Input string
---@return string
function StringUtil.clean( str )
local apostrophe = mw.ustring.gsub( str, '’', '\'' )
return apostrophe
end
--- Lower first character
---@param str string Input string
---@return string
function StringUtil.lowerFirst( str )
return mw.ustring.lower( mw.ustring.sub( str, 1, 1 ) ) .. mw.ustring.sub( str, 2 )
end
return StringUtil
end)
_bundler_register('vrceqVUhYydyNif7ebocA', function()
local Common = require( 'Module:Common' )
local TableUtil = {
safeAccess = Common.safeAccess
}
--- Filter table
---@param array table
---@param key string
---@param value any
---@param zero any Value to return if zero matches
function TableUtil.filter( array, key, value, zero )
local matches = {}
if array then
for _, item in ipairs( array ) do
if item[ key ] == value then
table.insert( matches, item )
end
end
end
if zero and #matches == 0 then
return zero
else
return matches
end
end
--- Value is in table
---@param array table<any>
---@param target any
---@return boolean
function TableUtil.contains( array, target )
for _, value in ipairs( array ) do
if value == target then
return true
end
end
return false
end
return TableUtil
end)
_bundler_register('0_S--UpdcwCozsaCBXH4g', function()
local mPluralize = require( 'Module:Pluralize' )
---@param str string
---@return string
return function ( str )
return mPluralize.pluralize( { args = { str } } )
end
end)
_bundler_register('aMzhP4yRWn_DL-gyVh5ma', function()
local common = require( 'Module:Common' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param args args
---@param object table?
---@return string?
local function getAxialTilt( args, object )
if args.axialtilt then return args.axialtilt end
local axialTilt = tableUtil.safeAccess( object, 'axial_tilt' )
if not axialTilt or axialTilt == 0 then return nil end
return mw.ustring.format( '%.3f', common.formatNum( axialTilt ) ) .. '°'
end
---@param args args
---@param object table?
---@return string?
local function getOrbitalPeriod( args, object )
if args.orbitalperiod then return args.orbitalperiod end
local orbitalPeriod = tableUtil.safeAccess( object, 'orbit_period' )
if not orbitalPeriod or orbitalPeriod <= 0 then return nil end
return mw.ustring.format( '%s', common.formatNum( orbitalPeriod ) ) .. ' SED'
end
---@param infobox any
---@param args args
---@param object table?
return function ( infobox, args, object )
--- Atmosphere
smwData[ t( 'lbl_atmosphere' ) ] = args.atmosphere
--- Atmospheric pressure
smwData[ t( 'lbl_atmospheric_pressure' ) ] = args.atmosphericpressure
--- Density
smwData[ t( 'lbl_density' ) ] = args.density
infobox:renderSection( {
title = t( 'lbl_atmospheric_properties' ),
content = {
infobox:renderItem( {
label = t( 'lbl_atmosphere' ),
data = args.atmosphere
} ),
infobox:renderItem( {
label = t( 'lbl_atmospheric_pressure' ),
data = args.atmosphericpressure
} ),
infobox:renderItem( {
label = t( 'lbl_density' ),
data = args.density
} ),
},
col = 2
} )
--- Equatorial radius
smwData[ t( 'lbl_equatorial_radius' ) ] = args.equatorialradius
--- Sidereal rotation
smwData[ t( 'lbl_sidereal_rotation' ) ] = args.siderealrotation
--- Sidereal day
smwData[ t( 'lbl_sidereal_day' ) ] = args.siderealday
--- Axial tilt
local axialTilt = getAxialTilt( args, object )
smwData[ t( 'lbl_axial_tilt' ) ] = axialTilt
--- Tidally locked
smwData[ t( 'lbl_tidally_locked' ) ] = args.tidallylocked
infobox:renderSection( {
title = t( 'lbl_physical_characteristics' ),
content = {
infobox:renderItem( {
label = t( 'lbl_equatorial_radius' ),
data = args.equatorialradius
} ),
infobox:renderItem( {
label = t( 'lbl_gravity' ),
data = args.gravity
} ),
infobox:renderItem( {
label = t( 'lbl_sidereal_rotation' ),
data = args.siderealrotation
} ),
infobox:renderItem( {
label = t( 'lbl_sidereal_day' ),
data = args.siderealday
} ),
infobox:renderItem( {
label = t( 'lbl_axial_tilt' ),
data = axialTilt
} ),
infobox:renderItem( {
label = t( 'lbl_tidally_locked' ),
data = args.tidallylocked
} ),
},
col = 2
} )
--- Orbital period
local orbitalPeriod = getOrbitalPeriod( args, object )
smwData[ t( 'lbl_orbital_period' ) ] = orbitalPeriod
--- Orbital speed
smwData[ t( 'lbl_orbital_speed' ) ] = args.orbitalspeed
--- Orbital radius
smwData[ t( 'lbl_orbital_radius' ) ] = args.orbitalradius
--- Orbital eccentricity
smwData[ t( 'lbl_orbital_eccentricity' ) ] = args.orbitaleccentricity
--- Aphelion
smwData[ t( 'lbl_aphelion' ) ] = args.aphelion
--- Perihelion
smwData[ t( 'lbl_perihelion' ) ] = args.perihelion
--- Inclination
smwData[ t( 'lbl_inclination' ) ] = args.inclination
infobox:renderSection( {
title = t( 'lbl_orbital_parameters' ),
content = {
infobox:renderItem( {
label = t( 'lbl_orbital_period' ),
data = orbitalPeriod
} ),
infobox:renderItem( {
label = t( 'lbl_orbital_speed' ),
data = args.orbitalspeed
} ),
infobox:renderItem( {
label = t( 'lbl_orbital_radius' ),
data = args.orbitalradius
} ),
infobox:renderItem( {
label = t( 'lbl_orbital_eccentricity' ),
data = args.orbitaleccentricity
} ),
infobox:renderItem( {
label = t( 'lbl_aphelion' ),
data = args.aphelion
} ),
infobox:renderItem( {
label = t( 'lbl_perihelion' ),
data = args.perihelion
} ),
infobox:renderItem( {
label = t( 'lbl_inclination' ),
data = args.inclination
} )
},
col = 2
} )
end
end)
_bundler_register('0ZBPzWtXUhIfhmylujQtS', function()
local Yesno = require( 'Module:Yesno' )
local config = mw.loadJsonData( 'Module:Astronomical object/config.json' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local linksUtil = _bundler_load("IhHmleEzICJDWYrwBq1XT")
local stringUtil = _bundler_load("LqcyuoqcgR16kBloizIfu")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param args args
---@param object table?
---@return string? type
---@return string? classification
local function getType( args, object )
local plainType = args.type
if not plainType and object then plainType = object.type end
local translatedType = nil
if plainType then translatedType = t( 'val_type_' .. mw.ustring.lower( plainType ) ) end
return plainType, translatedType
end
---@param args args
---@param object table?
---@param type string?
---@return string?
local function getClassification( args, object, type )
if args.classification then return args.classification end
if not object then return nil end
local possibleClassification = tableUtil.safeAccess( object, 'subtype', 'name' )
if not possibleClassification then return nil end
if possibleClassification == type then return nil end
return config.subtype_rename[ possibleClassification ] or possibleClassification
end
---@param args args
---@param object table?
---@return string?
local function getAffiliation( args, object )
local affiliation = stringUtil.split( args.affiliation or '', ',' ) -- Is an empty table if the arg isn't defined
if #affiliation == 0 then
if not object then return nil end
for _, empire in ipairs( object.affiliation ) do table.insert( affiliation, empire.name ) end
end
return table.concat( linksUtil.convertLinks( affiliation ), ', ' )
end
---@param args args
---@param object table?
---@return table
local function getSMWAffiliation( args, object )
local affiliation = stringUtil.split( args.affiliation or '', ',' )
if #affiliation == 0 then
if not object then return {} end
for _, empire in ipairs( object.affiliation ) do table.insert( affiliation, empire.name ) end
end
return affiliation
end
---@param args args
---@param object table?
---@return string?
local function getHabitable( args, object )
local habitable = nil
if args.habitable then
habitable = Yesno( args.habitable )
elseif
object then
habitable = object.habitable
end
if habitable ~= nil then
return t( 'val_habitable_' .. tostring( habitable ) )
else
return nil
end
end
---@param infobox any
---@param args args
---@param object table?
---@return string? type Plain type
---@return string? translatedType Translated type
---@return string? classification Classification
return function ( infobox, args, object )
local plainType, translatedType = getType( args, object )
--- Type
smwData[ t( 'lbl_type' ) ] = plainType
--- Classification
local classification = getClassification( args, object, plainType )
smwData[ t( 'lbl_classification' ) ] = classification
--- Affiliation
smwData[ t( 'lbl_affiliation' ) ] = getSMWAffiliation( args, object )
--- Habitable
local habitable = getHabitable( args, object )
smwData[ t( 'lbl_habitable' ) ] = habitable
--- Population
smwData[ t( 'lbl_population' ) ] = args.population
--- Senator
smwData[ t( 'lbl_senator' ) ] = args.senator
infobox:renderSection( {
content = {
infobox:renderItem( {
label = t( 'lbl_type' ),
data = translatedType,
} ),
infobox:renderItem( {
label = t( 'lbl_classification' ),
data = classification,
} ),
infobox:renderItem( {
label = t( 'lbl_affiliation' ),
data = getAffiliation( args, object ),
} ),
infobox:renderItem( {
label = t( 'lbl_habitable' ),
data = habitable,
} ),
infobox:renderItem( {
label = t( 'lbl_population' ),
data = args.population,
} ),
infobox:renderItem( {
label = t( 'lbl_senator' ),
data = args.senator,
} )
},
col = 2
} )
return plainType, translatedType, classification
end
end)
_bundler_register('laZXalvuFwB-WExC9ra2U', function()
local Starmap = require( 'Module:Starmap_old' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param infobox any
---@param args args
---@param object table?
return function ( infobox, args, object )
---@type string | number
local landingzones = args.landingzones
---@type string | number
local satellites = args.satellites
if (not landingzones or not satellites) and object then
local children = Starmap.children( object.id, false )
local landingzoneCount = #tableUtil.filter( children, 'type', 'LZ', nil )
local satelliteCount = #tableUtil.filter( children, 'type', 'SATELLITE', nil )
if not landingzones and landingzoneCount > 0 then landingzones = landingzoneCount end
if not satellites and satelliteCount > 0 then satellites = satelliteCount end
end
--- Landing zones
smwData[ t( 'lbl_landing_zones' ) ] = landingzones
--- Satellites
smwData[ t( 'lbl_satellites' ) ] = satellites
infobox:renderSection( {
content = {
infobox:renderItem( {
label = t( 'lbl_landing_zones' ),
data = landingzones
} ),
infobox:renderItem( {
label = t( 'lbl_satellites' ),
data = satellites
} )
},
col = 2
} )
end
end)
_bundler_register('o_kAUNNxCc7NiBSIG0A61', function()
local Starmap = require( 'Module:Starmap_old' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param args args
---@param object table?
---@return string?
local function getStarmapLink( args, object )
if not object then return end
return Starmap.link( object.code, object.star_system.code )
end
---@param infobox any
---@param args args
---@param object table?
return function ( infobox, args, object )
infobox:renderFooter( {
content = {
infobox:renderItem( {
label = t( 'lbl_starmap_id' ),
data = tableUtil.safeAccess( object, 'id' ),
row = true,
spacebetween = true
} ),
infobox:renderItem( {
label = t( 'lbl_starmap_code' ),
data = tableUtil.safeAccess( object, 'code' ),
row = true,
spacebetween = true
} ),
},
button = {
icon = 'WikimediaUI-Globe.svg',
label = t( 'lbl_other_sites' ),
type = 'popup',
content = infobox:renderSection( {
content = {
infobox:renderItem( {
label = t( 'lbl_official_sites' ),
data = table.concat( {
infobox:renderLinkButton( {
label = t( 'lbl_starmap' ),
link = getStarmapLink( args, object )
} ),
infobox:renderLinkButton( {
label = t( 'lbl_galactapedia' ),
link = args.galactapedia
} )
}, ' ' )
} ),
},
class = 'infobox__section--linkButtons',
}, true )
}
} )
end
end)
_bundler_register('pCUqUMXDjO00k_s6kun2g', function()
local Starmap = require( 'Module:Starmap_old' )
local config = mw.loadJsonData( 'Module:Astronomical object/config.json' )
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local stringUtil = _bundler_load("LqcyuoqcgR16kBloizIfu")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param args args
---@param object table?
---@return string? direction
---@return string? formattedDirection
local function getDirection( args, object )
if args.tunneldirection then return args.tunneldirection end
if not object or object.type ~= 'JUMPPOINT' then return nil end
local translated = t( 'val_tunnel_direction_' .. mw.ustring.lower( object.tunnel.direction ) )
local icon = config.tunnelDirectionIcons[ object.tunnel.direction ]
return translated, translated .. ' ' .. (icon or '')
end
---@param args args
---@param object table?
---@return string?
local function getSize( args, object )
if args.tunnelsize then return args.tunnelsize end
if not object or object.type ~= 'JUMPPOINT' then return nil end
return t( 'val_tunnel_size_' .. mw.ustring.lower( object.tunnel.size ) )
end
---@param args args
---@param object table?
---@return string? entry
---@return string? entryCode
---@return string? exit
---@return string? exitCode
local function getEntryAndExit( args, object )
local entry = args.tunnelentry
local entryCode
local exit = args.tunnelexit
local exitCode
if object and object.type == 'JUMPPOINT' then
if not entry then
entry = stringUtil.clean(
'[[' .. stringUtil.removeParentheses( object.tunnel.entry.designation ) .. ']], '
.. Starmap.inSystem(
Starmap.findStructure( 'system', object.tunnel.entry.star_system_id )
)
)
entryCode = object.tunnel.entry.code
end
if not exit then
exit = stringUtil.clean(
'[[' .. stringUtil.removeParentheses( object.tunnel.exit.designation ) .. ']], ' ..
Starmap.inSystem(
Starmap.findStructure( 'system', object.tunnel.exit.star_system_id )
)
)
exitCode = object.tunnel.exit.code
end
end
return entry, entryCode, exit, exitCode
end
---@param infobox any
---@param args args
---@param object table
return function ( infobox, args, object )
--- Direction
local direction, formattedDirection = getDirection( args, object )
smwData[ t( 'lbl_direction' ) ] = direction
--- Size
local size = getSize( args, object )
smwData[ t( 'lbl_jumpgate_size' ) ] = size
--- Exit
local entry, entryCode, exit, exitCode = getEntryAndExit( args, object )
smwData[ t( 'lbl_entry' ) ] = entryCode
smwData[ t( 'lbl_exit' ) ] = exitCode
infobox:renderSection( {
title = t( 'lbl_jumpgate' ),
content = {
infobox:renderItem( {
label = t( 'lbl_direction' ),
data = formattedDirection,
} ),
infobox:renderItem( {
label = t( 'lbl_jumpgate_size' ),
data = size,
} ),
infobox:renderItem( {
label = t( 'lbl_entry' ),
data = entry,
} ),
infobox:renderItem( {
label = t( 'lbl_exit' ),
data = exit,
} )
},
col = 2
} )
end
end)
_bundler_register('GJAfegS6nWBdSQk4HCMhR', function()
local t = _bundler_load("Z5x8snU4sjkD3qLJGPy1D")
local tableUtil = _bundler_load("vrceqVUhYydyNif7ebocA")
---@param args args
---@param object table?
---@return string?
local function getSensorDanger( args, object )
if args.sensordanger then return args.sensordanger end
local value = tableUtil.safeAccess( object, 'sensor_danger' )
if value > 0 then return tostring( value ) .. '/10' else return nil end
end
---@param args args
---@param object table?
---@return string?
local function getSensorEconomy( args, object )
if args.sensoreconomy then return args.sensoreconomy end
local value = tableUtil.safeAccess( object, 'sensor_economy' )
if value > 0 then return tostring( value ) .. '/10' else return nil end
end
---@param args args
---@param object table?
---@return string?
local function getSensorPopulation( args, object )
if args.sensorpopulation then return args.sensorpopulation end
local value = tableUtil.safeAccess( object, 'sensor_population' )
if value > 0 then return tostring( value ) .. '/10' else return nil end
end
---@param infobox any
---@param args args
---@param object table?
return function ( infobox, args, object )
--- Sensor: Danger
local sensorDanger = getSensorDanger( args, object )
smwData[ t( 'lbl_sensor_danger' ) ] = sensorDanger
--- Sensor: Economy
local sensorEconomy = getSensorEconomy( args, object )
smwData[ t( 'lbl_sensor_economy' ) ] = sensorEconomy
--- Sensor: Population
local sensorPopulation = getSensorPopulation( args, object )
smwData[ t( 'lbl_sensor_population' ) ] = sensorPopulation
infobox:renderSection( {
title = t( 'lbl_sensors' ),
content = {
infobox:renderItem( {
label = t( 'lbl_sensor_danger' ),
data = sensorEconomy
} ),
infobox:renderItem( {
label = t( 'lbl_sensor_economy' ),
data = sensorEconomy
} ),
infobox:renderItem( {
label = t( 'lbl_sensor_population' ),
data = sensorPopulation
} )
},
col = 3
} )
end
end)
return _bundler_load('bundler_main')