summaryrefslogtreecommitdiff
path: root/media/baseset
diff options
context:
space:
mode:
authorPeter Nelson <peter1138@openttd.org>2019-01-13 09:08:01 +0000
committerPeterN <peter@fuzzle.org>2019-01-25 22:28:39 +0000
commit1334cfb3e5fd13fb51dc9cbf0690f55f5a57c4bf (patch)
tree905186d23663141353f874108d38547c19716bca /media/baseset
parente76fd99c472237125f03d46ed7bff915e2d6a20b (diff)
downloadopenttd-1334cfb3e5fd13fb51dc9cbf0690f55f5a57c4bf.tar.xz
Change: Always build baseset metadata, instead of including it in the repo.
This adds a script and project files to generate these files within MSVC.
Diffstat (limited to 'media/baseset')
-rw-r--r--media/baseset/translations.vbs123
1 files changed, 123 insertions, 0 deletions
diff --git a/media/baseset/translations.vbs b/media/baseset/translations.vbs
new file mode 100644
index 000000000..fffb57748
--- /dev/null
+++ b/media/baseset/translations.vbs
@@ -0,0 +1,123 @@
+Option Explicit
+
+' This file is part of OpenTTD.
+' OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+' OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+' See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+
+Dim FSO
+Set FSO = CreateObject("Scripting.FileSystemObject")
+
+Dim inputfile, outputfile, langpath, extra_grf
+inputfile = WScript.Arguments(0)
+outputfile = WScript.Arguments(1)
+langpath = WScript.Arguments(2)
+
+If WScript.Arguments.Length > 3 Then
+ extra_grf = WScript.Arguments(3)
+End If
+
+Function GetExtraGrfHash
+ Dim WSO, exe, line
+
+ Set WSO = WScript.CreateObject("WScript.Shell")
+ Set exe = WSO.Exec("certutil -hashfile " & extra_grf & " MD5")
+
+ Do Until exe.StdOut.AtEndOfStream
+ line = exe.StdOut.ReadLine
+ If Len(line) = 32 Then GetExtraGrfHash = line
+ Loop
+
+ Set WSO = Nothing
+End Function
+
+' Simple insertion sort, copied from translations.awk
+Sub ISort(a)
+ Dim i, j, n, hold
+ n = UBound(a)
+
+ For i = 1 To n
+ j = i
+ hold = a(j)
+ Do While a(j - 1) > hold
+ j = j - 1
+ a(j + 1) = a(j)
+
+ If j = 0 Then Exit Do
+ Loop
+ a(j) = hold
+ Next
+End Sub
+
+Sub Lookup(ini_key, str_id, outfile)
+ Dim folder, file, line, p, lang, i
+
+ ' Ensure only complete string matches
+ str_id = str_id & " "
+
+ Set folder = FSO.GetFolder(langpath)
+
+ Dim output()
+ ReDim output(folder.Files.Count)
+
+ For Each file In folder.Files
+ If UCase(FSO.GetExtensionName(file.Name)) = "TXT" Then
+ Dim f
+ Set f = FSO.OpenTextFile(file.Path)
+
+ Do Until f.atEndOfStream
+ line = f.ReadLine()
+
+ If InStr(1, line, "##isocode ") = 1 Then
+ p = Split(line)
+ lang = p(1)
+ ElseIf InStr(1, line, str_id) = 1 Then
+ p = Split(line, ":", 2)
+ If lang = "en_GB" Then
+ output(i) = ini_key & " = " & p(1)
+ Else
+ output(i) = ini_key & "." & lang & " = " & p(1)
+ End If
+ i = i + 1
+ End If
+
+ Loop
+ End If
+ Next
+
+ ReDim Preserve output(i - 1)
+ ISort output
+
+ For Each line In output
+ outfile.Write line & vbCrLf
+ Next
+
+End Sub
+
+Dim line, p
+
+Dim infile
+Set infile = FSO.OpenTextFile(inputfile)
+
+Dim outfile
+Set outfile = FSO.CreateTextFile(outputfile, True)
+
+Do Until infile.atEndOfStream
+
+ line = infile.ReadLine()
+
+ If InStr(1, line, "ORIG_EXTRA.GRF ") = 1 Then
+ p = Split(line, "=")
+ If Trim(p(1)) = "" Then
+ outfile.Write("ORIG_EXTRA.GRF = " & GetExtraGrfHash() & vbCrLf)
+ Else
+ outfile.Write(line & vbCrLf)
+ End If
+ ElseIf InStr(1, line, "!! ") = 1 Then
+ p = Split(line)
+ Lookup p(1), p(2), outfile
+ Else
+ outfile.Write(line & vbCrLf)
+ End If
+
+Loop