Index: ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json (revision 20778) +++ ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json (revision 20779) @@ -1,242 +1,243 @@ { "Title": "Programming", "Content": [ { "Title": "Programming managers", "List": [ {"nick": "Acumen", "name": "Stuart Walpole"}, {"nick": "Dak Lozar", "name": "Dave Loeser"}, {"nick": "h20", "name": "Daniel Wilhelm"}, {"nick": "Janwas", "name": "Jan Wassenberg"}, {"nick": "Raj", "name": "Raj Sharma"} ] }, { "Subtitle": "Special thanks to", "List": [{"nick": "Ykkrosh", "name": "Philip Taylor"}] }, { "List": [ {"nick": "01d55"}, {"nick": "Acumen", "name": "Stuart Walpole"}, {"name": "Adrian Fatol"}, {"nick": "AI-Amsterdam"}, {"nick": "Alan", "name": "Alan Kemp"}, {"nick": "aBothe", "name": "Alexander Bothe"}, {"nick": "alpha123", "name": "Peter P. Cannici"}, {"nick": "andy5995", "name": "Andy Alt"}, {"nick": "Angen"}, {"nick": "ArnH", "name": "Arno Hemelhof"}, {"nick": "Aurium", "name": "Aurélio Heckert"}, {"nick": "badmadblacksad", "name": "Martin F"}, {"name": "Mikołaj \"Bajter\" Korcz"}, {"nick": "bb", "name": "Bouke Jansen"}, {"nick": "Ben", "name": "Ben Vinegar"}, {"nick": "Bird"}, {"nick": "Blue", "name": "Richard Welsh"}, {"nick": "bmwiedemann"}, {"nick": "boeseRaupe", "name": "Michael Kluge"}, {"nick": "bog_dan_ro", "name": "BogDan Vatra"}, {"nick": "Bonk", "name": "Christopher Ebbert"}, {"nick": "borg-", "name": "Estevan Borges Martins"}, {"nick": "Boudica"}, {"nick": "Caius", "name": "Lars Kemmann"}, {"nick": "Calefaction", "name": "Matt Holmes"}, {"nick": "Calvinh", "name": "Carl-Johan Höiby"}, {"nick": "causative", "name": "Bart Parkis"}, {"name": "Cédric Houbart"}, {"nick": "Chakakhan", "name": "Kenny Long"}, {"nick": "Clockwork-Muse", "name": "Stephen A. Imhoff"}, {"nick": "Cracker78", "name": "Chad Heim"}, {"nick": "Crynux", "name": "Stephen J. Fewer"}, {"nick": "cwprogger"}, {"nick": "Dak Lozar", "name": "Dave Loeser"}, {"nick": "dalerank", "name": "Sergey Kushnirenko"}, {"nick": "dan", "name": "Dan Strandberg"}, {"name": "Daniel Trevitz"}, {"nick": "DanCar", "name": "Daniel Cardenas"}, {"nick": "danger89", "name": "Melroy van den Berg"}, {"nick": "Dariost", "name": "Dario Ostuni"}, {"nick": "Dave", "name": "David Protasowski"}, {"nick": "dax", "name": "Dacian Fiordean"}, {"nick": "deebee", "name": "Deepak Anthony"}, {"nick": "Deiz"}, {"nick": "Dietger", "name": "Dietger van Antwerpen"}, {"nick": "dp304"}, {"nick": "dpiquet", "name": "Damien Piquet"}, {"nick": "dumbo"}, {"nick": "Dunedan", "name": "Daniel Roschka"}, {"nick": "dvangennip", "name": "Doménique"}, {"nick": "Echelon9", "name": "Rhys Kidd"}, {"nick": "echotangoecho"}, {"nick": "eihrul", "name": "Lee Salzman"}, {"nick": "elexis", "name": "Alexander Heinsius"}, {"nick": "EmjeR", "name": "Matthijs de Rijk"}, {"nick": "EMontana"}, {"nick": "ericb"}, {"nick": "evanssthomas", "name": "Evans Thomas"}, {"nick": "Evulant", "name": "Alexander S."}, {"nick": "fabio", "name": "Fabio Pedretti"}, {"nick": "falsevision", "name": "Mahdi Khodadadifard"}, {"nick": "fatherbushido", "name": "Nicolas Tisserand"}, {"nick": "fcxSanya", "name": "Alexander Olkhovskiy"}, {"nick": "FeXoR", "name": "Florian Finke"}, {"nick": "Fire Giant", "name": "Malte Schwarzkopf"}, {"nick": "fpre", "name": "Frederick Stallmeyer"}, {"nick": "freenity", "name": "Anton Galitch"}, + {"nick": "Gallaecio", "name": "Adrián Chaves"}, {"nick": "gbish (aka Iny)", "name": "Grant Bishop"}, {"nick": "Gee", "name": "Gustav Larsson"}, {"nick": "gerbilOFdoom"}, {"nick": "godlikeldh"}, {"nick": "greybeard", "name": "Joe Cocovich"}, {"nick": "grillaz"}, {"nick": "Grugnas", "name": "Giuseppe Tranchese"}, {"nick": "gudo"}, {"nick": "Guuts", "name": "Matthew Guttag"}, {"name": "Samuel Guarnieri"}, {"nick": "Hannibal_Baraq", "name": "Clive Juhász S."}, {"nick": "Haommin"}, {"nick": "h20", "name": "Daniel Wilhelm"}, {"nick": "historic_bruno", "name": "Ben Brian"}, {"nick": "idanwin"}, {"nick": "Imarok", "name": "J. S."}, {"nick": "infyquest", "name": "Vijay Kiran Kamuju"}, {"nick": "IronNerd", "name": "Matthew McMullan"}, {"nick": "Itms", "name": "Nicolas Auvray"}, {"nick": "Jaison", "name": "Marco tom Suden"}, {"nick": "jammus", "name": "James Scott"}, {"nick": "javiergodas", "name": "Javier Godas Vieitez"}, {"nick": "Jgwman"}, {"nick": "JonBaer", "name": "Jon Baer"}, {"nick": "Josh", "name": "Joshua J. Bakita"}, {"nick": "joskar", "name": "Johnny Oskarsson"}, {"nick": "jP_wanN", "name": "Jonas Platte"}, {"nick": "Jubalbarca", "name": "James Baillie"}, {"nick": "JubJub", "name": "Sebastian Vetter"}, {"nick": "jurgemaister"}, {"nick": "kabzerek", "name": "Grzegorz Kabza"}, {"nick": "Kai", "name": "Kai Chen"}, {"name": "Kareem Ergawy"}, {"nick": "kevmo", "name": "Kevin Caffrey"}, {"nick": "kezz", "name": "Graeme Kerry"}, {"nick": "kingadami", "name": "Adam Winsor"}, {"nick": "kingbasil", "name": "Giannis Fafalios"}, {"nick": "lafferjm", "name": "Justin Lafferty"}, {"nick": "LeanderH", "name": "Leander Hemelhof"}, {"nick": "leper", "name": "Georg Kilzer"}, {"nick": "LittleDev"}, {"nick": "livingaftermidnight", "name": "Will Dull"}, {"nick": "Louhike"}, {"nick": "lsdh"}, {"nick": "madmax", "name": "Abhijit Nandy"}, {"nick": "madpilot", "name": "Guido Falsi"}, {"nick": "m0l0t0ph", "name": "Christoph Gielisch"}, {"nick": "markcho"}, {"nick": "MarkT", "name": "Mark Thompson"}, {"nick": "Markus"}, {"nick": "Matei", "name": "Matei Zaharia"}, {"nick": "Mate-86", "name": "Mate Kovacs"}, {"nick": "MattDoerksen", "name": "Matt Doerksen"}, {"nick": "mattlott", "name": "Matt Lott"}, {"nick": "maveric", "name": "Anton Protko"}, {"nick": "Micnasty", "name": "Travis Gorkin"}, {"nick": "mimo"}, {"nick": "mk12", "name": "Mitchell Kember"}, {"nick": "mmayfield45", "name": "Michael Mayfield"}, {"nick": "mmoanis", "name": "Mohamed Moanis"}, {"nick": "Molotov", "name": "Dario Alvarez"}, {"nick": "mpmoreti", "name": "Marcos Paulo Moreti"}, {"nick": "mreiland", "name": "Michael Reiland"}, {"nick": "myconid"}, {"nick": "nd3c3nt", "name": "Gavin Fowler"}, {"nick": "niektb", "name": "Niek ten Brinke"}, {"nick": "njm"}, {"nick": "NoMonkey", "name": "John Mena"}, {"nick": "notpete", "name": "Rich Cross"}, {"nick": "nwtour"}, {"nick": "odoaker", "name": "Ágoston Sipos"}, {"nick": "Offensive ePeen", "name": "Jared Ryan Bills"}, {"nick": "Ols", "name": "Oliver Whiteman"}, {"nick": "olsner", "name": "Simon Brenner"}, {"nick": "OptimusShepard", "name": "Pirmin Stanglmeier"}, {"nick": "otero"}, {"nick": "Nescio"}, {"name": "Nick Owens"}, {"nick": "Palaxin", "name": "David A. Freitag"}, {"name": "Paul Withers"}, {"nick": "paulobezerr", "name": "Paulo George Gomes Bezerra"}, {"nick": "pcpa", "name": "Paulo Andrade"}, {"nick": "Pendingchaos"}, {"nick": "PeteVasi", "name": "Pete Vasiliauskas"}, {"nick": "pilino1234"}, {"nick": "PingvinBetyar", "name": "Schronk Tamás"}, {"nick": "Polakrity"}, {"nick": "Poya", "name": "Poya Manouchehri"}, {"name": "Quentin Pradet"}, {"nick": "prefect", "name": "Nicolai Hähnle"}, {"nick": "pstumpf", "name": "Pascal Stumpf"}, {"name": "André Puel"}, {"nick": "Prodigal Son"}, {"nick": "pyrolink", "name": "Andrew Decker"}, {"nick": "quantumstate", "name": "Jonathan Waller"}, {"nick": "QuickShot", "name": "Walter Krawec"}, {"nick": "quonter"}, {"nick": "qwertz"}, {"nick": "Radagast"}, {"nick": "Raj", "name": "Raj Sharma"}, {"nick": "RedFox", "name": "Jorma Rebane"}, {"nick": "RefinedCode"}, {"nick": "Riemer"}, {"name": "Rolf Sievers"}, {"nick": "s0600204", "name": "Matthew Norwood"}, {"nick": "sacha_vrand", "name": "Sacha Vrand"}, {"nick": "SafaAlfulaij"}, {"nick": "Sandarac"}, {"nick": "sanderd17", "name": "Sander Deryckere"}, {"nick": "sathyam", "name": "Sathyam Vellal"}, {"nick": "sbirmi", "name": "Sharad Birmiwal"}, {"nick": "sbte", "name": "Sven Baars"}, {"nick": "scroogie", "name": "André Gemünd"}, {"nick": "scythetwirler", "name": "Casey X."}, {"nick": "serveurix"}, {"nick": "Shane", "name": "Shane Grant"}, {"nick": "Silk", "name": "Josh Godsiff"}, {"nick": "silure"}, {"nick": "Simikolon", "name": "Yannick & Simon"}, {"nick": "Spahbod", "name": "Omid Davoodi"}, {"nick": "stanislas69", "name": "Stanislas Dolcini"}, {"nick": "Stefan"}, {"nick": "stilz", "name": "Sławomir Zborowski"}, {"nick": "stwf", "name": "Steven Fuchs"}, {"nick": "svott", "name": "Sven Ott"}, {"nick": "t4nk004"}, {"nick": "tbm", "name": "Martin Michlmayr"}, {"nick": "tau"}, {"nick": "Teiresias"}, {"nick": "temple"}, {"nick": "texane"}, {"nick": "thamlett", "name": "Timothy Hamlett"}, {"nick": "thedrunkyak", "name": "Dan Fuhr"}, {"nick": "TrinityDeath", "name": "Jethro Lu"}, {"nick": "triumvir", "name": "Corin Schedler"}, {"nick": "trompetin17", "name": "Juan Guillermo"}, {"nick": "user1", "name": "A. C."}, {"nick": "usey11"}, {"nick": "vladislavbelov", "name": "Vladislav Belov"}, {"nick": "vts", "name": "Jeroen DR"}, {"nick": "WhiteTreePaladin", "name": "Brian Ashley"}, {"nick": "wraitii", "name": "Lancelot de Ferrière le Vayer"}, {"nick": "Xentelian", "name": "Mark Strawson"}, {"nick": "Xienen", "name": "Dayle Flowers"}, {"nick": "xtizer", "name": "Matt Green"}, {"nick": "yashi", "name": "Yasushi Shoji"}, {"nick": "Ykkrosh", "name": "Philip Taylor"}, {"nick": "Yves"}, {"nick": "Zeusthor", "name": "Jeffrey Tavares"}, {"nick": "zoot"}, {"nick": "zsol", "name": "Zsolt Dollenstein"}, {"nick": "Zyi", "name": "Charles De Meulenaer"} ] } ] } Index: ps/trunk/binaries/data/mods/public/gui/summary/layout.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/summary/layout.js (revision 20778) +++ ps/trunk/binaries/data/mods/public/gui/summary/layout.js (revision 20779) @@ -1,382 +1,384 @@ var getScorePanelsData = () => ({ "score": { "caption": translate("Score"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "totalScore", "caption": translate("Total score"), "yStart": 16, "width": 100 }, { "identifier": "economyScore", "caption": translate("Economy score"), "yStart": 16, "width": 100 }, { "identifier": "militaryScore", "caption": translate("Military score"), "yStart": 16, "width": 100 }, { "identifier": "explorationScore", "caption": translate("Exploration score"), "yStart": 16, "width": 100 } ], "titleHeadings": [], "counters": [ { "width": 100, "fn": calculateScoreTotal, "verticalOffset": 12 }, { "width": 100, "fn": calculateEconomyScore, "verticalOffset": 12 }, { "width": 100, "fn": calculateMilitaryScore, "verticalOffset": 12 }, { "width": 100, "fn": calculateExplorationScore, "verticalOffset": 12 } ], "teamCounterFn": calculateScoreTeam }, "buildings": { "caption": translate("Buildings"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "total", "caption": translate("Total"), "yStart": 34, "width": 105 }, { "identifier": "House", "caption": translate("Houses"), "yStart": 34, "width": 85 }, { "identifier": "Economic", "caption": translate("Economic"), "yStart": 34, "width": 85 }, { "identifier": "Outpost", "caption": translate("Outposts"), "yStart": 34, "width": 85 }, { "identifier": "Military", "caption": translate("Military"), "yStart": 34, "width": 85 }, { "identifier": "Fortress", "caption": translate("Fortresses"), "yStart": 34, "width": 85 }, { "identifier": "CivCentre", "caption": translate("Civ centers"), "yStart": 34, "width": 85 }, { "identifier": "Wonder", "caption": translate("Wonders"), "yStart": 34, "width": 85 } ], "titleHeadings": [ { "caption": sprintf(translate("Buildings Statistics (%(constructed)s / %(destroyed)s / %(captured)s / %(lost)s)"), { "constructed": getColoredTypeTranslation("constructed"), "destroyed": getColoredTypeTranslation("destroyed"), "captured": getColoredTypeTranslation("captured"), "lost": getColoredTypeTranslation("lost") }), "yStart": 16, "width": 85 * 7 + 105 }, // width = 700 ], "counters": [ { "width": 105, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 }, { "width": 85, "fn": calculateBuildings, "verticalOffset": 3 } ], "teamCounterFn": calculateBuildingsTeam }, "units": { "caption": translate("Units"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "total", "caption": translate("Total"), "yStart": 34, "width": 105 }, { "identifier": "Infantry", "caption": translate("Infantry"), "yStart": 34, "width": 85 }, { "identifier": "Worker", "caption": translate("Worker"), "yStart": 34, "width": 85 }, { "identifier": "Cavalry", "caption": translate("Cavalry"), "yStart": 34, "width": 85 }, { "identifier": "Champion", "caption": translate("Champion"), "yStart": 34, "width": 85 }, { "identifier": "Hero", "caption": translate("Heroes"), "yStart": 34, "width": 85 }, { "identifier": "Siege", "caption": translate("Siege"), "yStart": 34, "width": 85 }, { "identifier": "Ship", "caption": translate("Navy"), "yStart": 34, "width": 85 }, { "identifier": "Trader", "caption": translate("Traders"), "yStart": 34, "width": 85 } ], "titleHeadings": [ { "caption": sprintf(translate("Units Statistics (%(trained)s / %(killed)s / %(captured)s / %(lost)s)"), { "trained": getColoredTypeTranslation("trained"), "killed": getColoredTypeTranslation("killed"), "captured": getColoredTypeTranslation("captured"), "lost": getColoredTypeTranslation("lost") }), "yStart": 16, "width": 85 * 8 + 105 }, // width = 785 ], "counters": [ { "width": 105, "fn": calculateUnitsWithCaptured, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnitsWithCaptured, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 }, { "width": 85, "fn": calculateUnits, "verticalOffset": 3 } ], "teamCounterFn": calculateUnitsTeam }, "resources": { "caption": translate("Resources"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "total", "caption": translate("Total"), "yStart": 34, "width": 110 }, ...g_ResourceData.GetResources().map(res => ({ "identifier": res.code, "caption": resourceNameFirstWord(res.code), "yStart": 34, "width": 100 })), { "identifier": "tributes", - "caption": sprintf(translate("Tributes \n(%(sent)s / %(received)s)"), + "caption": translate("Tributes"), + "headerCaption": sprintf(translate("Tributes \n(%(sent)s / %(received)s)"), { "sent": getColoredTypeTranslation("sent"), "received": getColoredTypeTranslation("received") }), "yStart": 16, "width": 121 }, { "identifier": "treasuresCollected", "caption": translate("Treasures collected"), "yStart": 16, "width": 85 }, { "identifier": "loot", "caption": translate("Loot"), "yStart": 16, "width": 85 }, { "identifier": "livestock", "caption": translate("Livestock bred"), "yStart": 16, "width": 85 } ], "titleHeadings": [ { "caption": sprintf(translate("Resource Statistics (%(gathered)s / %(used)s)"), { "gathered": getColoredTypeTranslation("gathered"), "used": getColoredTypeTranslation("used") }), "yStart": 16, "width": 100 * g_ResourceData.GetCodes().length + 110 }, ], "counters": [ { "width": 110, "fn": calculateTotalResources, "verticalOffset": 12 }, ...g_ResourceData.GetCodes().map(code => ({ "fn": calculateResources, "verticalOffset": 12, "width": 100 })), { "width": 121, "fn": calculateTributeSent, "verticalOffset": 12 }, { "width": 85, "fn": calculateTreasureCollected, "verticalOffset": 12 }, { "width": 85, "fn": calculateLootCollected, "verticalOffset": 12 }, { "width": 85, "fn": calculateLivestockTrained, "verticalOffset": 12 } ], "teamCounterFn": calculateResourcesTeam }, "market": { "caption": translate("Market"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "tradeIncome", "caption": translate("Trade income"), "yStart": 16, "width": 100 }, { "identifier": "barterEfficency", "caption": translate("Barter efficiency"), "yStart": 16, "width": 100 }, ...g_ResourceData.GetResources().map(res => { return { "identifier": res.code, "caption": // Translation: use %(resourceWithinSentence)s if needed sprintf(translate("%(resourceFirstWord)s exchanged"), { "resourceFirstWord": resourceNameFirstWord(res.code), "resourceWithinSentence": resourceNameWithinSentence(res.code) }), "yStart": 16, "width": 100 }; }) ], "titleHeadings": [], "counters": [ { "width": 100, "fn": calculateTradeIncome, "verticalOffset": 12 }, { "width": 100, "fn": calculateBarterEfficiency, "verticalOffset": 12 }, ...g_ResourceData.GetCodes().map(code => ({ "width": 100, "fn": calculateResourceExchanged, "verticalOffset": 12 })) ], "teamCounterFn": calculateMarketTeam }, "misc": { "caption": translate("Miscellaneous"), "headings": [ { "identifier": "playername", "caption": translate("Player name"), "yStart": 26, "width": 200 }, { "identifier": "killDeath", "caption": translate("Kill / Death ratio"), "yStart": 16, "width": 100 }, { "identifier": "mapControlPeak", "caption": translate("Map control (peak)"), "yStart": 16, "width": 100 }, { "identifier": "mapControl", "caption": translate("Map control (finish)"), "yStart": 16, "width": 100 }, { "identifier": "mapExploration", "caption": translate("Map exploration"), "yStart": 16, "width": 100 }, { "identifier": "vegetarianRatio", "caption": translate("Vegetarian ratio"), "yStart": 16, "width": 100 }, { "identifier": "feminization", "caption": translate("Feminization"), "yStart": 16, "width": 100 }, { "identifier": "bribes", - "caption": sprintf(translate("Bribes\n(%(succeeded)s / %(failed)s)"), + "caption": translate("Bribes"), + "headerCaption": sprintf(translate("Bribes\n(%(succeeded)s / %(failed)s)"), { "succeeded": getColoredTypeTranslation("succeeded"), "failed": getColoredTypeTranslation("failed") }), "yStart": 16, "width": 139 } ], "titleHeadings": [], "counters": [ { "width": 100, "fn": calculateKillDeathRatio, "verticalOffset": 12 }, { "width": 100, "fn": calculateMapPeakControl, "verticalOffset": 12 }, { "width": 100, "fn": calculateMapFinalControl, "verticalOffset": 12 }, { "width": 100, "fn": calculateMapExploration, "verticalOffset": 12 }, { "width": 100, "fn": calculateVegetarianRatio, "verticalOffset": 12 }, { "width": 100, "fn": calculateFeminization, "verticalOffset": 12 }, { "width": 139, "fn": calculateBribes, "verticalOffset": 12 } ], "teamCounterFn": calculateMiscellaneousTeam } }); function getColoredTypeTranslation(type) { return g_SummaryTypes[type].color ? coloredText(g_SummaryTypes[type].caption, g_SummaryTypes[type].color) : g_SummaryTypes[type].caption; } function resetGeneralPanel() { for (let h = 0; h < g_MaxHeadingTitle; ++h) { Engine.GetGUIObjectByName("titleHeading[" + h + "]").hidden = true; Engine.GetGUIObjectByName("Heading[" + h + "]").hidden = true; for (let p = 0; p < g_MaxPlayers; ++p) { Engine.GetGUIObjectByName("valueData[" + p + "][" + h + "]").hidden = true; for (let t = 0; t < g_MaxTeams; ++t) { Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + h + "]").hidden = true; Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + h + "]").hidden = true; } } } } function updateGeneralPanelHeadings(headings) { let left = 50; for (let h in headings) { let headerGUIName = "playerNameHeading"; if (h > 0) headerGUIName = "Heading[" + (h - 1) + "]"; let headerGUI = Engine.GetGUIObjectByName(headerGUIName); - headerGUI.caption = headings[h].caption; + headerGUI.caption = headings[h].headerCaption || headings[h].caption; headerGUI.size = left + " " + headings[h].yStart + " " + (left + headings[h].width) + " 100%"; headerGUI.hidden = false; if (headings[h].width < g_LongHeadingWidth) left += headings[h].width; } } function updateGeneralPanelTitles(titleHeadings) { let left = 250; for (let th in titleHeadings) { if (th >= g_MaxHeadingTitle) break; if (titleHeadings[th].xOffset) left += titleHeadings[th].xOffset; let headerGUI = Engine.GetGUIObjectByName("titleHeading[" + th + "]"); headerGUI.caption = titleHeadings[th].caption; headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%"; headerGUI.hidden = false; if (titleHeadings[th].width < g_LongHeadingWidth) left += titleHeadings[th].width; } } function updateGeneralPanelCounter(counters) { let rowPlayerObjectWidth = 0; let left = 0; for (let p = 0; p < g_MaxPlayers; ++p) { left = 240; let counterObject; for (let w in counters) { counterObject = Engine.GetGUIObjectByName("valueData[" + p + "][" + w + "]"); counterObject.size = left + " " + counters[w].verticalOffset + " " + (left + counters[w].width) + " 100%"; counterObject.hidden = false; left += counters[w].width; } if (rowPlayerObjectWidth == 0) rowPlayerObjectWidth = left; let counterTotalObject; for (let t = 0; t < g_MaxTeams; ++t) { left = 240; for (let w in counters) { counterObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]"); counterObject.size = left + " " + counters[w].verticalOffset + " " + (left + counters[w].width) + " 100%"; counterObject.hidden = false; if (g_Teams[t]) { let yStart = 25 + g_Teams[t].length * (g_PlayerBoxYSize + g_PlayerBoxGap) + 3 + counters[w].verticalOffset; counterTotalObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]"); counterTotalObject.size = (left + 20) + " " + yStart + " " + (left + counters[w].width) + " 100%"; counterTotalObject.hidden = false; } left += counters[w].width; } } } return rowPlayerObjectWidth; } function updateGeneralPanelTeams() { let withoutTeam = !g_Teams[-1] ? 0 : g_Teams[-1].length; if (!g_Teams || withoutTeam > 0) Engine.GetGUIObjectByName("noTeamsBox").hidden = false; if (!g_Teams) return; let yStart = g_TeamsBoxYStart + withoutTeam * (g_PlayerBoxYSize + g_PlayerBoxGap) + (withoutTeam ? 30 : 0); for (let i in g_Teams) { if (i == -1) continue; let teamBox = Engine.GetGUIObjectByName("teamBoxt["+i+"]"); teamBox.hidden = false; let teamBoxSize = teamBox.size; teamBoxSize.top = yStart; teamBox.size = teamBoxSize; yStart += 30 + g_Teams[i].length * (g_PlayerBoxYSize + g_PlayerBoxGap) + 32; Engine.GetGUIObjectByName("teamNameHeadingt[" + i + "]").caption = "Team " + (+i + 1); let teamHeading = Engine.GetGUIObjectByName("teamHeadingt[" + i + "]"); let yStartTotal = 30 + g_Teams[i].length * (g_PlayerBoxYSize + g_PlayerBoxGap) + 10; teamHeading.size = "50 " + yStartTotal + " 100% " + (yStartTotal + 20); teamHeading.caption = translate("Team total"); } // If there are no players without team, hide "player name" heading if (!withoutTeam) Engine.GetGUIObjectByName("playerNameHeading").caption = ""; } function initPlayerBoxPositions() { for (let h = 0; h < g_MaxPlayers; ++h) { let playerBox = Engine.GetGUIObjectByName("playerBox[" + h + "]"); let boxSize = playerBox.size; boxSize.top += h * (g_PlayerBoxYSize + g_PlayerBoxGap); boxSize.bottom = boxSize.top + g_PlayerBoxYSize; playerBox.size = boxSize; for (let i = 0; i < g_MaxTeams; ++i) { let playerBoxt = Engine.GetGUIObjectByName("playerBoxt[" + i + "][" + h + "]"); boxSize = playerBoxt.size; boxSize.top += h * (g_PlayerBoxYSize + g_PlayerBoxGap); boxSize.bottom = boxSize.top + g_PlayerBoxYSize; playerBoxt.size = boxSize; } } }