From 252c956cc1d7198b64a09c4d8368e95bb14f66e6 Mon Sep 17 00:00:00 2001 From: Dystroyer8 Date: Sat, 4 Jul 2026 00:44:06 +0200 Subject: [PATCH] $l10n_ anpassungen + build automatisierung --- FS25_Mine.zip | Bin 963156 -> 963509 bytes build.ps1 | 120 +++++++++++++++++++++++++ modDesc.xml | 76 +++++++++++++--- placeables/coalmine/coalmine.xml | 4 +- placeables/dirt/dirt.xml | 4 +- placeables/ironore/iron.xml | 4 +- placeables/mine/mine.xml | 4 +- placeables/silverore/silver.xml | 4 +- placeables/stoneQuarry/stoneQuarry.xml | 4 +- 9 files changed, 198 insertions(+), 22 deletions(-) diff --git a/FS25_Mine.zip b/FS25_Mine.zip index f22763376832378124ae1215dd655164dd109872..cdef090226e5218c5d79453fe58ecb1f9b335db4 100644 GIT binary patch delta 11344 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 delta 10968 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 diff --git a/build.ps1 b/build.ps1 index 932b8e1..35b8dbb 100644 --- a/build.ps1 +++ b/build.ps1 @@ -9,6 +9,124 @@ $projectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path $projectZip = Join-Path $projectRoot "$modName.zip" $tempZip = Join-Path ([System.IO.Path]::GetTempPath()) "$modName-build.zip" +function Format-ProductionAmount { + param( + [double]$Amount, + [string]$CultureName + ) + + $culture = [System.Globalization.CultureInfo]::GetCultureInfo($CultureName) + $roundedAmount = [Math]::Round($Amount) + + if ([Math]::Abs($Amount - $roundedAmount) -lt 0.0001) { + return ([int64]$roundedAmount).ToString("N0", $culture) + } + + return $Amount.ToString("N1", $culture) +} + +function Set-L10nText { + param( + [xml]$ModDesc, + [string]$Name, + [string]$EnglishText, + [string]$GermanText + ) + + $textNode = $ModDesc.SelectSingleNode("/modDesc/l10n/text[@name='$Name']") + if ($null -eq $textNode) { + throw "l10n Eintrag fehlt: $Name" + } + + $englishNode = $textNode.SelectSingleNode("en") + $germanNode = $textNode.SelectSingleNode("de") + + if ($null -eq $englishNode -or $null -eq $germanNode) { + throw "l10n Eintrag ist unvollstaendig: $Name" + } + + $englishNode.InnerText = $EnglishText + $germanNode.InnerText = $GermanText +} + +function Update-ProductionDescriptions { + param( + [string]$ProjectRoot + ) + + $modDescPath = Join-Path $ProjectRoot "modDesc.xml" + + $products = @{ + "PAYDIRT" = @{ En = "paydirt"; De = "Paydirt" } + "STONE" = @{ En = "stone"; De = "Stein" } + "DIRT" = @{ En = "dirt"; De = "Erde" } + "MININGCOAL" = @{ En = "mining coal"; De = "Bergbau-Kohle" } + "IRONORE" = @{ En = "iron ore"; De = "Eisenerz" } + "SILVERORE" = @{ En = "silver ore"; De = "Silbererz" } + } + + $productionItems = @( + @{ XmlPath = "placeables\mine\mine.xml"; L10nName = "storeItem_paydirtMine_function" }, + @{ XmlPath = "placeables\stoneQuarry\stoneQuarry.xml"; L10nName = "storeItem_stoneQuarry_function" }, + @{ XmlPath = "placeables\dirt\dirt.xml"; L10nName = "storeItem_dirtPit_function" }, + @{ XmlPath = "placeables\coalmine\coalmine.xml"; L10nName = "storeItem_coalMine_function" }, + @{ XmlPath = "placeables\ironore\iron.xml"; L10nName = "storeItem_ironMine_function" }, + @{ XmlPath = "placeables\silverore\silver.xml"; L10nName = "storeItem_silverMine_function" } + ) + + $modDesc = New-Object System.Xml.XmlDocument + $modDesc.PreserveWhitespace = $true + $modDesc.Load($modDescPath) + + foreach ($item in $productionItems) { + $placeablePath = Join-Path $ProjectRoot $item.XmlPath + + $placeable = New-Object System.Xml.XmlDocument + $placeable.PreserveWhitespace = $true + $placeable.Load($placeablePath) + + $productionNode = $placeable.SelectSingleNode("/placeable/produktion") + if ($null -eq $productionNode) { + throw "produktion Eintrag fehlt: $($item.XmlPath)" + } + + $fillType = $productionNode.GetAttribute("fillType") + $amountText = $productionNode.GetAttribute("amountPerHour") + + if ([string]::IsNullOrWhiteSpace($fillType) -or [string]::IsNullOrWhiteSpace($amountText)) { + throw "produktion Eintrag ist unvollstaendig: $($item.XmlPath)" + } + + $amountPerHour = [double]::Parse($amountText, [System.Globalization.CultureInfo]::InvariantCulture) + + if ($products.ContainsKey($fillType)) { + $product = $products[$fillType] + } else { + $product = @{ En = $fillType.ToLowerInvariant(); De = $fillType } + } + + $amountEn = Format-ProductionAmount -Amount $amountPerHour -CultureName "en-US" + $amountDe = Format-ProductionAmount -Amount $amountPerHour -CultureName "de-DE" + + Set-L10nText -ModDesc $modDesc -Name $item.L10nName ` + -EnglishText "Produces $amountEn l $($product.En) per in-game hour." ` + -GermanText "Produziert $amountDe l $($product.De) pro Ingame-Stunde." + } + + $settings = New-Object System.Xml.XmlWriterSettings + $settings.Encoding = New-Object System.Text.UTF8Encoding($false) + $settings.Indent = $false + $settings.NewLineChars = "`r`n" + + $writer = [System.Xml.XmlWriter]::Create($modDescPath, $settings) + try { + $modDesc.Save($writer) + } + finally { + $writer.Close() + } +} + if ([string]::IsNullOrWhiteSpace($ModsPath)) { $candidates = @( (Join-Path $env:USERPROFILE "OneDrive\Dokumente\My Games\FarmingSimulator2025\mods"), @@ -31,6 +149,8 @@ if (-not (Test-Path -LiteralPath $ModsPath)) { New-Item -ItemType Directory -Force -Path $ModsPath | Out-Null } +Update-ProductionDescriptions -ProjectRoot $projectRoot + Add-Type -AssemblyName System.IO.Compression Add-Type -AssemblyName System.IO.Compression.FileSystem diff --git a/modDesc.xml b/modDesc.xml index 910164a..42511b0 100644 --- a/modDesc.xml +++ b/modDesc.xml @@ -1,4 +1,4 @@ - + Dystroyer8 1.0.0.0 @@ -13,27 +13,83 @@ Minenproduktion für LS25 + + + Paydirt Mine + Paydirt-Mine + + + Produces 80,000 l paydirt per in-game hour. + Produziert 80.000 l Paydirt pro Ingame-Stunde. + + + + Stone Quarry + Steinbruch + + + Produces 120,000 l stone per in-game hour. + Produziert 120.000 l Stein pro Ingame-Stunde. + + + + Dirt Pit + Erdgrube + + + Produces 150,000 l dirt per in-game hour. + Produziert 150.000 l Erde pro Ingame-Stunde. + + + + Coal Mine + Kohlemine + + + Produces 90,000 l mining coal per in-game hour. + Produziert 90.000 l Bergbau-Kohle pro Ingame-Stunde. + + + + Iron Ore Mine + Eisenerzmine + + + Produces 45,000 l iron ore per in-game hour. + Produziert 45.000 l Eisenerz pro Ingame-Stunde. + + + + Silver Ore Mine + Silbererzmine + + + Produces 50,000 l silver ore per in-game hour. + Produziert 50.000 l Silbererz pro Ingame-Stunde. + + + - + - + - + - - - - - - + + + + + + diff --git a/placeables/coalmine/coalmine.xml b/placeables/coalmine/coalmine.xml index 38721cb..e1a4fd8 100644 --- a/placeables/coalmine/coalmine.xml +++ b/placeables/coalmine/coalmine.xml @@ -4,9 +4,9 @@ - LS25 Kohlemine + $l10n_storeItem_coalMine_name - Kohlemine produziert Kohle + $l10n_storeItem_coalMine_function placeables/mine/store_mine.dds 600000 diff --git a/placeables/dirt/dirt.xml b/placeables/dirt/dirt.xml index 7e6ba6b..ab09696 100644 --- a/placeables/dirt/dirt.xml +++ b/placeables/dirt/dirt.xml @@ -4,9 +4,9 @@ - LS25 Erde mine + $l10n_storeItem_dirtPit_name - Erde mine produziert Erde + $l10n_storeItem_dirtPit_function placeables/mine/store_mine.dds 180000 diff --git a/placeables/ironore/iron.xml b/placeables/ironore/iron.xml index 4c6deec..3891d07 100644 --- a/placeables/ironore/iron.xml +++ b/placeables/ironore/iron.xml @@ -4,9 +4,9 @@ - LS25 Eisenmine + $l10n_storeItem_ironMine_name - Eisenmine produziert Eisen + $l10n_storeItem_ironMine_function placeables/mine/store_mine.dds 1200000 diff --git a/placeables/mine/mine.xml b/placeables/mine/mine.xml index da8a236..f1123be 100644 --- a/placeables/mine/mine.xml +++ b/placeables/mine/mine.xml @@ -4,9 +4,9 @@ - LS25 Mine + $l10n_storeItem_paydirtMine_name - Mine produziert PAYDIRT + $l10n_storeItem_paydirtMine_function placeables/mine/store_mine.dds 250000 diff --git a/placeables/silverore/silver.xml b/placeables/silverore/silver.xml index 9f3c361..7de93f9 100644 --- a/placeables/silverore/silver.xml +++ b/placeables/silverore/silver.xml @@ -4,9 +4,9 @@ - LS25 Silbermine + $l10n_storeItem_silverMine_name - Silbermine produziert Silber + $l10n_storeItem_silverMine_function placeables/mine/store_mine.dds 1500000 diff --git a/placeables/stoneQuarry/stoneQuarry.xml b/placeables/stoneQuarry/stoneQuarry.xml index 004d94f..e5be5e1 100644 --- a/placeables/stoneQuarry/stoneQuarry.xml +++ b/placeables/stoneQuarry/stoneQuarry.xml @@ -4,9 +4,9 @@ - LS25 Steinbruch + $l10n_storeItem_stoneQuarry_name - Steinbruch produziert STONE + $l10n_storeItem_stoneQuarry_function placeables/mine/store_mine.dds 250000