local vec2 = require "vec2" local vec3 = require "vec3" local transf = require "transf" local constructionutil = require "constructionutil" local paramsutil = require "paramsutil" local zPos = 0 function data() -- Default (no commonapi, no changes to parameters) local paramfn = function(params) return params end -- Do we have commonapi loaded? if ((commonapi2 ~= nil) and (commonapi2.uiparameter ~= nil)) then -- replace paramfn with a function calling commonapi paramfn = function(params) -- you can pass all object parameters for TrackCatenarySelector -- additional a selectionlist to be modifed commonapi2.uiparameter.modifyTrackCatenary(params, { selectionlist = config.trackTypes }) return params end end return { type = "ASSET_DEFAULT", description = { name = _("Nordstadt"), description = _("Nordstadt Station Asset"), icon = "ui/construction/station/nordstadt.tga" }, availability = { yearFrom = 1800 }, buildMode = "MULTI", --?order = { value = 0 }, categories = { "stations" }, skipCollision = true, autoRemovable = false, params = paramfn({ { key = "scale_xyz", name = _("Scale XYZ"), uiType = "SLIDER", values = { _("60%"),_("65%"), _("70%"),_("75%"), _("80%"), _("85%"), _("90%"), _("95%"), _("100%"), _("105%"), _("110%"), _("115%"), _("120%"), _("125%"), _("130%"), _("135%"), _("140%"), _("145%"), _("150%"), _("Mania"), }, defaultIndex = 8, }, { key = "workers", name = _("Arbeiter"), uiType = "CHECKBOX", values = { _("0"), _("1") } }, { key = "Rcapacities", uiType = "SLIDER", values = { _("0"), _("5"), _("10"), _("15"), _("20"), _("25"), } }, { key = "clients", name = _("Clients"), uiType = "CHECKBOX", values = { _("0"), _("1") } }, { key = "Ccapacities", uiType = "SLIDER", values = { _("0"), _("5"), _("10"), _("15"), _("20"), _("25"), } }, { key = "alignTerrain", name = _("Align Terrain"), values = { _("No"),_("Yes"), }, defaultIndex = 1, }, }), updateFn = function(params) local result = { } result.models = {} local scalingBuildingXYZ = ((params.scale_xyz * 5) + 60) * 0.01 local scalingBuildingX = scalingBuildingXYZ local scalingBuildingY = scalingBuildingXYZ local scalingBuildingZ = scalingBuildingXYZ result.models[#result.models + 1] = { id = "nordstat.mdl", transf = transf.scaleRotZYXTransl(vec3.new( scalingBuildingX, scalingBuildingY, scalingBuildingZ ), transf.degToRad(0, 0, 0), vec3.new(0, 0, 0)) } if params.alignTerrain == 1 then local terrainFaces = {} local faces_all = { {-30.01*scalingBuildingX, 0*scalingBuildingY, 0, 1.0}, {-30.01*scalingBuildingX, -16.57*scalingBuildingY, 0, 1.0}, {32.00*scalingBuildingX, -16.57*scalingBuildingY, 0, 1.0}, {32.00*scalingBuildingX, 0*scalingBuildingY, 0, 1.0}, } -- terrain result.terrainAlignmentLists = { { type = "EQUAL", faces = terrainFaces, slopeLow = 0.75 } } terrainFaces[#terrainFaces + 1] = faces_all -- ground result.groundFaces = { { face = faces_all, modes = { { type = "FILL", key = "shared/gravel_03.gtex.lua" } }, loop = true, alignmentOffsetMode = "OBJECT", alignmentDirMode = "OBJECT", alignmentOffset = { -2.0, -1.0 }, }, } -- result.groundFaces = { { face = faces_all, modes = { { type = "FILL", key = "shared/asphalt_02.gtex.lua" } }, loop = true, alignmentOffsetMode = "OBJECT", alignmentDirMode = "OBJECT", alignmentOffset = { -2.0, -1.0 }, }, } else result.terrainAlignmentLists = { { type = "EQUAL", faces = { }, loop = true, alignmentOffsetMode = "OBJECT", alignmentDirMode = "OBJECT", alignmentOffset = { -2.0, -1.0 }, } } end local RPerson = ( 5 * params.Rcapacities ) local CPerson = ( 5 * params.Ccapacities ) if params.residents == 1 then result.personCapacity = { type = "INDUSTRIAL", capacity = RPerson, } end if params.clients == 1 then result.personCapacity = { type = "COMMERCIAL", capacity = CPerson, } end return result end }