Ticket #3744: credits.patch
File credits.patch, 50.0 KB (added by , 8 years ago) |
---|
-
new file inaries/data/mods/public/gui/credits/credits.js
diff --git a/binaries/data/mods/public/gui/credits/credits.js b/binaries/data/mods/public/gui/credits/credits.js new file mode 100644 index 0000000..6235e3d
- + 1 var g_PanelNames = ["special", "programming", "art", "translators", "misc", "donators"]; 2 var g_PanelTexts = []; 3 var g_ActivePanel = -1; 4 5 function init() 6 { 7 // Load credits list from the disk and parse them 8 for (let name of g_PanelNames) 9 g_PanelTexts.push(parseJSONCredits(name)); 10 11 selectPanel(0); 12 } 13 14 // Run through a "Content" list and parse elements for formatting and translation 15 function parseHelper(list) 16 { 17 let result = ""; 18 19 for (let object of list) 20 { 21 if (object.Title) 22 result += "[font=\"sans-bold-stroke-14\"]" + translate(object.Title) + "\n"; 23 24 if (object.Subtitle) 25 result += "[font=\"sans-bold-14\"]" + translate(object.Subtitle) + "\n"; 26 27 if (object.List) 28 { 29 for (let element of object.List) 30 { 31 if (element.nick && element.name) 32 result += "[font=\"sans-14\"]" + sprintf(translate("%(nick)s - %(name)s"), { "nick": element.nick, "name": element.name }) + "\n"; 33 else if (element.nick) 34 result += "[font=\"sans-14\"]" + element.nick + "\n"; 35 else if (element.name) 36 result += "[font=\"sans-14\"]" + element.name + "\n"; 37 } 38 result += "\n"; 39 } 40 41 if (object.Content) 42 result += "\n" + parseHelper(object.Content) + "\n"; 43 } 44 45 return result; 46 } 47 48 function parseJSONCredits(panelName) 49 { 50 let json = Engine.ReadJSONFile("gui/credits/texts/" + panelName + ".json"); 51 if (!json || !json.Content) 52 { 53 error("Could not load credits for " + panelName + "!"); 54 return ""; 55 } 56 57 return parseHelper(json.Content); 58 } 59 60 function selectPanel(i) 61 { 62 if (g_ActivePanel != -1) 63 { 64 let oldPanelButton = Engine.GetGUIObjectByName(g_PanelNames[g_ActivePanel] + "PanelButton"); 65 oldPanelButton.sprite = "BackgroundBox"; 66 } 67 68 g_ActivePanel = i; 69 let newPanelButton = Engine.GetGUIObjectByName(g_PanelNames[g_ActivePanel] + "PanelButton"); 70 newPanelButton.sprite = "ForegroundBox"; 71 72 let creditsText = Engine.GetGUIObjectByName("creditsText"); 73 creditsText.caption = g_PanelTexts[i]; 74 } -
new file inaries/data/mods/public/gui/credits/credits.xml
diff --git a/binaries/data/mods/public/gui/credits/credits.xml b/binaries/data/mods/public/gui/credits/credits.xml new file mode 100644 index 0000000..055e579
- + 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 ========================================== 5 - CREDITS PAGE - 6 ========================================== 7 --> 8 9 <objects> 10 <script file="gui/common/functions_global_object.js"/> 11 <script file="gui/credits/credits.js"/> 12 13 <!-- Add a translucent black background to fade out the menu page --> 14 <object type="image" z="0" sprite="ModernFade"/> 15 16 <object type="image" style="ModernDialog" size="50%-473 24 50%+473 100%-24"> 17 <object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14"> 18 <translatableAttribute id="caption">0 A.D. Credits</translatableAttribute> 19 </object> 20 21 <object name="specialPanelButton" type="button" sprite="BackgroundBox" size="20 50 150 80"> 22 <action on="Press">selectPanel(0);</action> 23 <object type="text" style="ModernLabelText" ghost="true"> 24 <translatableAttribute id="caption">Special Credits</translatableAttribute> 25 </object> 26 </object> 27 28 <object name="programmingPanelButton" type="button" sprite="BackgroundBox" size="155 50 305 80"> 29 <action on="Press">selectPanel(1);</action> 30 <object type="text" style="ModernLabelText" ghost="true"> 31 <translatableAttribute id="caption">Programming</translatableAttribute> 32 </object> 33 </object> 34 35 <object name="artPanelButton" type="button" sprite="BackgroundBox" size="310 50 460 80"> 36 <action on="Press">selectPanel(2);</action> 37 <object type="text" style="ModernLabelText" ghost="true"> 38 <translatableAttribute id="caption">Art</translatableAttribute> 39 </object> 40 </object> 41 42 <object name="translatorsPanelButton" type="button" sprite="BackgroundBox" size="465 50 615 80"> 43 <action on="Press">selectPanel(3);</action> 44 <object type="text" style="ModernLabelText" ghost="true"> 45 <translatableAttribute id="caption">Translators</translatableAttribute> 46 </object> 47 </object> 48 49 <object name="miscPanelButton" type="button" sprite="BackgroundBox" size="620 50 770 80"> 50 <action on="Press">selectPanel(4);</action> 51 <object type="text" style="ModernLabelText" ghost="true"> 52 <translatableAttribute id="caption">Miscellaneous</translatableAttribute> 53 </object> 54 </object> 55 56 <object name="donatorsPanelButton" type="button" sprite="BackgroundBox" size="775 50 925 80"> 57 <action on="Press">selectPanel(5);</action> 58 <object type="text" style="ModernLabelText" ghost="true"> 59 <translatableAttribute id="caption">Donators</translatableAttribute> 60 </object> 61 </object> 62 63 <object type="image" sprite="ModernFade" size="20 85 100%-20 100%-54"> 64 <object name="creditsText" type="text" style="textPanel"/> 65 </object> 66 67 <!-- Close dialog --> 68 <object type="button" style="ModernButtonRed" size="100%-200 100%-45 100%-17 100%-17" hotkey="cancel"> 69 <translatableAttribute id="caption">Close</translatableAttribute> 70 <action on="Press"> 71 Engine.SwitchGuiPage("page_pregame.xml"); 72 </action> 73 </object> 74 </object> 75 </objects> -
new file inaries/data/mods/public/gui/credits/sprites.xml
diff --git a/binaries/data/mods/public/gui/credits/sprites.xml b/binaries/data/mods/public/gui/credits/sprites.xml new file mode 100644 index 0000000..a9eda6f
- + 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <sprites> 4 <sprite name="BackgroundBox"> 5 <image backcolor="50 35 0 120" size="0 0 100% 100%"/> 6 <image backcolor="gold" size="0 0 1 100%"/> 7 <image backcolor="gold" size="1 0 100%-1 1"/> 8 <image backcolor="gold" size="100%-1 0 100% 100%"/> 9 <image backcolor="gold" size="0 100%-1 100% 100%"/> 10 </sprite> 11 12 <sprite name="ForegroundBox"> 13 <image backcolor="255 255 255 40" size="0 0 100% 100%"/> 14 <image backcolor="gold" size="0 0 2 100%"/> 15 <image backcolor="gold" size="2 100%-2 100%-2 100%"/> 16 <image backcolor="gold" size="100%-2 0 100% 100%"/> 17 <image backcolor="gold" size="0 0 100% 100%"/> 18 </sprite> 19 </sprites> -
new file inaries/data/mods/public/gui/credits/styles.xml
diff --git a/binaries/data/mods/public/gui/credits/styles.xml b/binaries/data/mods/public/gui/credits/styles.xml new file mode 100644 index 0000000..a8d4be1
- + 1 <?xml version="1.0" encoding="utf-8"?> 2 3 <styles> 4 5 <style name="textPanel" 6 buffer_zone="8" 7 scrollbar="true" 8 scrollbar_style="ModernScrollBar" 9 font="sans-bold-stroke-14" 10 textcolor="white" 11 text_align="center" 12 text_valign="center" 13 sprite="ModernDarkBoxGold" 14 /> 15 16 </styles> -
new file inaries/data/mods/public/gui/credits/texts/art.json
diff --git a/binaries/data/mods/public/gui/credits/texts/art.json b/binaries/data/mods/public/gui/credits/texts/art.json new file mode 100644 index 0000000..20761ad
- + 1 { 2 "Content": [ 3 { 4 "Title": "Artistic managers", 5 "Content": [ 6 { 7 "Subtitle": "Art lead", 8 "List": [ 9 {"nick": "Wijitmaker", "name": "Jason Bishop"}, 10 {"nick": "Mythos_Ruler", "name": "Michael D. Hafer"}, 11 {"nick": "Enrique", "name": "Enrique Keykens"} 12 ] 13 }, 14 { 15 "Subtitle": "Sound Manager", 16 "List": [{"nick": "lostchocolatelab", "name": "Damian Kastbauer"}] 17 }, 18 { 19 "Subtitle": "Composer", 20 "List": [{"nick": "OmriLahav", "name": "Omri Lahav"}] 21 } 22 ] 23 }, 24 { 25 "Title": "Mapping", 26 "List": [ 27 {"nick": "Aeros (aka CheeZy)", "name": "Bobby Ognyanov"}, 28 {"nick": "mmayfield45"}, 29 {"nick": "Mythos_Ruler", "name": "Michael D. Hafer"}, 30 {"nick": "niektb", "name": "Niek ten Brinke"}, 31 {"nick": "Pureon"}, 32 {"nick": "SMST"}, 33 {"nick": "Yodaspirine"} 34 ] 35 }, 36 { 37 "Title": "Random Map Scripts", 38 "List": [ 39 {"nick": "Ben", "name": "Ben Vinegar"}, 40 {"nick": "FeXoR", "name": "Florian Finke"}, 41 {"nick": "howlingflute"}, 42 {"nick": "Spahbod", "name": "Omid Davoodi"}, 43 {"nick": "wraitii", "name": "Lancelot de Ferrière le Vayer"} 44 ] 45 }, 46 { 47 "Title": "2D Art", 48 "List": [ 49 {"nick": "Annatar", "name": "Kenneth Branch"}, 50 {"nick": "b.w.keough", "name": "Brendan Keough"}, 51 {"nick": "Brownboot", "name": "Allen White"}, 52 {"nick": "Centurion_13", "name": "Shan Coster"}, 53 {"nick": "Childhood Trauma", "name": "Praveen Pillai"}, 54 {"nick": "dashinvaine", "name": "Gordon Napier"}, 55 {"nick": "Dnas", "name": "David Benjamin"}, 56 {"nick": "Fire Giant", "name": "Malte Schwarzkopf"}, 57 {"nick": "Hyborian", "name": "Shan Sherrill"}, 58 {"nick": "irishstag", "name": "Ryan Karsten"}, 59 {"nick": "lanoocha", "name": "Lana"}, 60 {"nick": "Lion.Kanzen", "name": "Marcio Duron"}, 61 {"nick": "LordGood", "name": "Johnathan B. Good"}, 62 {"nick": "Mythos_Ruler", "name": "Michael D. Hafer"}, 63 {"nick": "Pureon"}, 64 {"nick": "raulfabi"}, 65 {"nick": "Scorpion Ra", "name": "Aaron Robinson"}, 66 {"nick": "Shield Bearer", "name": "Amish Coelho"}, 67 {"nick": "Wijitmaker", "name": "Jason Bishop"} 68 ] 69 }, 70 { 71 "Title": "3D Art", 72 "List": [ 73 {"nick": "Athos"}, 74 {"nick": "Brightgalrs", "name": "Robert D. Schultz"}, 75 {"nick": "Eggbird", "name": "Egbert Tigelaar"}, 76 {"nick": "EmjeR", "name": "Matthijs de Rijk"}, 77 {"nick": "Enrique", "name": "Enrique Keykens Espolio"}, 78 {"nick": "Historicity", "name": "Shane"}, 79 {"nick": "Gen.Kenobi", "name": "Daniel Schubert"}, 80 {"nick": "LordGood", "name": "Johnathan B. Good"}, 81 {"nick": "Micket", "name": ""}, 82 {"nick": "Mythos_Ruler", "name": "Michael D. Hafer"}, 83 {"nick": "Pacman", "name": "Johannes(John) Saarniit"}, 84 {"nick": "paperkat", "name": "William Pryn"}, 85 {"nick": "privateer", "name": "Jeff Groves"}, 86 {"nick": "Pureon"}, 87 {"nick": "Quacker", "name": "Jordan Quackenbush"}, 88 {"nick": "Saurabh", "name": "Saurabh Torne"}, 89 {"nick": "Scorpion Ra", "name": "Aaron Robinson"}, 90 {"nick": "Shield Bearer", "name": "Amish Coelho"}, 91 {"nick": "stanislas69", "name": "Stanislas Dolcini"}, 92 {"nick": "Strannik", "name": ""}, 93 {"nick": "Zaggy1024", "name": "Gregory Bertilson"}, 94 {"nick": "Wijitmaker", "name": "Jason Bishop"} 95 ] 96 }, 97 { 98 "Title": "Sound", 99 "List": [ 100 {"nick": "carsten", "name": "Carsten Rojahn"}, 101 {"nick": "dungeonsound615", "name": "Mike Stanton"}, 102 {"nick": "DynamiteSoundBytes", "name": "Nolan, Tony, and Lucas"}, 103 {"nick": "EvanBogunia", "name": "Evan Bogunia"}, 104 {"nick": "khegarty", "name": "Kaitlynn Hegarty"}, 105 {"nick": "LAVS"}, 106 {"nick": "lostchocolatelab", "name": "Damian Kastbauer"}, 107 {"nick": "MattSherman", "name": "Matt Sherman"}, 108 {"nick": "mclellandp", "name": "Pat Mclelland"}, 109 {"nick": "PhoenixDog", "name": "Shawn Anthony Poxleitner"}, 110 {"nick": "Pureon"}, 111 {"nick": "ryan827", "name": "Ryan Davies"}, 112 {"nick": "Sam Assoum", "name": "Sam Assoum"}, 113 {"nick": "Wyrmwood", "name": "Ron Lacy"} 114 ] 115 }, 116 { 117 "Title": "Music", 118 "List": [ 119 {"nick": "Dariusofwest", "name": "Allan Brown"}, 120 {"nick": "OmriLahav", "name": "Omri Lahav"}, 121 {"nick": "Vaevictis_Music", "name": "Boris Hansen"} 122 ] 123 } 124 ] 125 } -
new file inaries/data/mods/public/gui/credits/texts/donators.json
diff --git a/binaries/data/mods/public/gui/credits/texts/donators.json b/binaries/data/mods/public/gui/credits/texts/donators.json new file mode 100644 index 0000000..d027d2a
- + 1 { 2 "Content" : [ 3 { 4 "Title": "Pledgie Drive 1", 5 "List": [ 6 {"name": "23 Anonymous Donators"}, 7 {"name": "@bcrunos"}, 8 {"name": "@CheDean"}, 9 {"name": "@joshhsoj1902"}, 10 {"name": "@kednar"}, 11 {"name": "@NtynRuben"}, 12 {"name": "@opengimox"}, 13 {"name": "@scotthosking"}, 14 {"name": "@takluyver"}, 15 {"name": "@TubeShaped"}, 16 {"name": "@unverbraucht"}, 17 {"name": "@upurtwee"}, 18 {"name": "@YannDinendal"}, 19 {"name": "Alain Imbaud"}, 20 {"name": "Alex McKee"}, 21 {"name": "Alexander Kallenbach"}, 22 {"name": "Alexander Opachev"}, 23 {"name": "Alexander Wagner"}, 24 {"name": "Alexey Sergin"}, 25 {"name": "Andreas Hopfenblatt"}, 26 {"name": "Andreas Hoppe"}, 27 {"name": "Brent Houghton"}, 28 {"name": "Bruno Sanchez-Huffenus"}, 29 {"name": "Carl Olsson"}, 30 {"name": "Cedric Heintz"}, 31 {"name": "Chad Merkert"}, 32 {"name": "Chad Peyton"}, 33 {"name": "Christopher Tozzi"}, 34 {"name": "Daniel Kuzmenko"}, 35 {"name": "Daniel Scharrer"}, 36 {"name": "danijelv"}, 37 {"name": "Darrel Greenhill"}, 38 {"name": "David Nielsen"}, 39 {"name": "David Raich"}, 40 {"name": "Duan Pavlík"}, 41 {"name": "Emil Nicolaie Perhinschi"}, 42 {"name": "Eric Winterling"}, 43 {"name": "Étienne Bersac"}, 44 {"name": "Evans Thomas"}, 45 {"name": "Fabio Erculiani"}, 46 {"name": "Felipe Torres González"}, 47 {"name": "Fernando Martins"}, 48 {"name": "Florian Ludwig"}, 49 {"name": "Fredrik Eliasson"}, 50 {"name": "Gabriel Diosan"}, 51 {"name": "Gustav Schumann"}, 52 {"name": "Ilya Makarov"}, 53 {"name": "inglorion"}, 54 {"name": "Jan Krautter"}, 55 {"name": "Javier Alfonso"}, 56 {"name": "Jií Jindra"}, 57 {"name": "Jill Bishop"}, 58 {"name": "Joakim Verona"}, 59 {"name": "Jonathan Pritchard"}, 60 {"name": "Jordan Taienao"}, 61 {"name": "Jorge Vega Sánchez"}, 62 {"name": "Juan Font Alonso"}, 63 {"name": "Kaare Baastrup"}, 64 {"name": "Kevin Faulkner"}, 65 {"name": "Kieran P"}, 66 {"name": "Klaas Waesberghe"}, 67 {"name": "Korneel Guns"}, 68 {"name": "Kristian Jagd"}, 69 {"name": "Krzysztof Duchnowski"}, 70 {"name": "Lasse Bigum"}, 71 {"name": "Laurent Thermy"}, 72 {"name": "lordofsoul"}, 73 {"name": "Lorenzo Angeli"}, 74 {"name": "Magne Djupvik"}, 75 {"name": "Maxime Fradi"}, 76 {"name": "Michael Stubbs"}, 77 {"name": "Mikhail Lunkovskiy"}, 78 {"name": "Neil Hancock"}, 79 {"name": "Olivier Bordignon"}, 80 {"name": "Olivier Coppin"}, 81 {"name": "Oskar Maxa"}, 82 {"name": "Panagiotis Tsakiris"}, 83 {"name": "Patrice Sopel"}, 84 {"name": "Paul Scott"}, 85 {"name": "Pedro Veloso"}, 86 {"name": "Séverin Lemaignan"}, 87 {"name": "Scott C Lemon"}, 88 {"name": "Shane Quigley"}, 89 {"name": "Stanislav Kíž"}, 90 {"name": "Steven Saric"}, 91 {"name": "Thomas Hummel"}, 92 {"name": "Thomas Mikkelsen"}, 93 {"name": "Timothy McLaren"}, 94 {"name": "Toni Helenius"}, 95 {"name": "Valeryan_24"}, 96 {"name": "Victor Lavaud"}, 97 {"name": "Viktor Novak"}, 98 {"name": "William Norris"} 99 ] 100 }, 101 { 102 "Title": "Pledgie Drive 2", 103 "List": [ 104 {"name": "87 Anonymous Donators"}, 105 {"name": "@AvivSharon"}, 106 {"name": "@mrfurieux"}, 107 {"name": "@sciondev"}, 108 {"name": "@upurtweet"}, 109 {"name": "@waytoubuntu"}, 110 {"name": "@YannDinendal"}, 111 {"name": "AkylaQD"}, 112 {"name": "Alexander Hunziker"}, 113 {"name": "Anthony Lenton"}, 114 {"name": "arakash"}, 115 {"name": "azkanel"}, 116 {"name": "Catalanoic"}, 117 {"name": "charlycoste"}, 118 {"name": "dadarek"}, 119 {"name": "David Callé"}, 120 {"name": "dbileck"}, 121 {"name": "Erik Johansson"}, 122 {"name": "Evans Thomas"}, 123 {"name": "fireprog"}, 124 {"name": "Foaly"}, 125 {"name": "Francisco Jesús Martínez Murcia"}, 126 {"name": "francofil66"}, 127 {"name": "Frederic Laliberte"}, 128 {"name": "Gabriel Ionescu"}, 129 {"name": "gheesh"}, 130 {"name": "harrytuttle"}, 131 {"name": "Hatsen"}, 132 {"name": "hyno111"}, 133 {"name": "Italo Gonzalez"}, 134 {"name": "Jaap Broekhuizen"}, 135 {"name": "jeykey"}, 136 {"name": "John2Ray"}, 137 {"name": "JuliusColtranePille"}, 138 {"name": "Jupiter Barrera"}, 139 {"name": "Kieran P"}, 140 {"name": "Kyle"}, 141 {"name": "letsyl"}, 142 {"name": "Ludovic Claude"}, 143 {"name": "Martin Albisetti"}, 144 {"name": "Matthew Frost"}, 145 {"name": "Matthew Gillespie"}, 146 {"name": "MCMic"}, 147 {"name": "mikeo"}, 148 {"name": "Mikhail Nedovodin"}, 149 {"name": "Nathanael Barbettini"}, 150 {"name": "orpharion"}, 151 {"name": "p2snico"}, 152 {"name": "Pablo Briones Bas"}, 153 {"name": "Paolo Frattini"}, 154 {"name": "ruano1983"}, 155 {"name": "samtuke"}, 156 {"name": "Strategist"}, 157 {"name": "tallanddaft"}, 158 {"name": "Tottel"}, 159 {"name": "Troels Arvin"}, 160 {"name": "Tungdil"}, 161 {"name": "VforVincent"}, 162 {"name": "Vladislav Gapchich"}, 163 {"name": "Yves *"} 164 ] 165 }, 166 { 167 "Title": "IndieGoGO 2013 campaign\nMore than 1000 donators (!), including:", 168 "List": [ 169 {"name": "1lightsource"}, 170 {"name": "@GuiAmbros"}, 171 {"name": "ACH_Likey"}, 172 {"name": "Adam Freeman"}, 173 {"name": "Adam Glickman"}, 174 {"name": "Adrián Chaves Fernández (Gallaecio)"}, 175 {"name": "Adrian Rocha"}, 176 {"name": "adventureloop"}, 177 {"name": "Agostino Sturaro"}, 178 {"name": "ahj"}, 179 {"name": "Akita Noek"}, 180 {"name": "Albert Astals Cid"}, 181 {"name": "Alec Gorge"}, 182 {"name": "Alessio Bolognini"}, 183 {"name": "Alex Brem"}, 184 {"name": "Alex Kapranoff"}, 185 {"name": "Alex Melville"}, 186 {"name": "Alex W."}, 187 {"name": "Alexander A. (cicyractu)"}, 188 {"name": "Alexandre Prokoudine"}, 189 {"name": "Alexey Kreshchuk"}, 190 {"name": "Alexey Vazhnov"}, 191 {"name": "Alice Marks"}, 192 {"name": "Alin Hanghiuc"}, 193 {"name": "Alister Galpin"}, 194 {"name": "Aljullu"}, 195 {"name": "Altwazar"}, 196 {"name": "Alun Lewis"}, 197 {"name": "aluriak"}, 198 {"name": "alxndr"}, 199 {"name": "Ana Vazquez Alonso"}, 200 {"name": "Anders Dahnielson"}, 201 {"name": "andersonvom"}, 202 {"name": "André Vitor de Lima Matos"}, 203 {"name": "Andrea Panontin"}, 204 {"name": "Andrew M. 'Leny' Lindley"}, 205 {"name": "Andrew Mike"}, 206 {"name": "Andrzej Kardas"}, 207 {"name": "Andy Allan"}, 208 {"name": "Anirudh Surendranath"}, 209 {"name": "Anthony J. Bentley"}, 210 {"name": "Anthony Ryan"}, 211 {"name": "Anton Gushcha"}, 212 {"name": "Antti Repo"}, 213 {"name": "April Lee"}, 214 {"name": "Ari Selseng"}, 215 {"name": "Armin Seuchter"}, 216 {"name": "Arnaud Gelly"}, 217 {"name": "Artem Kavalerov"}, 218 {"name": "AsavarTzeth"}, 219 {"name": "Athaniar Silverbranch"}, 220 {"name": "Atheox"}, 221 {"name": "Aurag"}, 222 {"name": "baosen"}, 223 {"name": "Bart Noordervliet"}, 224 {"name": "BCvery1"}, 225 {"name": "BelaB"}, 226 {"name": "Ben Golightly"}, 227 {"name": "Ben Kennedy"}, 228 {"name": "Ben-Jamin' Ziegelaar"}, 229 {"name": "Benjamin Geese"}, 230 {"name": "Benjamin Stauß"}, 231 {"name": "Bernhard M."}, 232 {"name": "Bert 'Cysion' Beeckman"}, 233 {"name": "Betsy Lipes"}, 234 {"name": "Bill O'Dwyer"}, 235 {"name": "Bobby Ognyanov"}, 236 {"name": "Boris Mindzak"}, 237 {"name": "Boris Niclas-Tölle"}, 238 {"name": "Boyd Stephen Smith Jr."}, 239 {"name": "Brian Aichlmayr"}, 240 {"name": "Brian Stempin"}, 241 {"name": "Brice Gressent"}, 242 {"name": "Bruno Girin"}, 243 {"name": "Cédric de Launois"}, 244 {"name": "c0l3slaw"}, 245 {"name": "Cajetan Bouchard"}, 246 {"name": "Calvin Rawlings"}, 247 {"name": "Carl Sebastian Malm"}, 248 {"name": "Cedric Bail"}, 249 {"name": "Chad Peyton"}, 250 {"name": "Chanakya"}, 251 {"name": "Charles E. Lehner"}, 252 {"name": "Che Dean"}, 253 {"name": "Chris Dickerson"}, 254 {"name": "Christian 'Roggan29' Budde"}, 255 {"name": "Christoffer 'cjva' Andersson"}, 256 {"name": "Christoffer Ingers"}, 257 {"name": "Christoph Zürcher"}, 258 {"name": "Christophe & Fabienne Hugon"}, 259 {"name": "Christopher Morrison"}, 260 {"name": "Chrysostomos Kolovos"}, 261 {"name": "clauskj3r"}, 262 {"name": "Cloei Bailey"}, 263 {"name": "Craig Millett"}, 264 {"name": "Cristiane Weber"}, 265 {"name": "cyrxi"}, 266 {"name": "Cyryl Plotnicki-Chudyk"}, 267 {"name": "D. Can Celasun"}, 268 {"name": "daJoe"}, 269 {"name": "Damiano Dallatana"}, 270 {"name": "Dan Seldow"}, 271 {"name": "Daniel Draeger"}, 272 {"name": "Daniel Melin"}, 273 {"name": "Daniel Spronk"}, 274 {"name": "Daniel Wee"}, 275 {"name": "Daniele Canciani (aka croma25td)"}, 276 {"name": "Daniil Bondarev"}, 277 {"name": "Daniil Kulchenko"}, 278 {"name": "Dave Peters"}, 279 {"name": "David Abilleira"}, 280 {"name": "David Ahmed"}, 281 {"name": "David Hayes"}, 282 {"name": "David Lawrence Evans"}, 283 {"name": "David Page"}, 284 {"name": "David Verelst"}, 285 {"name": "David Zschille"}, 286 {"name": "davyg"}, 287 {"name": "Debcool"}, 288 {"name": "Denis Fateyev"}, 289 {"name": "Dennis Blok"}, 290 {"name": "Desmond Talkington"}, 291 {"name": "devland"}, 292 {"name": "Diego Peinador"}, 293 {"name": "Dmitry Pashkevich"}, 294 {"name": "Doménique van Gennip"}, 295 {"name": "Dr Martin Gray"}, 296 {"name": "earendil02"}, 297 {"name": "Edgar Klenske"}, 298 {"name": "elel"}, 299 {"name": "Elias K Gardner"}, 300 {"name": "Emmanuel Florac"}, 301 {"name": "en3r0"}, 302 {"name": "Engry Baldwin"}, 303 {"name": "Erik J"}, 304 {"name": "Erin"}, 305 {"name": "Ernst Vaarties"}, 306 {"name": "Ethan Glasser-Camp"}, 307 {"name": "Evans Thomas"}, 308 {"name": "Fabio Pezzoni"}, 309 {"name": "Fedor Podolyako"}, 310 {"name": "Felix Schindler"}, 311 {"name": "Fidel Ramos"}, 312 {"name": "Flo S. MTP"}, 313 {"name": "Florian R. A. Angermeier"}, 314 {"name": "flowblok"}, 315 {"name": "Francis Brunelle"}, 316 {"name": "Fred G"}, 317 {"name": "Fred Schuit"}, 318 {"name": "Friedemann Leipold"}, 319 {"name": "Fringale"}, 320 {"name": "Gary Sparks"}, 321 {"name": "Georg R. Zufall"}, 322 {"name": "Gerol Petruzella"}, 323 {"name": "Gert van Valkenhoef"}, 324 {"name": "Glorforidor"}, 325 {"name": "Goosefraba"}, 326 {"name": "Gordon Macleod"}, 327 {"name": "Gudo"}, 328 {"name": "Guillaume Desjardins"}, 329 {"name": "Guillaume Englert"}, 330 {"name": "Guillaume GASNIER"}, 331 {"name": "Gustav 'Gego/XAREN' Hartvigsson"}, 332 {"name": "Gwilym Kuiper"}, 333 {"name": "Harry Burrows"}, 334 {"name": "Harshid Dattani"}, 335 {"name": "Harteex"}, 336 {"name": "Harvy"}, 337 {"name": "Honza Brázdil"}, 338 {"name": "Hunv"}, 339 {"name": "Iain Hallam"}, 340 {"name": "Ian Davis"}, 341 {"name": "Ian R. Bennett"}, 342 {"name": "Isaac Clerencia"}, 343 {"name": "itoshkov"}, 344 {"name": "Ján Nešcivera"}, 345 {"name": "Jacek"}, 346 {"name": "James Dearing"}, 347 {"name": "James Gregory"}, 348 {"name": "James Weeks (aka Chiptoxic)"}, 349 {"name": "Jamie"}, 350 {"name": "Jan Chochol"}, 351 {"name": "Jan-Tore Velle"}, 352 {"name": "Jarl Arntzen"}, 353 {"name": "Jason moofang"}, 354 {"name": "Jason Smith"}, 355 {"name": "Javier Cantero"}, 356 {"name": "JDSJ Hollandia"}, 357 {"name": "Jean-Baptiste CAMPESATO"}, 358 {"name": "Jeremy Rose"}, 359 {"name": "Jesse 'Magic' Johnson"}, 360 {"name": "jg1234"}, 361 {"name": "Jim Baxter"}, 362 {"name": "Jim Howard"}, 363 {"name": "Jimmy Turgeon"}, 364 {"name": "Jiri Stransky"}, 365 {"name": "Joe Johaneman"}, 366 {"name": "Joel A. Parisi"}, 367 {"name": "Joel Edberg"}, 368 {"name": "Joel Friedly"}, 369 {"name": "John Eikenberry"}, 370 {"name": "John Furcean"}, 371 {"name": "John Paden"}, 372 {"name": "John Tse"}, 373 {"name": "Jon Gjengset"}, 374 {"name": "Jonathan Biegert"}, 375 {"name": "Jonny McCullagh"}, 376 {"name": "Jordan White"}, 377 {"name": "Jose A. Rivera"}, 378 {"name": "Jose Lou Chang"}, 379 {"name": "Jose M Andion"}, 380 {"name": "Josef Pruša"}, 381 {"name": "Josepf Haslam"}, 382 {"name": "Joseph Livecchi"}, 383 {"name": "Joseph Thompson"}, 384 {"name": "Josh Gunderson"}, 385 {"name": "Julie Barton"}, 386 {"name": "Julius FreeGamer Blog"}, 387 {"name": "Justin James"}, 388 {"name": "K McFadden"}, 389 {"name": "Kaloyan Todorov"}, 390 {"name": "Kamereon"}, 391 {"name": "kepinpin"}, 392 {"name": "Kevin Krammer"}, 393 {"name": "Kevin W. Rodewald"}, 394 {"name": "kilobug"}, 395 {"name": "Kirkor"}, 396 {"name": "Konstantin Kitmanov"}, 397 {"name": "Kshitij Sobti"}, 398 {"name": "Kyle Leach"}, 399 {"name": "LarsHuluk"}, 400 {"name": "Lasse Bigum"}, 401 {"name": "Lasse Hynninen"}, 402 {"name": "Lauris BH"}, 403 {"name": "lbilloret"}, 404 {"name": "Lee Symes"}, 405 {"name": "lepiota"}, 406 {"name": "linux_eki"}, 407 {"name": "Liothe"}, 408 {"name": "liquidat"}, 409 {"name": "Lukas Daniel Klausner"}, 410 {"name": "Magne Djupvik"}, 411 {"name": "MaMuS"}, 412 {"name": "Marc Schneider-Woggon"}, 413 {"name": "Marcel de Jong"}, 414 {"name": "Marcel Stimberg"}, 415 {"name": "Marcus Liebhardt"}, 416 {"name": "Mardini"}, 417 {"name": "Marián Polták"}, 418 {"name": "Mark Lukens"}, 419 {"name": "Markus Enzenberger"}, 420 {"name": "Matías Guzmán Naranjo"}, 421 {"name": "Matei Zaharia"}, 422 {"name": "Matic Potocnik"}, 423 {"name": "Matt Brenner"}, 424 {"name": "Matt Williams"}, 425 {"name": "Max Polun"}, 426 {"name": "Max Tweddell"}, 427 {"name": "mecatxis"}, 428 {"name": "Michael Laporte"}, 429 {"name": "Michael McCafferty"}, 430 {"name": "Michael Patzer"}, 431 {"name": "Michael Vincent"}, 432 {"name": "Michal Sedlak"}, 433 {"name": "Michele Brami"}, 434 {"name": "Michele Olivo"}, 435 {"name": "Miguel Vera Leon"}, 436 {"name": "Mike Manfrin"}, 437 {"name": "Milo Radunski"}, 438 {"name": "Mindcloud"}, 439 {"name": "Mitchell Kember"}, 440 {"name": "MooseTheBrown"}, 441 {"name": "Nate 'Gnate' Sigrist"}, 442 {"name": "Nathan"}, 443 {"name": "Nathanael Barbettini"}, 444 {"name": "Nehar"}, 445 {"name": "Neil"}, 446 {"name": "Nelson Benitez Leon"}, 447 {"name": "Nic Thiele"}, 448 {"name": "Niklas Rosenqvist"}, 449 {"name": "nineinchnick"}, 450 {"name": "Noah Rusnock"}, 451 {"name": "Ohad Stolarz"}, 452 {"name": "ojdo"}, 453 {"name": "Ollie Lowson"}, 454 {"name": "Orwell"}, 455 {"name": "Osledy Bazo"}, 456 {"name": "Othman Almandhari"}, 457 {"name": "Ørjan Hoem"}, 458 {"name": "Pablo López (kednar)"}, 459 {"name": "Patrick Glanz"}, 460 {"name": "Patrick McDonough"}, 461 {"name": "Patrick Plenefisch"}, 462 {"name": "Paul Edward Tang"}, 463 {"name": "Paul Schorfheide"}, 464 {"name": "Paul4kant"}, 465 {"name": "Pavy"}, 466 {"name": "Peter Berg"}, 467 {"name": "Peter Davoust"}, 468 {"name": "Peter Ståhlberg"}, 469 {"name": "Phalgun Guduthur"}, 470 {"name": "Philip Tellis"}, 471 {"name": "Philipp Pilhofer"}, 472 {"name": "Pierce Lopez"}, 473 {"name": "Pierre 'Eunostos' Cuvelier"}, 474 {"name": "Pierre Donat-Bouillud"}, 475 {"name": "psq"}, 476 {"name": "Quarkslot"}, 477 {"name": "Randolph aka Shieldwolf"}, 478 {"name": "Rene Balser"}, 479 {"name": "Rob Crowther"}, 480 {"name": "Rob Parker"}, 481 {"name": "Rob Snelders"}, 482 {"name": "Robert Clark"}, 483 {"name": "Robert Hill, MD"}, 484 {"name": "Robert Walker"}, 485 {"name": "rocandante"}, 486 {"name": "Romain Naour"}, 487 {"name": "Ronald Delval"}, 488 {"name": "Rudolf J. Mueller"}, 489 {"name": "Rustan Håkansson"}, 490 {"name": "Sam Griffin"}, 491 {"name": "seaxx"}, 492 {"name": "Sebastian Spaeth"}, 493 {"name": "Sergey Kashin"}, 494 {"name": "Shaun McFall"}, 495 {"name": "sHINOBI"}, 496 {"name": "Shiv Manas"}, 497 {"name": "Shrink"}, 498 {"name": "Sigfrido"}, 499 {"name": "Simon Barnes"}, 500 {"name": "Simon Coe"}, 501 {"name": "Simon Wenner"}, 502 {"name": "Sinan Onur Altinuç"}, 503 {"name": "snorpey"}, 504 {"name": "Standa"}, 505 {"name": "Stepan Salenikovich"}, 506 {"name": "Stephan Spijkers"}, 507 {"name": "Stephan Tietz"}, 508 {"name": "Stephan Wiehr"}, 509 {"name": "Stephen Rule"}, 510 {"name": "Steven Fuchs"}, 511 {"name": "Stijn Debrouwere"}, 512 {"name": "Stokescomp"}, 513 {"name": "Sze Howe Koh"}, 514 {"name": "Tanel Mae"}, 515 {"name": "Tapio Hansson"}, 516 {"name": "Tassos Hourmouziadis"}, 517 {"name": "tbug"}, 518 {"name": "Theodore Brown"}, 519 {"name": "Thero Layfer"}, 520 {"name": "Thomas Glamsch"}, 521 {"name": "Thomas Penin"}, 522 {"name": "Thorbjørn Lindeijer"}, 523 {"name": "Tim Koschützki"}, 524 {"name": "TimseZ"}, 525 {"name": "TingPing"}, 526 {"name": "Titov Andrii"}, 527 {"name": "Toby"}, 528 {"name": "Toby Haynes"}, 529 {"name": "Tom C"}, 530 {"name": "tonyo112"}, 531 {"name": "toyotis"}, 532 {"name": "Tribalbeat"}, 533 {"name": "Tuhin Sheikh"}, 534 {"name": "Tyler Hall"}, 535 {"name": "UA"}, 536 {"name": "udan"}, 537 {"name": "Vadim Peretokin"}, 538 {"name": "Valentina Mukhamedzhanova"}, 539 {"name": "Vegar Guldal"}, 540 {"name": "vimja"}, 541 {"name": "Vit Pelcak"}, 542 {"name": "Vladimir Kalugin"}, 543 {"name": "Vladimir Lettiev"}, 544 {"name": "Volkmar Stein"}, 545 {"name": "waspinator"}, 546 {"name": "William Edwards"}, 547 {"name": "wisemonkey"}, 548 {"name": "XioNoX"}, 549 {"name": "Yigal Duppen"}, 550 {"name": "Yumi"}, 551 {"name": "Yury Vidineev"}, 552 {"name": "Yvonne R"}, 553 {"name": "Zach Reed"}, 554 {"name": "Zimes"}, 555 {"name": "ZyoxNet"} 556 ] 557 } 558 ] 559 } -
new file inaries/data/mods/public/gui/credits/texts/misc.json
diff --git a/binaries/data/mods/public/gui/credits/texts/misc.json b/binaries/data/mods/public/gui/credits/texts/misc.json new file mode 100644 index 0000000..7534f4e
- + 1 { 2 "Content": [ 3 { 4 "Title": "History References", 5 "Content": [ 6 { 7 "Subtitle": "Head", 8 "List": [{"nick": "Shogun 144", "name": "Joshua Gilbert"}] 9 }, 10 { 11 "List": [ 12 {"nick": "fede_histpop", "name": "Federico Odorizzi"}, 13 {"nick": "I_Would_Say", "name": "Nathan Benjamin"}, 14 {"nick": "Paul", "name": "Paul Withers"}, 15 {"nick": "Paal_101", "name": "Paul Basar"}, 16 {"nick": "Saqqara", "name": "Ashley King"}, 17 {"nick": "Sting", "name": "Borislav Chernev"}, 18 {"nick": "Thorfinn the Shallow Minded", "name": ""} 19 ] 20 } 21 ] 22 }, 23 { 24 "Title": "Community and Management", 25 "List": [ 26 {"nick": "Black OP", "name": "Randy Sage"}, 27 {"nick": "bstempi", "name": "Brian Stempin"}, 28 {"nick": "chichigrande", "name": "Matthew Rogers"}, 29 {"nick": "CodeOptimist", "name": "Nathanael Barbettini"}, 30 {"nick": "DarkAngelBGE", "name": "Tim Koschuetzki"}, 31 {"nick": "darkfires (aka lethalhunter)", "name": "Jonathan Wright"}, 32 {"nick": "formlesstree4", "name": "Adam Sears"}, 33 {"nick": "gudo"}, 34 {"nick": "Jeru", "name": "Aviv Sharon"}, 35 {"nick": "jshores", "name": "Jason Shores"}, 36 {"nick": "Kimball", "name": "Rob Kimball"}, 37 {"nick": "King Tutankhamun", "name": "Desmond Talkington"}, 38 {"nick": "MishFTW", "name": "A. Mishra"}, 39 {"nick": "Morgan", "name": "Morgan Ramsay"}, 40 {"nick": "Red_08", "name": "Joshua Barker"}, 41 {"nick": "ricotz", "name": "Rico Tzschichholz"}, 42 {"nick": "Rodrigo", "name": "Klass Van Waesberghe"}, 43 {"nick": "Sam (aka Ph4ntom)", "name": "Sam Carlton"}, 44 {"nick": "Sunshine", "name": "Belle Green"}, 45 {"nick": "Yiuel", "name": "Ugo Lachapelle"} 46 ] 47 } 48 ] 49 } 50 No newline at end of file -
new file inaries/data/mods/public/gui/credits/texts/programming.json
diff --git a/binaries/data/mods/public/gui/credits/texts/programming.json b/binaries/data/mods/public/gui/credits/texts/programming.json new file mode 100644 index 0000000..a6539ce
- + 1 { 2 "Content": [ 3 { 4 "Title": "Programming managers", 5 "List": [ 6 {"nick": "Acumen", "name": "Stuart Walpole"}, 7 {"nick": "Dak Lozar", "name": "Dave Loeser"}, 8 {"nick": "h20", "name": "Daniel Wilhelm"}, 9 {"nick": "Janwas", "name": "Jan Wassenberg"}, 10 {"nick": "Raj", "name": "Raj Sharma"} 11 ] 12 }, 13 { 14 "Subtitle": "Special thanks to", 15 "List": [{"nick": "Ykkrosh", "name": "Philip Taylor"}] 16 }, 17 { 18 "List": [ 19 {"nick": "01d55", "name": ""}, 20 {"nick": "Acumen", "name": "Stuart Walpole"}, 21 {"name": "Adrian Fatol"}, 22 {"nick": "AI-Amsterdam"}, 23 {"nick": "Alan", "name": "Alan Kemp"}, 24 {"nick": "aBothe", "name": "Alexander Bothe"}, 25 {"nick": "alpha123", "name": "Peter P. Cannici"}, 26 {"nick": "Aurium", "name": "Aurélio Heckert"}, 27 {"nick": "badmadblacksad", "name": "Martin F"}, 28 {"nick": "Bajter", "name": ""}, 29 {"nick": "bb", "name": "Bouke Jansen"}, 30 {"nick": "Ben", "name": "Ben Vinegar"}, 31 {"nick": "Bird", "name": ""}, 32 {"nick": "Blue", "name": "Richard Welsh"}, 33 {"nick": "bmwiedemann", "name": ""}, 34 {"nick": "boeseRaupe", "name": "Michael Kluge"}, 35 {"nick": "bog_dan_ro", "name": "BogDan Vatra"}, 36 {"nick": "Bonk", "name": "Christopher Ebbert"}, 37 {"nick": "Caius", "name": "Lars Kemmann"}, 38 {"nick": "Calefaction", "name": "Matt Holmes"}, 39 {"nick": "Calvinh", "name": "Carl-Johan Höiby"}, 40 {"name": "Cédric Houbart"}, 41 {"nick": "Chakakhan", "name": "Kenny Long"}, 42 {"nick": "Cracker78", "name": "Chad Heim"}, 43 {"nick": "Crynux", "name": ""}, 44 {"nick": "cwprogger", "name": ""}, 45 {"nick": "Dak Lozar", "name": "Dave Loeser"}, 46 {"nick": "dan", "name": "Dan Strandberg"}, 47 {"name": "Daniel Trevitz"}, 48 {"nick": "DanCar", "name": ""}, 49 {"nick": "Dave", "name": "David Protasowski"}, 50 {"nick": "dax", "name": "Dacian Fiordean"}, 51 {"nick": "deebee", "name": "Deepak Anthony"}, 52 {"nick": "Deiz"}, 53 {"nick": "Dietger", "name": ""}, 54 {"nick": "dumbo"}, 55 {"nick": "dvangennip", "name": "Doménique"}, 56 {"nick": "Echelon9", "name": "Rhys Kidd"}, 57 {"nick": "eihrul", "name": "Lee Salzman"}, 58 {"nick": "elexis", "name": "Alexander Heinsius"}, 59 {"nick": "EmjeR", "name": "Matthijs de Rijk"}, 60 {"nick": "EMontana", "name": ""}, 61 {"nick": "ericb", "name": ""}, 62 {"nick": "evanssthomas", "name": "Evans Thomas"}, 63 {"nick": "Evulant", "name": "Alexander S."}, 64 {"nick": "falsevision", "name": ""}, 65 {"nick": "fcxSanya", "name": "Alexander Olkhovskiy"}, 66 {"nick": "FeXoR", "name": "Florian Finke"}, 67 {"nick": "Fire Giant", "name": "Malte Schwarzkopf"}, 68 {"nick": "freenity", "name": "Anton Galitch"}, 69 {"nick": "gbish (aka Iny)", "name": "Grant Bishop"}, 70 {"nick": "Gee", "name": "Gustav Larsson"}, 71 {"nick": "gerbilOFdoom"}, 72 {"nick": "godlikeldh", "name": ""}, 73 {"nick": "greybeard", "name": "Joe Cocovich"}, 74 {"nick": "grillaz", "name": ""}, 75 {"nick": "gudo"}, 76 {"name": "Samuel Guarnieri"}, 77 {"nick": "Haommin", "name": ""}, 78 {"nick": "h20", "name": "Daniel Wilhelm"}, 79 {"nick": "historic_bruno", "name": "Ben Brian"}, 80 {"nick": "idanwin", "name": ""}, 81 {"nick": "infyquest", "name": "Vijay Kiran Kamuju"}, 82 {"nick": "IronNerd", "name": ""}, 83 {"nick": "Itms", "name": "Nicolas Auvray"}, 84 {"nick": "Jaison", "name": "Marco tom Suden"}, 85 {"nick": "jammus", "name": ""}, 86 {"nick": "Jgwman", "name": ""}, 87 {"nick": "Josh", "name": "Joshua J. Bakita"}, 88 {"nick": "jP_wanN", "name": "Jonas Platte"}, 89 {"nick": "Jubalbarca", "name": "James Baillie"}, 90 {"nick": "JubJub", "name": "Sebastian Vetter"}, 91 {"nick": "kabzerek", "name": ""}, 92 {"nick": "Kai", "name": "Kai Chen"}, 93 {"nick": "KareemErgawy", "name": ""}, 94 {"nick": "kevmo", "name": "Kevin Caffrey"}, 95 {"nick": "kezz", "name": "Graeme Kerry"}, 96 {"nick": "kingadami", "name": ""}, 97 {"nick": "kingbasil", "name": ""}, 98 {"nick": "lafferjm", "name": ""}, 99 {"nick": "leper", "name": "Georg Kilzer"}, 100 {"nick": "livingaftermidnight", "name": "Will Dull"}, 101 {"nick": "Louhike", "name": ""}, 102 {"nick": "lsdh", "name": ""}, 103 {"nick": "madmax"}, 104 {"nick": "m0l0t0ph", "name": "Christoph Gielisch"}, 105 {"nick": "markcho", "name": ""}, 106 {"nick": "MarkT", "name": "Mark Thompson"}, 107 {"nick": "Markus", "name": ""}, 108 {"nick": "Matei", "name": "Matei Zaharia"}, 109 {"nick": "MattDoerksen", "name": "Matt Doerksen"}, 110 {"nick": "mattlott", "name": "Matt Lott"}, 111 {"nick": "maveric", "name": ""}, 112 {"nick": "Micnasty", "name": "Travis Gorkin"}, 113 {"nick": "mimo"}, 114 {"nick": "mk12", "name": "Mitchell Kember"}, 115 {"nick": "Molotov", "name": "Dario Alvarez"}, 116 {"nick": "mpmoreti", "name": ""}, 117 {"nick": "mreiland", "name": "Michael Reiland"}, 118 {"nick": "myconid"}, 119 {"nick": "nd3c3nt", "name": "Gavin Fowler"}, 120 {"nick": "necro", "name": ""}, 121 {"nick": "niektb", "name": "Niek ten Brinke"}, 122 {"nick": "njm", "name": ""}, 123 {"nick": "NoMonkey", "name": "John Mena"}, 124 {"nick": "notpete", "name": "Rich Cross"}, 125 {"nick": "Ols", "name": "Oliver Whiteman"}, 126 {"nick": "olsner", "name": "Simon Brenner"}, 127 {"nick": "otero", "name": ""}, 128 {"name": "Nick Owens"}, 129 {"nick": "Palaxin", "name": "David A. Freitag"}, 130 {"nick": "pcpa", "name": ""}, 131 {"nick": "PendingChaos", "name": ""}, 132 {"nick": "PeteVasi", "name": "Pete Vasiliauskas"}, 133 {"nick": "Polakrity", "name": ""}, 134 {"nick": "Poya", "name": "Poya Manouchehri"}, 135 {"name": "Quentin Pradet"}, 136 {"nick": "prefect", "name": "Nicolai Hähnle"}, 137 {"nick": "pstumpf", "name": ""}, 138 {"name": "André Puel"}, 139 {"nick": "Prodigal Son", "name": ""}, 140 {"nick": "pyrolink", "name": "Andrew Decker"}, 141 {"nick": "quantumstate", "name": "Jonathan Waller"}, 142 {"nick": "QuickShot", "name": "Walter Krawec"}, 143 {"nick": "quonter", "name": ""}, 144 {"nick": "qwertz", "name": ""}, 145 {"nick": "Radagast"}, 146 {"nick": "Raj", "name": "Raj Sharma"}, 147 {"nick": "RedFox", "name": "Jorma Rebane"}, 148 {"nick": "RefinedCode", "name": ""}, 149 {"nick": "Riemer", "name": ""}, 150 {"name": "Rolf Sievers"}, 151 {"nick": "s0600204", "name": "Matthew Norwood"}, 152 {"nick": "SafaAlfulaij"}, 153 {"nick": "sanderd17", "name": "Sander Deryckere"}, 154 {"nick": "sathyam", "name": "Sathyam Vellal"}, 155 {"nick": "sbte", "name": ""}, 156 {"nick": "scroogie", "name": "André Gemünd"}, 157 {"nick": "scythetwirler", "name": "Casey X."}, 158 {"nick": "serveurix"}, 159 {"nick": "Shane", "name": ""}, 160 {"nick": "Silk", "name": ""}, 161 {"nick": "silure", "name": ""}, 162 {"nick": "Simikolon", "name": "Yannick & Simon"}, 163 {"nick": "Spahbod", "name": "Omid Davoodi"}, 164 {"nick": "stanislas69", "name": "Stanislas Dolcini"}, 165 {"nick": "Stefan", "name": ""}, 166 {"nick": "stilz", "name": ""}, 167 {"nick": "stwf", "name": "Steven Fuchs"}, 168 {"nick": "t4nk004", "name": ""}, 169 {"nick": "tbm", "name": ""}, 170 {"nick": "tau"}, 171 {"nick": "Teiresias"}, 172 {"nick": "thamlett", "name": "Timothy Hamlett"}, 173 {"nick": "thedrunkyak", "name": "Dan Fuhr"}, 174 {"nick": "TrinityDeath", "name": "Jethro Lu"}, 175 {"nick": "triumvir", "name": "Corin Schedler"}, 176 {"nick": "trompetin17", "name": "Juan Guillermo"}, 177 {"nick": "vladislavbelov", "name": "Vladislav Belov"}, 178 {"nick": "vts", "name": "Jeroen DR"}, 179 {"nick": "WhiteTreePaladin", "name": "Brian Ashley"}, 180 {"nick": "wraitii", "name": "Lancelot de Ferrière le Vayer"}, 181 {"nick": "Xentelian", "name": "Mark Strawson"}, 182 {"nick": "Xienen", "name": "Dayle Flowers"}, 183 {"nick": "xtizer", "name": "Matt Green"}, 184 {"nick": "yashi", "name": ""}, 185 {"nick": "Ykkrosh", "name": "Philip Taylor"}, 186 {"nick": "Yves"}, 187 {"nick": "Zeusthor", "name": "Jeffrey Tavares"}, 188 {"nick": "zoot"}, 189 {"nick": "zsol", "name": ""}, 190 {"nick": "Zyi", "name": "Charles De Meulenaer"} 191 ] 192 } 193 ] 194 } -
new file inaries/data/mods/public/gui/credits/texts/special.json
diff --git a/binaries/data/mods/public/gui/credits/texts/special.json b/binaries/data/mods/public/gui/credits/texts/special.json new file mode 100644 index 0000000..b06ec3f
- + 1 { 2 "Content": [ 3 { 4 "Title": "In Memoriam", 5 "List": [ 6 {"nick": "Phoenix-TheRealDeal", "name": "Ken Wood"}, 7 {"nick": "Dak Lozar", "name": "Dave Loeser"} 8 ] 9 }, 10 { 11 "Title": "Special thanks to:", 12 "Content": [ 13 { 14 "Subtitle": "0 A.D. Founder", 15 "List": [{"nick": "Wijitmaker", "name": "Jason Bishop"}] 16 }, 17 { 18 "Subtitle": "Project Leaders", 19 "List": [ 20 {"nick": "feneur", "name": "Erik Johansson"}, 21 {"nick": "Mythos_Ruler", "name": "Michael D. Hafer"} 22 ] 23 }, 24 { 25 "Subtitle": "Co-Lead Designers", 26 "List": [ 27 {"nick": "Phoenix-TheRealDeal", "name": "Ken Wood"}, 28 {"nick": "Acumen", "name": "Stuart Walpole"} 29 ] 30 } 31 ] 32 }, 33 { 34 "Title": "And thanks to the entire community for making 0 A.D. possible." 35 }, 36 { 37 "Title": "No historians were harmed during the development of this project." 38 } 39 ] 40 } -
new file inaries/data/mods/public/gui/credits/texts/translators.json
diff --git a/binaries/data/mods/public/gui/credits/texts/translators.json b/binaries/data/mods/public/gui/credits/texts/translators.json new file mode 100644 index 0000000..26ba46e
- + 1 { 2 "Content": [ 3 ] 4 } 5 No newline at end of file -
new file inaries/data/mods/public/gui/page_credits.xml
diff --git a/binaries/data/mods/public/gui/page_credits.xml b/binaries/data/mods/public/gui/page_credits.xml new file mode 100644 index 0000000..83628e7
- + 1 <?xml version="1.0" encoding="utf-8"?> 2 <page> 3 <include>common/modern/setup.xml</include> 4 <include>common/modern/styles.xml</include> 5 <include>common/modern/sprites.xml</include> 6 7 <include>common/global.xml</include> 8 9 <include>credits/styles.xml</include> 10 <include>credits/sprites.xml</include> 11 <include>credits/credits.xml</include> 12 </page> -
binaries/data/mods/public/gui/pregame/mainmenu.xml
diff --git a/binaries/data/mods/public/gui/pregame/mainmenu.xml b/binaries/data/mods/public/gui/pregame/mainmenu.xml index d2089d3..cd1917f 100644
a b 535 535 <translate>Alpha XIX: Syllepsis</translate> 536 536 <keep>[/font]\n\n</keep> 537 537 <translate>WARNING: This is an early development version of the game. Many features have not been added yet.</translate> 538 <keep>\n\n</keep>539 <translate>Get involved at: play0ad.com</translate>540 538 </attribute> 541 539 </object> 542 540 543 <!-- CONTACT METHODS-->541 <!-- GET INVOLVED --> 544 542 <object type="button" 545 543 style="StoneButton" 546 544 tooltip_style="pgToolTip" 547 size="8 100%-108 100%-8 100%-80" 548 > 549 <translatableAttribute id="caption">Help with the Translation!</translatableAttribute> 550 <translatableAttribute id="tooltip">Click to open the 0 A.D. translate page in your browser.</translatableAttribute> 551 <action on="Press"><![CDATA[ 552 openURL("http://trac.wildfiregames.com/wiki/Localization"); 553 ]]></action> 554 </object> 555 556 <object type="button" 557 style="StoneButton" 558 tooltip_style="pgToolTip" 559 size="8 100%-72 50%-4 100%-44" 545 size="8 100%-144 50%-4 100%-116" 560 546 > 561 547 <translatableAttribute id="caption">Website</translatableAttribute> 562 548 <translatableAttribute id="tooltip">Click to open play0ad.com in your web browser.</translatableAttribute> … … 568 554 <object type="button" 569 555 style="StoneButton" 570 556 tooltip_style="pgToolTip" 571 size="50%+4 100%- 72 100%-8 100%-44"557 size="50%+4 100%-144 100%-8 100%-116" 572 558 > 573 559 <translatableAttribute id="caption">Chat</translatableAttribute> 574 560 <translatableAttribute id="tooltip">Click to open the 0 A.D. IRC chat in your browser. (#0ad on webchat.quakenet.org)</translatableAttribute> … … 580 566 <object type="button" 581 567 style="StoneButton" 582 568 tooltip_style="pgToolTip" 583 size="8 100%- 36 100%-8 100%-8"569 size="8 100%-108 100%-8 100%-80" 584 570 > 585 571 <translatableAttribute id="caption">Report a Bug</translatableAttribute> 586 572 <translatableAttribute id="tooltip">Click to visit 0 A.D. Trac to report a bug, crash, or error.</translatableAttribute> … … 589 575 ]]></action> 590 576 </object> 591 577 578 <object type="button" 579 style="StoneButton" 580 tooltip_style="pgToolTip" 581 size="8 100%-72 100%-8 100%-44" 582 > 583 <translatableAttribute id="caption">Translate the game</translatableAttribute> 584 <translatableAttribute id="tooltip">Click to open the 0 A.D. translate page in your browser.</translatableAttribute> 585 <action on="Press"><![CDATA[ 586 openURL("http://trac.wildfiregames.com/wiki/Localization"); 587 ]]></action> 588 </object> 589 590 <object type="button" 591 style="StoneButton" 592 tooltip_style="pgToolTip" 593 size="8 100%-36 100%-8 100%-8" 594 > 595 <translatableAttribute id="caption">Credits</translatableAttribute> 596 <translatableAttribute id="tooltip">Click to see the 0 A.D. credits.</translatableAttribute> 597 <action on="Press"> 598 Engine.PushGuiPage("page_credits.xml", {}); 599 </action> 600 </object> 601 592 602 </object> 593 603 594 604 <!-- LOGO AND BUILD VERSION --> -
deleted file binaries/data/mods/public/gui/text/credits.txt
diff --git a/binaries/data/mods/public/gui/text/credits.txt b/binaries/data/mods/public/gui/text/credits.txt deleted file mode 100644 index d5e369e..0000000
+ - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 "0 A.D."47 48 Cast of Characters49 Dude #768 Minion #39250 Dude #162 Minion #86451 Dude #794 Minion #89452 Dude #765 Minion #89653 Dude #668 Minion #33154 Dude #748 Minion #89255 Dude #963 Minion #87056 Dude #564 Minion #32157 Dude #731 Minion #89158 Polly Gonne Dudette59 60 and introducing61 Roastin' Staff Rooster as himself62 63 No historians were harmed during the development of this project.64 65 © 2002-2007 Wildfire Games. All rights reserved.66 67 This product is intended solely for private home use. Public performance or other use is expressly prohibited.68 No newline at end of file -
binaries/data/mods/public/l10n/messages.json
diff --git a/binaries/data/mods/public/l10n/messages.json b/binaries/data/mods/public/l10n/messages.json index d1e43ad..07535af 100644
a b 236 236 "globalscripts/**.js", 237 237 "gui/civinfo/**.js", 238 238 "gui/common/**.js", 239 "gui/credits/**.js", 239 240 "gui/locale/**.js", 240 241 "gui/msgbox/**.js", 241 242 "gui/options/**.js", … … 268 269 "globalscripts/**.xml", 269 270 "gui/civinfo/**.xml", 270 271 "gui/common/**.xml", 272 "gui/credits/**.xml", 271 273 "gui/locale/**.xml", 272 274 "gui/msgbox/**.xml", 273 275 "gui/options/**.xml", … … 287 289 } 288 290 } 289 291 }, 292 { 293 "extractor": "json", 294 "filemasks": [ 295 "gui/credits/texts/**.json" 296 ], 297 "options": { 298 "keywords": [ 299 "Title", 300 "Subtitle", 301 ] 302 } 303 }, 290 304 { 291 305 "extractor": "txt", 292 306 "filemasks": [ -
new file source/tools/i18n/creditTranslators.py
diff --git a/source/tools/i18n/creditTranslators.py b/source/tools/i18n/creditTranslators.py new file mode 100644 index 0000000..767f4b3
- + 1 #!/usr/bin/env python2 2 # -*- coding:utf-8 -*- 3 # 4 # Copyright (C) 2016 Wildfire Games. 5 # This file is part of 0 A.D. 6 # 7 # 0 A.D. is free software: you can redistribute it and/or modify 8 # it under the terms of the GNU General Public License as published by 9 # the Free Software Foundation, either version 2 of the License, or 10 # (at your option) any later version. 11 # 12 # 0 A.D. is distributed in the hope that it will be useful, 13 # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 # GNU General Public License for more details. 16 # 17 # You should have received a copy of the GNU General Public License 18 # along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. 19 20 """ 21 This file imports the translators credits located in the public mod GUI files and 22 runs through .po files to add possible new translators to it. 23 It only appends new people, so it is possible to manually add names in the credits 24 file and they won't be overwitten by running this script. 25 26 Translatable strings will be extracted from the generated file, so this should be ran 27 before updateTemplates.py. 28 """ 29 30 from __future__ import absolute_import, division, print_function, unicode_literals 31 32 import json, os, glob, re 33 34 # Credited languages - Keep in sync with source/tools/dist/remove-incomplete-translations.sh 35 langs = { 36 'cs': 'Czech', 37 'de': 'German', 38 'en_GB': 'English (UK)', 39 'es': 'Spanish', 40 'fr': 'French', 41 'gd': 'Gaelic', 42 'gl': 'Galician', 43 'id': 'Indonesian', 44 'it': 'Italian', 45 'nl': 'Dutch', 46 'pl': 'Polish', 47 'pt_PT': 'Portuguese (Portugal)', 48 'pt_BR': 'Portuguese (Brazil)', 49 'ru': 'Russian', 50 'sk': 'Slovak', 51 'tr': 'Turkish'} 52 53 root = '../../../' 54 55 poLocations = [ 56 'binaries/data/l10n/', 57 'binaries/data/mods/public/l10n/', 58 'binaries/data/mods/mod/l10n/'] 59 60 creditsLocation = 'binaries/data/mods/public/gui/credits/texts/translators.json' 61 62 # Load JSON data 63 creditsFile = open(root + creditsLocation) 64 JSONData = json.load(creditsFile) 65 creditsFile.close() 66 67 # This dictionnary will hold creditors lists for each language, indexed by code 68 langsLists = {} 69 70 # Create the new JSON data 71 newJSONData = {'Content': []} 72 73 # First get the already existing lists. If they correspond with some of the credited languages, 74 # add them to the new data after processing, else add them immediately. 75 # NB: All of this is quite inefficient 76 for element in JSONData['Content']: 77 if 'Title' not in element or element['Title'] not in langs.values(): 78 newJSONData['Content'].append(element) 79 continue 80 81 for (langCode, langName) in langs.items(): 82 if element['Title'] == langName: 83 langsLists[langCode] = element['List'] 84 break 85 86 # Now actually go through the list of languages and search the .po files for people 87 88 # Prepare some regexes 89 commentMatch = re.compile('#.*') 90 translatorMatch = re.compile('# ([\w\s]*)(?: <.*>)?, [0-9-]', re.UNICODE) 91 92 # Search 93 for lang in langs.keys(): 94 if lang not in langsLists.keys(): 95 langsLists[lang] = [] 96 97 for location in poLocations: 98 files = glob.glob(root + location + lang + '.*.po') 99 for file in files: 100 poFile = open(file.replace('\\', '/')) 101 reached = False 102 for line in poFile: 103 line = line.decode('utf8') 104 if reached: 105 if not commentMatch.match(line): 106 break 107 m = translatorMatch.match(line) 108 if m: 109 langsLists[lang].append(m.group(1)) 110 if line.strip() == '# Translators:': 111 reached = True 112 poFile.close() 113 114 # Sort and remove duplicates 115 # Sorting should ignore case to have a neat credits list 116 langsLists[lang] = sorted(set(langsLists[lang]), cmp=lambda x,y: cmp(x.lower(), y.lower())) 117 118 # Now insert the new data into the new JSON file 119 for (langCode, langList) in sorted(langsLists.items()): 120 newJSONData['Content'].append({'Title': langs[langCode], 'List': []}) 121 for name in langList: 122 newJSONData['Content'][-1]['List'].append({'name': name}) 123 124 # Save the JSON data to the credits file 125 creditsFile = open(root + creditsLocation, 'w') 126 json.dump(newJSONData, creditsFile, indent=4) 127 creditsFile.close()