Ticket #2952: 2952.2.diff
File 2952.2.diff, 119.8 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/summary/countersHelper.js
1 //FUNCTIONS FOR CALCULATING SCORES 2 var teamMiscHelperData = []; 3 4 function resetDataHelpers() 5 { 6 teamMiscHelperData = []; 7 } 8 9 function calculateCounter(fn, playerState, position) 10 { 11 if (fn) 12 return fn(playerState, position); 13 14 return "Undefined"; 15 } 16 17 function updateCountersPlayer(playerState, counters, idGUI) 18 { 19 for (var w in counters) 20 { 21 var fn = counters[w].fn; 22 var idGUICounter = idGUI + "[" + w + "]"; 23 Engine.GetGUIObjectByName(idGUICounter).caption = calculateCounter(fn, playerState, w); 24 } 25 } 26 27 function updateTeamCounters(counters, fn) 28 { 29 if (teams && fn) 30 fn(counters); 31 } 32 33 function calculateEconomyScore(playerState, position) 34 { 35 var total = 0; 36 for each (var res in playerState.statistics.resourcesGathered) 37 total += res; 38 39 return Math.round(total / 10); 40 } 41 42 function calculateMilitaryScore(playerState, position) 43 { 44 return Math.round((playerState.statistics.enemyUnitsKilledValue + 45 playerState.statistics.enemyBuildingsDestroyedValue) / 10); 46 } 47 48 function calculateExplorationScore(playerState, position) 49 { 50 return playerState.statistics.percentMapExplored * 10; 51 } 52 53 function calculateScoreTotal(playerState, position) 54 { 55 return calculateEconomyScore(playerState) + calculateMilitaryScore(playerState) 56 + calculateExplorationScore(playerState); 57 } 58 59 function calculateScoreTeam(counters) 60 { 61 for (var t in teams) 62 { 63 if (t == -1) 64 continue; 65 66 for (var w in counters) 67 { 68 var total = 0; 69 for (var p = 0; p < teams[t]; p++) 70 { 71 var idGUI = "valueDataTeam[" + t + "]p[" + p + "][" + w + "]"; 72 total += (+Engine.GetGUIObjectByName(idGUI).caption); 73 } 74 75 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = total; 76 } 77 } 78 } 79 80 function calculateBuildings(playerState, position) 81 { 82 var type = BUILDINGS_TYPES[position]; 83 return TRAINED_COLOR + playerState.statistics.buildingsConstructed[type] + '[/color] / ' + 84 LOST_COLOR + playerState.statistics.buildingsLost[type] + '[/color] / ' + 85 KILLED_COLOR + playerState.statistics.enemyBuildingsDestroyed[type] + '[/color]'; 86 } 87 88 function calculateColorsTeam(counters) 89 { 90 for (var t in teams) 91 { 92 if (t == -1) 93 continue; 94 95 for (var w in counters) 96 { 97 var total = { 98 c : 0, 99 l : 0, 100 d : 0 101 }; 102 for (var p = 0; p < teams[t]; p++) 103 { 104 var idGUI = "valueDataTeam[" + t + "]p[" + p + "][" + w + "]"; 105 var caption = Engine.GetGUIObjectByName(idGUI).caption; 106 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s/g, ""); 107 108 var splitCaption = caption.split("/"); 109 110 total.c += (+splitCaption[0]); 111 total.l += (+splitCaption[1]); 112 total.d += (+splitCaption[2]); 113 } 114 var teamTotal = TRAINED_COLOR + total.c + '[/color] / ' + 115 LOST_COLOR + total.l + '[/color] / ' + KILLED_COLOR + total.d + '[/color]'; 116 117 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 118 } 119 } 120 } 121 122 function calculateUnits(playerState, position) 123 { 124 var type = UNITS_TYPES[position]; 125 return TRAINED_COLOR + playerState.statistics.unitsTrained[type] + '[/color] / ' + 126 LOST_COLOR + playerState.statistics.unitsLost[type] + '[/color] / ' + 127 KILLED_COLOR + playerState.statistics.enemyUnitsKilled[type] + '[/color]'; 128 } 129 130 function calculateResources(playerState, position) 131 { 132 var type = RESOURCES_TYPES[position]; 133 return INCOME_COLOR + playerState.statistics.resourcesGathered[type] + '[/color] / ' + 134 OUTCOME_COLOR + (playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]) + '[/color]'; 135 } 136 137 function calculateTotalResources(playerState, position) 138 { 139 var totalGathered = 0; 140 var totalUsed = 0; 141 142 for each (var type in RESOURCES_TYPES) 143 { 144 totalGathered += playerState.statistics.resourcesGathered[type]; 145 totalUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 146 } 147 148 return INCOME_COLOR + totalGathered + '[/color] / ' + OUTCOME_COLOR + totalUsed + '[/color]'; 149 } 150 151 function calculateTreasureCollected(playerState, position) 152 { 153 return playerState.statistics.treasuresCollected; 154 } 155 156 function calculateTributeSent(playerState, position) 157 { 158 return INCOME_COLOR + playerState.statistics.tributesSent + "[/color] / " + OUTCOME_COLOR + playerState.statistics.tributesReceived + "[/color]"; 159 } 160 161 function calculateResourcesTeam(counters) 162 { 163 for (var t in teams) 164 { 165 if (t == -1) 166 continue; 167 168 for (var w in counters) 169 { 170 var teamTotal = "undefined"; 171 172 var total = { 173 i : 0, 174 o : 0 175 }; 176 for (var p = 0; p < teams[t]; p++) 177 { 178 var idGUI = "valueDataTeam[" + t + "]p[" + p + "][" + w + "]"; 179 var caption = Engine.GetGUIObjectByName(idGUI).caption; 180 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s/g, ""); 181 182 if (w == 5) 183 total.i += (+caption); 184 else 185 { 186 var splitCaption = caption.split("/"); 187 188 total.i += (+splitCaption[0]); 189 total.o += (+splitCaption[1]); 190 } 191 } 192 193 if (w == 5) 194 teamTotal = total.i; 195 else 196 teamTotal = INCOME_COLOR + total.i + "[/color] / " + OUTCOME_COLOR + total.o + "[/color]"; 197 198 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 199 } 200 } 201 } 202 203 function calculateResourceExchanged(playerState, position) 204 { 205 var type = RESOURCES_TYPES[position]; 206 return INCOME_COLOR + '+' + playerState.statistics.resourcesBought[type] + '[/color] ' + 207 OUTCOME_COLOR + '-' + playerState.statistics.resourcesSold[type] + '[/color]'; 208 } 209 210 function calculateBatteryEfficiency(playerState, position) 211 { 212 var totalBought = 0; 213 for each (var boughtAmount in playerState.statistics.resourcesBought) 214 totalBought += boughtAmount; 215 var totalSold = 0; 216 for each (var soldAmount in playerState.statistics.resourcesSold) 217 totalSold += soldAmount; 218 219 return Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 220 } 221 222 function calculateTradeIncome(playerState, position) 223 { 224 return playerState.statistics.tradeIncome; 225 } 226 227 function calculateMarketTeam(counters) 228 { 229 for (var t in teams) 230 { 231 if (t == -1) 232 continue; 233 234 for (var w in counters) 235 { 236 var teamTotal = "undefined"; 237 238 var total = { 239 i : 0, 240 o : 0 241 }; 242 for (var p = 0; p < teams[t]; p++) 243 { 244 var idGUI = "valueDataTeam[" + t + "]p[" + p + "][" + w + "]"; 245 var caption = Engine.GetGUIObjectByName(idGUI).caption; 246 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s|\+|\%/g, ""); 247 248 if (w >= 4) 249 total.i += (+caption); 250 else 251 { 252 var splitCaption = caption.split("-"); 253 total.i += (+splitCaption[0]); 254 total.o += (+splitCaption[1]); 255 } 256 } 257 258 if (w >= 4) 259 teamTotal = total.i +(w == 4 ? "%" : ""); 260 else 261 teamTotal = INCOME_COLOR + '+' + total.i + '[/color] ' + OUTCOME_COLOR + '-' + total.o + '[/color]'; 262 263 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 264 } 265 } 266 } 267 268 function calculateVegetarianRatio(playerState, position) 269 { 270 if (!teamMiscHelperData[playerState.team]) 271 teamMiscHelperData[playerState.team] = []; 272 if (!teamMiscHelperData[playerState.team][position]) 273 teamMiscHelperData[playerState.team][position] = {"food": 0, "vegetarianFood": 0}; 274 275 if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food) 276 { 277 teamMiscHelperData[playerState.team][position].food += playerState.statistics.resourcesGathered.food; 278 teamMiscHelperData[playerState.team][position].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood; 279 return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%"; 280 } 281 else 282 return 0 + "%"; 283 } 284 285 function calculateFeminisation(playerState, position) 286 { 287 if (!teamMiscHelperData[playerState.team]) 288 teamMiscHelperData[playerState.team] = []; 289 if (!teamMiscHelperData[playerState.team][position]) 290 teamMiscHelperData[playerState.team][position] = {"Female": 0, "Worker": 0}; 291 292 if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female) 293 { 294 teamMiscHelperData[playerState.team][position].Female = playerState.statistics.unitsTrained.Female; 295 teamMiscHelperData[playerState.team][position].Worker = playerState.statistics.unitsTrained.Worker; 296 return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%"; 297 } 298 else 299 return 0 + "%"; 300 } 301 302 function calculateKillDeathRatio(playerState, position) 303 { 304 if (!teamMiscHelperData[playerState.team]) 305 teamMiscHelperData[playerState.team] = []; 306 if (!teamMiscHelperData[playerState.team][position]) 307 teamMiscHelperData[playerState.team][position] = {"enemyUnitsKilled": 0, "unitsLost": 0}; 308 309 teamMiscHelperData[playerState.team][position].enemyUnitsKilled = playerState.statistics.enemyUnitsKilled.total; 310 teamMiscHelperData[playerState.team][position].unitsLost = playerState.statistics.unitsLost.total; 311 312 if (!playerState.statistics.enemyUnitsKilled.total) 313 return "0.00"; 314 if (!playerState.statistics.unitsLost.total) // and enemyUnitsKilled.total > 0 315 return "\u221E"; // infinity symbol 316 317 return Math.round((playerState.statistics.enemyUnitsKilled.total / playerState.statistics.unitsLost.total)*100)/100; 318 } 319 320 function calculateMapExploration(playerState, position) 321 { 322 if (!teamMiscHelperData[playerState.team]) 323 teamMiscHelperData[playerState.team] = []; 324 325 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapExplored; 326 return playerState.statistics.percentMapExplored + "%"; 327 } 328 329 function calculateMiscellaneous(counters) 330 { 331 for (var t in teams) 332 { 333 if (t == -1) 334 continue; 335 336 for (var w in counters) 337 { 338 var teamTotal = "undefined"; 339 340 if (w == 0) 341 teamTotal = (teamMiscHelperData[t][w].food == 0 ? "0" : Math.floor((teamMiscHelperData[t][w].vegetarianFood / teamMiscHelperData[t][w].food) * 100)) + "%"; 342 else if (w == 1) 343 teamTotal = (teamMiscHelperData[t][w].Worker == 0 ? "0" : Math.floor((teamMiscHelperData[t][w].Female / teamMiscHelperData[t][w].Worker) * 100)) + "%"; 344 else if (w == 2) 345 { 346 if (!teamMiscHelperData[t][w].enemyUnitsKilled) 347 teamTotal = "0.00"; 348 else if (!teamMiscHelperData[t][w].unitsLost) // and enemyUnitsKilled.total > 0 349 teamTotal = "\u221E"; // infinity symbol 350 else 351 teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100; 352 } 353 else if (w == 3) 354 teamTotal = teamMiscHelperData[t][w] + "%"; 355 356 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 357 } 358 } 359 } 360 No newline at end of file -
binaries/data/mods/public/gui/summary/layoutsHelper.js
1 var panelsData = [ 2 { // Scores panel 3 "headings": [ // headings on score panel 4 { "caption": "Player name","yStart": 26, "width": 200 }, 5 { "caption": "Economy score","yStart": 16, "width": 100 }, 6 { "caption": "Military score","yStart": 16, "width": 100 }, 7 { "caption": "Exploration score","yStart": 16, "width": 100 }, 8 { "caption": "Total score","yStart": 16, "width": 100 } 9 ], 10 "titleHeadings": [], 11 "counters": [ // counters on score panel 12 { "width": 100, "fn": calculateEconomyScore }, 13 { "width": 100, "fn": calculateMilitaryScore }, 14 { "width": 100, "fn": calculateExplorationScore }, 15 { "width": 100, "fn": calculateScoreTotal} 16 ], 17 "teamCounterFn": calculateScoreTeam 18 }, 19 { // buildings panel 20 "headings": [ // headings on buildings panel 21 { "caption": "Player name", "yStart": 26, "width": 200 }, 22 { "caption": "Total", "yStart": 34, "width": 105 }, 23 { "caption": "Houses", "yStart": 34, "width": 85 }, 24 { "caption": "Economic", "yStart": 34, "width": 85 }, 25 { "caption": "Outposts", "yStart": 34, "width": 85 }, 26 { "caption": "Military", "yStart": 34, "width": 85 }, 27 { "caption": "Fortresses", "yStart": 34, "width": 85 }, 28 { "caption": "Civ centers", "yStart": 34, "width": 85 }, 29 { "caption": "Wonders", "yStart": 34, "width": 85 } 30 ], 31 "titleHeadings": [ 32 { "caption": "Buildings Statistics (Constructed / Lost / Destroyed)", "yStart": 16, "width": (85 * 7 + 105) }, // width = 735 33 ], 34 "counters": [ // counters on buildings panel 35 {"width": 105, "fn": calculateBuildings}, 36 {"width": 85, "fn": calculateBuildings}, 37 {"width": 85, "fn": calculateBuildings}, 38 {"width": 85, "fn": calculateBuildings}, 39 {"width": 85, "fn": calculateBuildings}, 40 {"width": 85, "fn": calculateBuildings}, 41 {"width": 85, "fn": calculateBuildings}, 42 {"width": 85, "fn": calculateBuildings} 43 ], 44 "teamCounterFn": calculateColorsTeam 45 }, 46 { // units panel 47 "headings": [ // headings on units panel 48 { "caption": "Player name", "yStart": 26, "width": 200 }, 49 { "caption": "Total", "yStart": 34, "width": 120 }, 50 { "caption": "Infantry", "yStart": 34, "width": 100 }, 51 { "caption": "Worker", "yStart": 34, "width": 100 }, 52 { "caption": "Cavalry", "yStart": 34, "width": 100 }, 53 { "caption": "Champion", "yStart": 34, "width": 100 }, 54 { "caption": "Heroes", "yStart": 34, "width": 100 }, 55 { "caption": "Navy", "yStart": 34, "width": 100 } 56 ], 57 "titleHeadings": [ 58 { "caption": "Units Statistics (Trained / Lost / Killed)", "yStart": 16, "width": (100 * 6 + 120) }, // width = 720 59 ], 60 "counters": [ // counters on units panel 61 {"width": 120, "fn": calculateUnits}, 62 {"width": 100, "fn": calculateUnits}, 63 {"width": 100, "fn": calculateUnits}, 64 {"width": 100, "fn": calculateUnits}, 65 {"width": 100, "fn": calculateUnits}, 66 {"width": 100, "fn": calculateUnits}, 67 {"width": 100, "fn": calculateUnits} 68 ], 69 "teamCounterFn": calculateColorsTeam 70 }, 71 { // resources panel 72 "headings": [ // headings on resources panel 73 { "caption": "Player name", "yStart": 26, "width": 200 }, 74 { "caption": "Food", "yStart": 34, "width": 100 }, 75 { "caption": "Wood", "yStart": 34, "width": 100 }, 76 { "caption": "Stone", "yStart": 34, "width": 100 }, 77 { "caption": "Metal", "yStart": 34, "width": 100 }, 78 { "caption": "Total", "yStart": 34, "width": 110 }, 79 { "caption": "Treasures collected", "yStart": 16, "width": 100 }, 80 { "caption": "Tributes (Sent / Received)", "yStart": 16, "width": 121 } 81 ], 82 "titleHeadings": [ 83 { "caption": "Resource Statistics (Gathered / Used)", "yStart": 16, "width": (100 * 4 + 110) },//width = 510 84 ], 85 "counters": [ // counters on resources panel 86 {"width": 100, "fn": calculateResources}, 87 {"width": 100, "fn": calculateResources}, 88 {"width": 100, "fn": calculateResources}, 89 {"width": 100, "fn": calculateResources}, 90 {"width": 110, "fn": calculateTotalResources}, 91 {"width": 100, "fn": calculateTreasureCollected}, 92 {"width": 121, "fn": calculateTributeSent} 93 ], 94 "teamCounterFn": calculateResourcesTeam 95 }, 96 { // market panel 97 "headings": [ // headings on market panel 98 { "caption": "Player name", "yStart": 26, "width": 200 }, 99 { "caption": "Food exchanged", "yStart": 16, "width": 100 }, 100 { "caption": "Wood exchanged", "yStart": 16, "width": 100 }, 101 { "caption": "Stone exchanged", "yStart": 16, "width": 100 }, 102 { "caption": "Metal exchanged", "yStart": 16, "width": 100 }, 103 { "caption": "Barter efficiency", "yStart": 16, "width": 100 }, 104 { "caption": "Trade income", "yStart": 16, "width": 100 } 105 ], 106 "titleHeadings": [], 107 "counters": [ // counters on market panel 108 {"width": 100, "fn": calculateResourceExchanged}, 109 {"width": 100, "fn": calculateResourceExchanged}, 110 {"width": 100, "fn": calculateResourceExchanged}, 111 {"width": 100, "fn": calculateResourceExchanged}, 112 {"width": 100, "fn": calculateBatteryEfficiency}, 113 {"width": 100, "fn": calculateTradeIncome} 114 ], 115 "teamCounterFn": calculateMarketTeam 116 }, 117 { // miscelanous panel 118 "headings": [ // headings on miscelanous panel 119 { "caption": "Player name", "yStart": 26, "width": 200 }, 120 { "caption": "Vegetarian\nratio", "yStart": 16, "width": 100 }, 121 { "caption": "Feminisation", "yStart": 26, "width": 100 }, 122 { "caption": "Kill / Death\nratio", "yStart": 16, "width": 100 }, 123 { "caption": "Map\nexploration", "yStart": 16, "width": 100 } 124 ], 125 "titleHeadings": [], 126 "counters": [ // counters on miscelanous panel 127 {"width": 100, "fn": calculateVegetarianRatio}, 128 {"width": 100, "fn": calculateFeminisation}, 129 {"width": 100, "fn": calculateKillDeathRatio}, 130 {"width": 100, "fn": calculateMapExploration} 131 ], 132 "teamCounterFn": calculateMiscellaneous 133 } 134 ]; 135 136 function resetGeneralPanel() 137 { 138 Engine.GetGUIObjectByName("titleHeading").hidden = true; 139 for (var h = 0; h < MAX_HEADINGTITLE; h ++) 140 { 141 var headerGUIName = "Heading[" + h + "]"; 142 Engine.GetGUIObjectByName(headerGUIName).hidden = true; 143 for (var p = 0; p < MAX_SLOTS; p ++) 144 { 145 Engine.GetGUIObjectByName("valueData[" + p + "][" + h + "]").hidden = true; 146 for (var t = 0; t < MAX_TEAMS; t++) 147 { 148 Engine.GetGUIObjectByName("valueDataTeam[" + t + "]p[" + p + "][" + h + "]").hidden = true; 149 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + h + "]").hidden = true; 150 } 151 } 152 } 153 } 154 155 function updateGeneralPanelHeadings(headings) 156 { 157 var left = 50; 158 for (var h in headings) 159 { 160 var headerGUIName = "playerNameHeading"; 161 if (h > 0) 162 headerGUIName = "Heading[" + (h - 1) + "]"; 163 164 var headerGUI = Engine.GetGUIObjectByName(headerGUIName); 165 headerGUI.caption = translate(headings[h].caption); 166 headerGUI.size = left + " " + headings[h].yStart + " " + (left + headings[h].width) + " 100%"; 167 headerGUI.hidden = false; 168 169 if (headings[h].width < LONG_HEADING_WIDTH) 170 left += headings[h].width; 171 } 172 } 173 174 function updateGeneralPanelTitles(titleHeadings) 175 { 176 var left = 250; 177 for (var th in titleHeadings) 178 { 179 var headerGUI = Engine.GetGUIObjectByName("titleHeading"); 180 headerGUI.caption = translate(titleHeadings[th].caption); 181 headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%"; 182 headerGUI.hidden = false; 183 break; 184 } 185 } 186 187 function updateGeneralPanelCounter(counters) 188 { 189 var rowPlayerObjectWidth = 0; 190 var left = 0; 191 for (var p = 0; p < MAX_SLOTS; p ++) 192 { 193 left = 240; 194 var counterObject; 195 for (var w in counters) 196 { 197 counterObject = Engine.GetGUIObjectByName("valueData[" + p + "][" + w + "]"); 198 counterObject.size = left + " 6 " + (left + counters[w].width) + " 100%"; 199 counterObject.hidden = false; 200 left += counters[w].width; 201 } 202 if (rowPlayerObjectWidth == 0) 203 rowPlayerObjectWidth = left; 204 205 var counterTotalObject; 206 for (var t = 0; t < MAX_TEAMS; t++) 207 { 208 left = 240; 209 for (var w in counters) 210 { 211 counterObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "]p[" + p + "][" + w + "]"); 212 counterObject.size = left + " 6 " + (left + counters[w].width) + " 100%"; 213 counterObject.hidden = false; 214 215 if (teams[t]) 216 { 217 var yStart = 30 + teams[t] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 218 counterTotalObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]"); 219 counterTotalObject.size = (left + 20) + " " + yStart + " " + (left + counters[w].width) + " 100%"; 220 counterTotalObject.hidden = false; 221 } 222 223 left += counters[w].width; 224 } 225 } 226 } 227 return rowPlayerObjectWidth; 228 } 229 230 function updateGeneralPanelTeams() 231 { 232 if (!teams || withoutTeam > 0) 233 Engine.GetGUIObjectByName("noTeamsBox").hidden = false; 234 235 if (teams) 236 { 237 var yStart = TEAMS_BOX_Y_START + withoutTeam * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 238 for (var i = 0; i < teams.length; ++i) 239 { 240 var teamBox = Engine.GetGUIObjectByName("teamBoxt["+i+"]"); 241 teamBox.hidden = false; 242 var teamBoxSize = teamBox.size; 243 teamBoxSize.top = yStart; 244 teamBox.size = teamBoxSize; 245 246 yStart += 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 32; 247 248 Engine.GetGUIObjectByName("teamNameHeadingt["+i+"]").caption = "Team "+(i+1); 249 250 var teamHeading = Engine.GetGUIObjectByName("teamHeadingt["+i+"]"); 251 var yStartTotal = 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 252 teamHeading.size = "50 "+yStartTotal+" 100% "+(yStartTotal+20); 253 teamHeading.caption = translate("Team total"); 254 } 255 // If there are no players without team, hide "player name" heading 256 if (!withoutTeam) 257 Engine.GetGUIObjectByName("playerNameHeading").caption = ""; 258 259 } 260 } 261 262 function updateObjectPlayerPosition() 263 { 264 for (var h = 0; h < MAX_SLOTS; h ++) { 265 var playerBox = Engine.GetGUIObjectByName("playerBox[" + h + "]"); 266 var boxSize = playerBox.size; 267 boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 268 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 269 playerBox.size = boxSize; 270 271 for (var i = 0; i < MAX_TEAMS; i++) { 272 var playerBoxt = Engine.GetGUIObjectByName("playerBoxt[" + i + "]p[" + h + "]"); 273 boxSize = playerBoxt.size; 274 boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 275 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 276 playerBoxt.size = boxSize; 277 }; 278 }; 279 } 280 No newline at end of file -
binaries/data/mods/public/gui/summary/summary.js
1 1 // Max player slots for any map (should read from config) 2 2 const MAX_SLOTS = 8; 3 const MAX_TEAMS = 4; 4 const MAX_HEADINGTITLE = 8; 3 5 6 // const for filtering long collective headings 7 const LONG_HEADING_WIDTH = 250; 8 // vertical size of player box 9 const PLAYER_BOX_Y_SIZE = 30; 10 // gap between players boxes 11 const PLAYER_BOX_GAP = 2; 12 // alpha for player box 13 const PLAYER_BOX_ALPHA = " 32"; 14 // alpha for player colour box 15 const PLAYER_COLOUR_BOX_ALPHA = " 255"; 16 // yStart value for spaceing teams boxes (and noTeamsBox) 17 const TEAMS_BOX_Y_START = 65; 18 // colours used for units and buildings 19 const TRAINED_COLOR = '[color="201 255 200"]'; 20 const LOST_COLOR = '[color="255 213 213"]'; 21 const KILLED_COLOR = '[color="196 198 255"]'; 22 23 const BUILDINGS_TYPES = [ "total", "House", "Economic", "Outpost", "Military", "Fortress", "CivCentre", "Wonder" ]; 24 const UNITS_TYPES = [ "total", "Infantry", "Worker", "Cavalry", "Champion", "Hero", "Ship" ]; 25 const RESOURCES_TYPES = [ "food", "wood", "stone", "metal" ]; 26 27 // colours used for gathered and traded resources 28 const INCOME_COLOR = '[color="201 255 200"]'; 29 const OUTCOME_COLOR = '[color="255 213 213"]'; 30 31 // Load data 32 var civData = loadCivData(); 33 var teams = [ ]; 34 // TODO set maxPlayers as playerCounters.length 35 var maxPlayers = 0; 36 // Count players without team (or all if teams are not displayed) 37 var withoutTeam = 0; 38 var gameData; 39 4 40 /** 5 41 * Select active panel 6 42 * @param panelNumber Number of panel, which should get active state (integer) … … 7 43 */ 8 44 function selectPanel(panelNumber) 9 45 { 10 var panelNames = [ 'scorePanel', 'buildingsPanel', 'unitsPanel', 'resourcesPanel', 'marketPanel', 'miscPanel' 11 46 var panelNames = [ 'scorePanel', 'buildingsPanel', 'unitsPanel', 'resourcesPanel', 'marketPanel', 'miscPanel']; 47 12 48 function adjustTabDividers(tabSize) 13 49 { 14 50 var leftSpacer = Engine.GetGUIObjectByName("tabDividerLeft"); … … 16 52 leftSpacer.size = "20 " + leftSpacer.size.top + " " + (tabSize.left + 2) + " " + leftSpacer.size.bottom; 17 53 rightSpacer.size = (tabSize.right - 2) + " " + rightSpacer.size.top + " 100%-20 " + rightSpacer.size.bottom; 18 54 } 19 55 20 56 for (var i = 0; i < panelNames.length; i++) 21 57 { 22 if (i != panelNumber) 23 { 24 Engine.GetGUIObjectByName(panelNames[i]).hidden = true; 25 Engine.GetGUIObjectByName(panelNames[i] + 'Button').sprite = "BackgroundTab"; 26 } 27 else 28 { 29 Engine.GetGUIObjectByName(panelNames[i]).hidden = false; 30 Engine.GetGUIObjectByName(panelNames[i] + 'Button').sprite = "ForegroundTab"; 31 adjustTabDividers(Engine.GetGUIObjectByName(panelNames[i] + 'Button').size); 32 } 58 Engine.GetGUIObjectByName(panelNames[i] + 'Button').sprite = "BackgroundTab"; 33 59 } 60 61 Engine.GetGUIObjectByName(panelNames[panelNumber] + 'Button').sprite = "ForegroundTab"; 62 adjustTabDividers(Engine.GetGUIObjectByName(panelNames[panelNumber] + 'Button').size); 63 64 updatePanelData(panelsData[panelNumber]); 34 65 } 35 66 36 function init(data)67 function updatePanelData(panelInfo) 37 68 { 38 // LOCAL CONSTS, VARIABLES & FUNCTIONS 39 // const for filtering long collective headings 40 const LONG_HEADING_WIDTH = 250; 41 // number of panels 42 const PANELS_COUNT = 6; 43 // alpha for player box 44 const PLAYER_BOX_ALPHA = " 32"; 45 // alpha for player colour box 46 const PLAYER_COLOUR_BOX_ALPHA = " 255"; 47 // yStart value for spaceing teams boxes (and noTeamsBox) 48 const TEAMS_BOX_Y_START = 65; 49 // vertical size of player box 50 const PLAYER_BOX_Y_SIZE = 30; 51 // gap between players boxes 52 const PLAYER_BOX_GAP = 2; 53 54 // colours used for units and buildings 55 const TRAINED_COLOR = '[color="201 255 200"]'; 56 const LOST_COLOR = '[color="255 213 213"]'; 57 const KILLED_COLOR = '[color="196 198 255"]'; 69 resetGeneralPanel(); 70 resetDataHelpers(); 71 updateGeneralPanelHeadings(panelInfo.headings); 72 updateGeneralPanelTitles(panelInfo.titleHeadings); 73 var rowPlayerObjectWidth = updateGeneralPanelCounter(panelInfo.counters); 74 updateGeneralPanelTeams(); 58 75 59 // colours used for gathered and traded resources 60 const INCOME_COLOR = '[color="201 255 200"]'; 61 const OUTCOME_COLOR = '[color="255 213 213"]'; 62 63 const BUILDINGS_TYPES = [ "total", "House", "Economic", "Outpost", "Military", "Fortress", "CivCentre", "Wonder" ]; 64 const UNITS_TYPES = [ "total", "Infantry", "Worker", "Cavalry", "Champion", "Hero", "Ship" ]; 65 const RESOURCES_TYPES = [ "food", "wood", "stone", "metal" ]; 66 67 var panels = { 68 "score": { // score panel 69 "headings": { // headings on score panel 70 "playerName0Heading": { "yStart": 26, "width": 200 }, 71 "economyScoreHeading": { "yStart": 16, "width": 100 }, 72 "militaryScoreHeading": { "yStart": 16, "width": 100 }, 73 "explorationScoreHeading": { "yStart": 16, "width": 100 }, 74 "totalScoreHeading": { "yStart": 16, "width": 100 } 75 }, 76 "counters": { // counters on score panel 77 "economyScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 78 "militaryScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 79 "explorationScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 80 "totalScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 81 } 82 }, 83 "buildings": { // buildings panel 84 "headings": { // headings on buildings panel 85 "playerName1Heading": {"yStart": 26, "width": 200 }, 86 "buildingsHeading": {"yStart": 16, "width": (85 * 7 + 105) }, // width = 735 87 "totalBuildingsHeading": {"yStart": 34, "width": 105 }, 88 "houseBuildingsHeading": {"yStart": 34, "width": 85 }, 89 "economicBuildingsHeading": {"yStart": 34, "width": 85 }, 90 "outpostBuildingsHeading": {"yStart": 34, "width": 85 }, 91 "militaryBuildingsHeading": {"yStart": 34, "width": 85 }, 92 "fortressBuildingsHeading": {"yStart": 34, "width": 85 }, 93 "civCentreBuildingsHeading": {"yStart": 34, "width": 85 }, 94 "wonderBuildingsHeading": {"yStart": 34, "width": 85 } 95 }, 96 "counters": { // counters on buildings panel 97 "totalBuildings": {"width": 105, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 98 "houseBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 99 "economicBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 100 "outpostBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 101 "militaryBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 102 "fortressBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 103 "civCentreBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 104 "wonderBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 105 } 106 }, 107 "units": { // units panel 108 "headings": { // headings on units panel 109 "playerName2Heading": {"yStart": 26, "width": 200 }, 110 "unitsHeading": {"yStart": 16, "width": (100 * 6 + 120) }, // width = 720 111 "totalUnitsHeading": {"yStart": 34, "width": 120 }, 112 "infantryUnitsHeading": {"yStart": 34, "width": 100 }, 113 "workerUnitsHeading": {"yStart": 34, "width": 100 }, 114 "cavalryUnitsHeading": {"yStart": 34, "width": 100 }, 115 "championUnitsHeading": {"yStart": 34, "width": 100 }, 116 "heroesUnitsHeading": {"yStart": 34, "width": 100 }, 117 "navyUnitsHeading": {"yStart": 34, "width": 100 } 118 }, 119 "counters": { // counters on units panel 120 "totalUnits": {"width": 120, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 121 "infantryUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 122 "workerUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 123 "cavalryUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 124 "championUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 125 "heroesUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 126 "navyUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 127 } 128 }, 129 "resources": { // resources panel 130 "headings": { // headings on resources panel 131 "playerName3Heading": {"yStart": 26, "width": 200 }, 132 "resourceHeading": {"yStart": 16, "width": (100 * 4 + 110) },//width = 510 133 "foodGatheredHeading": {"yStart": 34, "width": 100 }, 134 "woodGatheredHeading": {"yStart": 34, "width": 100 }, 135 "stoneGatheredHeading": {"yStart": 34, "width": 100 }, 136 "metalGatheredHeading": {"yStart": 34, "width": 100 }, 137 "totalGatheredHeading": {"yStart": 34, "width": 110 }, 138 "treasuresCollectedHeading": {"yStart": 16, "width": 100 }, 139 "resourcesTributedHeading": {"yStart": 16, "width": 121 } 140 }, 141 "counters": { // counters on resources panel 142 "foodGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 143 "woodGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 144 "stoneGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 145 "metalGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 146 "totalGathered": {"width": 110, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 147 "treasuresCollected": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 148 "resourcesTributed": {"width": 121, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 149 } 150 }, 151 "market": { // market panel 152 "headings": { // headings on market panel 153 "playerName4Heading": {"yStart": 26, "width": 200 }, 154 "exchangedFoodHeading": {"yStart": 16, "width": 100 }, 155 "exchangedWoodHeading": {"yStart": 16, "width": 100 }, 156 "exchangedStoneHeading": {"yStart": 16, "width": 100 }, 157 "exchangedMetalHeading": {"yStart": 16, "width": 100 }, 158 "barterEfficiencyHeading": {"yStart": 16, "width": 100 }, 159 "tradeIncomeHeading": {"yStart": 16, "width": 100 } 160 }, 161 "counters": { // counters on market panel 162 "exchangedFood": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 163 "exchangedWood": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 164 "exchangedStone": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 165 "exchangedMetal": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 166 "barterEfficiency": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 167 "tradeIncome": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 168 } 169 }, 170 "miscelanous": { // miscelanous panel 171 "headings": { // headings on miscelanous panel 172 "playerName5Heading": {"yStart": 26, "width": 200 }, 173 "vegetarianRatioHeading": {"yStart": 16, "width": 100 }, 174 "feminisationHeading": {"yStart": 26, "width": 100 }, 175 "killDeathRatioHeading": {"yStart": 16, "width": 100 }, 176 "mapExplorationHeading": {"yStart": 16, "width": 100 } 177 }, 178 "counters": { // counters on miscelanous panel 179 "vegetarianRatio": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 180 "feminisation": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 181 "killDeathRatio": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 182 "mapExploration": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 183 } 184 } 185 }; 186 187 function alignHeaders(headings) 188 { 189 left = 50; 190 for (var h in headings) 191 { 192 Engine.GetGUIObjectByName(h).size = left + " " + headings[h].yStart + " " + (left + headings[h].width) + " 100%"; 193 if (headings[h].width < LONG_HEADING_WIDTH) 194 left += headings[h].width; 195 } 196 } 197 198 function alignCounters(counters, player) 76 var playerBoxesCounts = [ ]; 77 for (var i = 0; i < maxPlayers; ++i) 199 78 { 200 left = 240; 201 for each (var counter in counters) 202 { 203 counter.objects[player].size = left + " 2 " + (left + counter.width) + " 100%"; 204 left += counter.width; 205 } 206 207 return left; 208 } 209 210 // caption counters functions 211 function captionEconomyScore() 212 { 213 var total = 0; 214 for each (var res in playerState.statistics.resourcesGathered) 215 total += res; 216 217 return Math.round(total / 10); 218 } 219 220 function captionBuildings(object, type) 221 { 222 object.caption = TRAINED_COLOR + playerState.statistics.buildingsConstructed[type] + '[/color] / ' + 223 LOST_COLOR + playerState.statistics.buildingsLost[type] + '[/color] / ' + 224 KILLED_COLOR + playerState.statistics.enemyBuildingsDestroyed[type] + '[/color]'; 225 } 226 227 function captionUnits(object, type) 228 { 229 object.caption = TRAINED_COLOR + playerState.statistics.unitsTrained[type] + '[/color] / ' + 230 LOST_COLOR + playerState.statistics.unitsLost[type] + '[/color] / ' + 231 KILLED_COLOR + playerState.statistics.enemyUnitsKilled[type] + '[/color]'; 232 } 233 234 function captionResourcesGathered(object, type) 235 { 236 object.caption = INCOME_COLOR + playerState.statistics.resourcesGathered[type] + '[/color] / ' + 237 OUTCOME_COLOR + (playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]) + '[/color]'; 238 } 239 240 function captionTotalResourcesGathered() 241 { 242 var totalGathered = 0; 243 var totalUsed = 0; 244 245 for each (var type in RESOURCES_TYPES) 246 { 247 totalGathered += playerState.statistics.resourcesGathered[type]; 248 totalUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 249 } 250 251 return INCOME_COLOR + totalGathered + '[/color] / ' + OUTCOME_COLOR + totalUsed + '[/color]'; 252 } 253 254 function captionResourcesTributed() 255 { 256 return INCOME_COLOR + playerState.statistics.tributesSent + "[/color] / " + OUTCOME_COLOR + playerState.statistics.tributesReceived + "[/color]"; 257 } 258 259 function captionResourcesExchanged(object, type) 260 { 261 object.caption = INCOME_COLOR + '+' + playerState.statistics.resourcesBought[type] + '[/color] ' + 262 OUTCOME_COLOR + '-' + playerState.statistics.resourcesSold[type] + '[/color]'; 263 } 264 265 function captionBarterEfficiency() 266 { 267 var totalBought = 0; 268 for each (var boughtAmount in playerState.statistics.resourcesBought) 269 totalBought += boughtAmount; 270 var totalSold = 0; 271 for each (var soldAmount in playerState.statistics.resourcesSold) 272 totalSold += soldAmount; 273 274 return Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 275 } 276 277 function captionVegetarianRatio() 278 { 279 if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food) 280 return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%"; 79 var playerState = gameData.playerStates[i+1]; 80 81 if (!playerBoxesCounts[playerState.team+1]) 82 playerBoxesCounts[playerState.team+1] = 1; 281 83 else 282 return 0 + "%"; 283 } 284 285 function captionFeminisation() 286 { 287 if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female) 288 return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%"; 289 else 290 return 0 + "%"; 291 } 292 293 function captionKillDeathRatio() 294 { 295 if (!playerState.statistics.enemyUnitsKilled.total) 296 return "0.00"; 297 if (!playerState.statistics.unitsLost.total) // and enemyUnitsKilled.total > 0 298 return "\u221E"; // infinity symbol 299 return Math.round((playerState.statistics.enemyUnitsKilled.total / playerState.statistics.unitsLost.total)*100)/100; 300 } 301 302 function sumTeamBuildings(counter, type) 303 { 304 if (counter.teamsScores[playerState.team] == 0) 305 { 306 counter.teamsScores[playerState.team] = { }; 307 counter.teamsScores[playerState.team].buildingsConstructed = 0; 308 counter.teamsScores[playerState.team].buildingsLost = 0; 309 counter.teamsScores[playerState.team].enemyBuildingsDestroyed = 0; 310 } 84 playerBoxesCounts[playerState.team+1] += 1; 311 85 312 counter.teamsScores[playerState.team].buildingsConstructed += playerState.statistics.buildingsConstructed[type]; 313 counter.teamsScores[playerState.team].buildingsLost += playerState.statistics.buildingsLost[type]; 314 counter.teamsScores[playerState.team].enemyBuildingsDestroyed += playerState.statistics.enemyBuildingsDestroyed[type]; 315 316 counter.teamsScoresCaption[playerState.team] = TRAINED_COLOR + counter.teamsScores[playerState.team].buildingsConstructed + '[/color] / ' + 317 LOST_COLOR + counter.teamsScores[playerState.team].buildingsLost + '[/color] / ' + 318 KILLED_COLOR + counter.teamsScores[playerState.team].enemyBuildingsDestroyed + '[/color]'; 319 } 320 321 function sumTeamUnits(counter, type) 322 { 323 if (counter.teamsScores[playerState.team] == 0) 86 var positionObject = playerBoxesCounts[playerState.team+1] - 1; 87 var rowPlayer = "playerBox[" + positionObject + "]"; 88 var playerNameColumn = "playerName[" + positionObject + "]"; 89 var playerColourBoxColumn = "playerColourBox[" + positionObject + "]"; 90 var playerCivicBoxColumn = "civIcon[" + positionObject + "]"; 91 var playerCounterValue = "valueData[" + positionObject + "]"; 92 if (playerState.team != -1) 324 93 { 325 counter.teamsScores[playerState.team] = { }; 326 counter.teamsScores[playerState.team].unitsTrained = 0; 327 counter.teamsScores[playerState.team].unitsLost = 0; 328 counter.teamsScores[playerState.team].enemyUnitsKilled = 0; 94 rowPlayer = "playerBoxt[" + playerState.team + "]p[" + positionObject + "]"; 95 playerNameColumn = "playerNamet[" + playerState.team + "]p[" + positionObject + "]"; 96 playerColourBoxColumn = "playerColourBoxt[" + playerState.team + "]p[" + positionObject + "]"; 97 playerCivicBoxColumn = "civIcont[" + playerState.team + "]p[" + positionObject + "]"; 98 playerCounterValue = "valueDataTeam[" + playerState.team + "]p[" + positionObject + "]"; 329 99 } 330 100 331 counter.teamsScores[playerState.team].unitsTrained += playerState.statistics.unitsTrained[type]; 332 counter.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost[type]; 333 counter.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled[type]; 334 335 counter.teamsScoresCaption[playerState.team] = TRAINED_COLOR + counter.teamsScores[playerState.team].unitsTrained + '[/color] / ' + 336 LOST_COLOR + counter.teamsScores[playerState.team].unitsLost + '[/color] / ' + 337 KILLED_COLOR + counter.teamsScores[playerState.team].enemyUnitsKilled + '[/color]'; 101 var colourString = "colour: " 102 + Math.floor(playerState.colour.r * 255) + " " 103 + Math.floor(playerState.colour.g * 255) + " " 104 + Math.floor(playerState.colour.b * 255); 105 106 var rowPlayerObject = Engine.GetGUIObjectByName(rowPlayer); 107 rowPlayerObject.hidden = false; 108 rowPlayerObject.sprite = colourString + PLAYER_BOX_ALPHA; 109 var boxSize = rowPlayerObject.size; 110 boxSize.right = rowPlayerObjectWidth; 111 rowPlayerObject.size = boxSize; 112 113 var playerColourBox = Engine.GetGUIObjectByName(playerColourBoxColumn); 114 playerColourBox.sprite = colourString + PLAYER_COLOUR_BOX_ALPHA; 115 116 Engine.GetGUIObjectByName(playerNameColumn).caption = gameData.players[i+1].name; 117 118 var civIcon = Engine.GetGUIObjectByName(playerCivicBoxColumn); 119 civIcon.sprite = "stretched:"+civData[playerState.civ].Emblem; 120 civIcon.tooltip = civData[playerState.civ].Name; 121 122 //update counters 123 updateCountersPlayer(playerState, panelInfo.counters, playerCounterValue); 338 124 } 339 340 function sumResourcesGathered(counter, type) 341 { 342 if (counter.teamsScores[playerState.team] == 0) 343 { 344 counter.teamsScores[playerState.team] = { }; 345 counter.teamsScores[playerState.team].resourcesGathered = 0; 346 counter.teamsScores[playerState.team].resourcesUsed = 0; 347 } 348 349 counter.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 350 counter.teamsScores[playerState.team].resourcesUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 351 352 counter.teamsScoresCaption[playerState.team] = INCOME_COLOR + counter.teamsScores[playerState.team].resourcesGathered + '[/color] / ' + 353 OUTCOME_COLOR + counter.teamsScores[playerState.team].resourcesUsed + '[/color]'; 354 } 355 356 function sumTotalResourcesGathered() 357 { 358 if (panels.resources.counters.totalGathered.teamsScores[playerState.team] == 0) 359 { 360 panels.resources.counters.totalGathered.teamsScores[playerState.team] = { }; 361 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered = 0; 362 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed = 0; 363 } 364 365 for each (var type in RESOURCES_TYPES) 366 { 367 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 368 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed += 369 playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 370 } 371 372 panels.resources.counters.totalGathered.teamsScoresCaption[playerState.team] = 373 INCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered + '[/color] / ' + 374 OUTCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed + '[/color]'; 375 } 376 377 function sumResourcesTributed() 378 { 379 if (panels.resources.counters.resourcesTributed.teamsScores[playerState.team] == 0) 380 { 381 panels.resources.counters.resourcesTributed.teamsScores[playerState.team] = { }; 382 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent = 0; 383 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived = 0; 384 } 385 386 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent += playerState.statistics.tributesSent; 387 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived += playerState.statistics.tributesReceived; 388 389 panels.resources.counters.resourcesTributed.teamsScoresCaption[playerState.team] = 390 INCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent + "[/color] / " + 391 OUTCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived + "[/color]"; 392 } 393 394 function sumResourcesExchanged(counter, type) 395 { 396 if (counter.teamsScores[playerState.team] == 0) 397 { 398 counter.teamsScores[playerState.team] = { }; 399 counter.teamsScores[playerState.team].resourcesBought = 0; 400 counter.teamsScores[playerState.team].resourcesSold = 0; 401 } 402 403 counter.teamsScores[playerState.team].resourcesBought += playerState.statistics.resourcesBought[type]; 404 counter.teamsScores[playerState.team].resourcesSold += playerState.statistics.resourcesSold[type]; 405 406 counter.teamsScoresCaption[playerState.team] = 407 INCOME_COLOR + '+' + counter.teamsScores[playerState.team].resourcesBought + '[/color] ' + 408 OUTCOME_COLOR + '-' + counter.teamsScores[playerState.team].resourcesSold + '[/color]'; 409 } 410 411 function sumBarterEfficiency() 412 { 413 if (panels.market.counters.barterEfficiency.teamsScores[playerState.team] == 0) 414 { 415 panels.market.counters.barterEfficiency.teamsScores[playerState.team] = { }; 416 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought = 0; 417 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold = 0; 418 } 419 420 for each (var boughtAmount in playerState.statistics.resourcesBought) 421 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought += boughtAmount; 422 for each (var soldAmount in playerState.statistics.resourcesSold) 423 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold += soldAmount; 424 425 panels.market.counters.barterEfficiency.teamsScoresCaption[playerState.team] = 426 Math.floor(panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold > 0 ? 427 (panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought / 428 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold) * 100 : 0) + "%"; 429 } 430 431 function sumVegetarianRatio() 432 { 433 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] == 0) 434 { 435 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] = { }; 436 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood = 0; 437 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food = 0; 438 } 439 440 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood; 441 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food += playerState.statistics.resourcesGathered.food; 442 443 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food && 444 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood) 445 { 446 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 447 Math.floor((panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood / 448 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food) * 100) + "%"; 449 return; 450 } 451 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 0 + "%"; 452 } 453 454 function sumFeminisation() 455 { 456 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team] == 0) 457 { 458 panels.miscelanous.counters.feminisation.teamsScores[playerState.team] = { }; 459 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained = 0; 460 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained = 0; 461 } 462 463 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained += playerState.statistics.unitsTrained.Female; 464 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained += playerState.statistics.unitsTrained.Worker; 465 466 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained && 467 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) 468 { 469 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 470 Math.floor((panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained / 471 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) * 100) + "%"; 472 return; 473 } 474 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 0 + "%"; 475 } 476 477 function sumKillDeathRatio() 478 { 479 if (panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] == 0) 480 { 481 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] = { }; 482 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled = 0; 483 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost = 0; 484 } 485 486 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled.total; 487 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost.total; 488 489 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled) 490 { 491 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "0.00"; 492 return; 493 } 494 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) 495 { 496 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "\u221E"; // infinity symbol 497 return; 498 } 499 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = 500 Math.round((panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled / 501 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) * 100)/100; 502 } 503 504 // FUNCTION BODY 505 // Load data 506 var civData = loadCivData(); 125 //update team counters 126 var teamCounterFn = panelInfo.teamCounterFn 127 updateTeamCounters(panelInfo.counters, teamCounterFn); 128 } 129 130 function init(data) 131 { 132 updateObjectPlayerPosition(); 133 gameData = data; 134 507 135 // Map 508 136 var mapDisplayType = translate("Scenario"); 509 137 … … 529 157 } 530 158 531 159 Engine.GetGUIObjectByName("mapName").caption = sprintf(translate("%(mapName)s - %(mapType)s"), { mapName: translate(data.mapSettings.Name), mapType: mapDisplayType}); 532 160 533 161 // Panels 534 // Align headers 535 var left = 50; 536 for each (var panel in panels) // for all panels 537 alignHeaders(panel.headings); 162 maxPlayers = data.playerStates.length - 1; 538 163 539 // TODO set maxPlayers as playerCounters.length540 var maxPlayers = data.playerStates.length - 1;541 var maxTeams = 0;542 543 var teams = [ ];544 164 if (data.mapSettings.LockTeams) // teams ARE locked 545 165 { 546 166 // count teams … … 553 173 } 554 174 teams[data.playerStates[t+1].team]++; 555 175 } 556 176 557 177 if (teams.length == maxPlayers) 558 178 teams = false; // Each player has his own team. Displaying teams makes no sense. 559 179 } 560 180 else // teams are NOT locked 561 181 teams = false; 562 182 563 183 // Erase teams data if teams are not displayed 564 184 if (!teams) 565 185 { … … 566 186 for(var p = 0; p < maxPlayers; ++p) 567 187 data.playerStates[p+1].team = -1; 568 188 } 569 570 // Count players without team (or all if teams are not displayed) 571 var withoutTeam = maxPlayers; 189 190 withoutTeam = maxPlayers; 572 191 if (teams) 573 192 { 574 193 // count players without team (or all if teams are not displayed) 575 194 for (var i = 0; i < teams.length; ++i) 576 195 withoutTeam -= teams[i]; 577 578 // Display teams boxes579 var p = 0;580 for each (var panel in panels)581 {582 var yStart = TEAMS_BOX_Y_START + withoutTeam * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP);583 for (var i = 0; i < teams.length; ++i)584 {585 var teamBox = Engine.GetGUIObjectByName("teamBox"+p+"t"+i);586 teamBox.hidden = false;587 var teamBoxSize = teamBox.size;588 teamBoxSize.top = yStart;589 teamBox.size = teamBoxSize;590 591 yStart += 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 32;592 593 Engine.GetGUIObjectByName("teamNameHeading"+p+"t"+i).caption = "Team "+(i+1);594 595 // Make place to store team scores596 for each (var counter in panel.counters)597 {598 counter.teamsScores[i] = 0;599 counter.teamsScoresCaption[i] = "0";600 }601 }602 603 // If there are no players without team, hide "player name" heading604 if (!withoutTeam)605 Engine.GetGUIObjectByName("playerName"+p+"Heading").caption = "";606 607 p++;608 }609 196 } 610 611 if (withoutTeam)612 {613 // Show boxes for no teams614 for (var b = 0; b < PANELS_COUNT; ++b)615 Engine.GetGUIObjectByName("noTeamsBox"+b).hidden = false;616 }617 197 618 var playerBoxesCounts = [ ];619 for (var i = 0; i < maxPlayers; ++i)620 {621 var tn = "";622 var playerState = data.playerStates[i+1];623 624 if (!playerBoxesCounts[playerState.team+1])625 playerBoxesCounts[playerState.team+1] = 1;626 else627 playerBoxesCounts[playerState.team+1] += 1;628 629 if (playerState.team != -1)630 tn = "t"+playerState.team+"p";631 632 var j = 0;633 for each (var panel in panels)634 {635 var playerIdentityString = tn+"["+(playerBoxesCounts[playerState.team+1]-1)+"]";636 // Display boxes for players637 var playerBox = Engine.GetGUIObjectByName("playerBox"+j+playerIdentityString);638 playerBox.hidden = false;639 640 var boxSize = playerBox.size;641 boxSize.top += (playerBoxesCounts[playerState.team+1] - 1) * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP);642 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE;643 playerBox.size = boxSize;644 645 var colourString = "colour: "646 + Math.floor(playerState.colour.r * 255) + " "647 + Math.floor(playerState.colour.g * 255) + " "648 + Math.floor(playerState.colour.b * 255);649 650 playerBox.sprite = colourString + PLAYER_BOX_ALPHA;651 652 var playerColourBox = Engine.GetGUIObjectByName("playerColourBox"+j+playerIdentityString);653 playerColourBox.sprite = colourString + PLAYER_COLOUR_BOX_ALPHA;654 655 // Show the multiplayer name, e.g. "Foobar" rather than "Player 1".656 // TODO: Perhaps show both the multiplayer and map-specific name?657 var playerName = Engine.GetGUIObjectByName("playerName"+j+playerIdentityString);658 playerName.caption = data.players[i+1].name;659 660 var civIcon = Engine.GetGUIObjectByName("civIcon"+j+playerIdentityString);661 civIcon.sprite = "stretched:"+civData[playerState.civ].Emblem;662 civIcon.tooltip = civData[playerState.civ].Name;663 664 // Get counters665 for (var c in panel.counters)666 {667 panel.counters[c].objects[i] = Engine.GetGUIObjectByName(c+playerIdentityString);668 }669 670 // Align counters671 var right = alignCounters(panel.counters, i);672 boxSize.right = right;673 playerBox.size = boxSize;674 675 j++;676 }677 678 // Assign counters679 // score panel680 panels.score.counters.economyScore.objects[i].caption = captionEconomyScore();681 panels.score.counters.militaryScore.objects[i].caption = Math.round((playerState.statistics.enemyUnitsKilledValue +682 playerState.statistics.enemyBuildingsDestroyedValue) / 10);683 panels.score.counters.explorationScore.objects[i].caption = playerState.statistics.percentMapExplored * 10;684 panels.score.counters.totalScore.objects[i].caption = (+panels.score.counters.economyScore.objects[i].caption) +685 (+panels.score.counters.militaryScore.objects[i].caption) +686 (+panels.score.counters.explorationScore.objects[i].caption);687 // buildings panel688 var t = 0;689 for each (var counter in panels.buildings.counters)690 {691 captionBuildings(counter.objects[i], BUILDINGS_TYPES[t]);692 t++;693 }694 // units panel695 t = 0;696 for each (var counter in panels.units.counters)697 {698 captionUnits(counter.objects[i], UNITS_TYPES[t]);699 t++;700 }701 // resources panel702 t = 0;703 for each (var counter in panels.resources.counters)704 {705 if (t >= 4) // only 4 first counters706 break;707 708 captionResourcesGathered(counter.objects[i], RESOURCES_TYPES[t]);709 t++;710 }711 panels.resources.counters.totalGathered.objects[i].caption = captionTotalResourcesGathered();712 panels.resources.counters.treasuresCollected.objects[i].caption = playerState.statistics.treasuresCollected;713 panels.resources.counters.resourcesTributed.objects[i].caption = captionResourcesTributed();714 // market panel715 t = 0;716 for (var c in panels.market.counters)717 {718 if (t >= 4) // only 4 first counters719 break;720 721 captionResourcesExchanged(panels.market.counters[c].objects[i], RESOURCES_TYPES[t]);722 t++;723 }724 panels.market.counters.barterEfficiency.objects[i].caption = captionBarterEfficiency();725 panels.market.counters.tradeIncome.objects[i].caption = playerState.statistics.tradeIncome;726 // miscelanous panel727 panels.miscelanous.counters.vegetarianRatio.objects[i].caption = captionVegetarianRatio();728 panels.miscelanous.counters.feminisation.objects[i].caption = captionFeminisation();729 panels.miscelanous.counters.killDeathRatio.objects[i].caption = captionKillDeathRatio();730 panels.miscelanous.counters.mapExploration.objects[i].caption = playerState.statistics.percentMapExplored + "%";731 732 if (!teams)733 continue;734 735 if (playerState.team == -1)736 continue;737 738 // Evaluate team total score739 // score panel740 for (var c in panels.score.counters)741 {742 panels.score.counters[c].teamsScores[playerState.team] += (+panels.score.counters[c].objects[i].caption);743 panels.score.counters[c].teamsScoresCaption[playerState.team] = panels.score.counters[c].teamsScores[playerState.team];744 }745 // buildings panel746 var t = 0;747 for each (var counter in panels.buildings.counters)748 {749 sumTeamBuildings(counter, BUILDINGS_TYPES[t]);750 t++;751 }752 // units panel753 t = 0;754 for each (var counter in panels.units.counters)755 {756 sumTeamUnits(counter, UNITS_TYPES[t]);757 t++;758 }759 // resources panel760 t = 0;761 for each (var counter in panels.resources.counters)762 {763 if (t >= 4) // only 4 first counters764 break;765 766 sumResourcesGathered(counter, RESOURCES_TYPES[t]);767 t++;768 }769 sumTotalResourcesGathered();770 panels.resources.counters.treasuresCollected.teamsScores[playerState.team] += playerState.statistics.treasuresCollected;771 panels.resources.counters.treasuresCollected.teamsScoresCaption[playerState.team] = panels.resources.counters.treasuresCollected.teamsScores[playerState.team];772 sumResourcesTributed();773 // market panel774 t = 0;775 for (var c in panels.market.counters)776 {777 if (t >= 4) // only 4 first counters778 break;779 780 sumResourcesExchanged(panels.market.counters[c], RESOURCES_TYPES[t]);781 t++;782 }783 sumBarterEfficiency();784 panels.market.counters.tradeIncome.teamsScores[playerState.team] += playerState.statistics.tradeIncome;785 panels.market.counters.tradeIncome.teamsScoresCaption[playerState.team] = panels.market.counters.tradeIncome.teamsScores[playerState.team];786 // miscelanous panel787 sumVegetarianRatio();788 sumFeminisation();789 sumKillDeathRatio();790 panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] = playerState.statistics.teamPercentMapExplored;791 panels.miscelanous.counters.mapExploration.teamsScoresCaption[playerState.team] = panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] + "%";792 }793 794 if (!teams)795 {796 selectPanel(0);797 return;798 }799 800 // Display teams totals counters801 for (var i = 0; i < teams.length; ++i)802 {803 var pn = 0;804 for each (var panel in panels)805 {806 var teamHeading = Engine.GetGUIObjectByName("teamHeading"+pn+"t"+i);807 var yStart = 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2;808 teamHeading.size = "50 "+yStart+" 100% "+(yStart+20);809 teamHeading.caption = translate("Team total");810 811 var left = 250;812 for (var c in panel.counters)813 {814 var counter = Engine.GetGUIObjectByName(c+"t"+i);815 counter.size = left + " " + yStart + " " + (left + panel.counters[c].width) + " " + (yStart+20);816 counter.caption = panel.counters[c].teamsScoresCaption[i];817 818 left += panel.counters[c].width;819 }820 pn++;821 }822 }823 824 198 selectPanel(0); 825 } 199 } 200 No newline at end of file -
binaries/data/mods/public/gui/summary/summary.xml
9 9 <objects> 10 10 <script file="gui/common/functions_civinfo.js"/> 11 11 <script file="gui/common/functions_utility.js"/> 12 <script file="gui/summary/countersHelper.js"/> 13 <script file="gui/summary/layoutsHelper.js"/> 12 14 <script file="gui/summary/summary.js"/> 13 15 14 16 <object type="image" … … 94 96 <translatableAttribute id="caption">Miscellaneous</translatableAttribute> 95 97 </object> 96 98 </object> 97 98 <object name="scorePanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58">99 99 100 <object name="generalPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58"> 100 101 <object size="0 0 100% 100%-50"> 101 <object name="playerName 0Heading" type="text" style="ModernLeftTabLabelText">102 <object name="playerNameHeading" type="text" style="ModernLeftTabLabelText"> 102 103 <translatableAttribute id="caption">Player name</translatableAttribute> 103 104 </object> 104 <object name="economyScoreHeading" type="text" style="ModernTabLabelText"> 105 <translatableAttribute id="caption">Economy score</translatableAttribute> 105 <object name="titleHeading" type="text" style="ModernTabLabelText"> 106 106 </object> 107 <object name="militaryScoreHeading" type="text" style="ModernTabLabelText"> 108 <translatableAttribute id="caption">Military score</translatableAttribute> 109 </object> 110 <object name="explorationScoreHeading" type="text" style="ModernTabLabelText"> 111 <translatableAttribute id="caption">Exploration score</translatableAttribute> 112 </object> 113 <object name="totalScoreHeading" type="text" style="ModernTabLabelText"> 114 <translatableAttribute id="caption">Total score</translatableAttribute> 115 </object> 116 </object> 117 118 <object type="image" name="teamBox0t0" size="0 65 100% 100%-50" hidden="true"> 119 <object type="text" name="teamNameHeading0t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 120 <object size="0 30 100% 100%"> 121 <repeat count="8"> 122 <object type="image" name="playerBox0t0p[n]" size="10 0 10 30" hidden="true"> 123 <object name="playerColourBox0t0p[n]" type="image" size="10 4 30 24"/> 124 <object name="playerName0t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText" /> 125 <object name="civIcon0t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 126 <object name="economyScoret0p[n]" type="text" style="ModernLabelText"/> 127 <object name="militaryScoret0p[n]" type="text" style="ModernLabelText"/> 128 <object name="explorationScoret0p[n]" type="text" style="ModernLabelText"/> 129 <object name="totalScoret0p[n]" type="text" style="ModernLabelText"/> 130 </object> 131 </repeat> 132 </object> 133 <object name="teamHeading0t0" type="text" style="ModernLeftTabLabelText"/> 134 <object name="economyScoret0" type="text" style="ModernLabelText"/> 135 <object name="militaryScoret0" type="text" style="ModernLabelText"/> 136 <object name="explorationScoret0" type="text" style="ModernLabelText"/> 137 <object name="totalScoret0" type="text" style="ModernLabelText"/> 138 </object> 139 <object type="image" name="teamBox0t1" size="0 65 100% 100%-50" hidden="true"> 140 <object type="text" name="teamNameHeading0t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 141 <object size="0 30 100% 100%"> 142 <repeat count="8"> 143 <object type="image" name="playerBox0t1p[n]" size="10 0 10 30" hidden="true"> 144 <object name="playerColourBox0t1p[n]" type="image" size="10 4 30 24"/> 145 <object name="playerName0t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 146 <object name="civIcon0t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 147 <object name="economyScoret1p[n]" type="text" style="ModernLabelText"/> 148 <object name="militaryScoret1p[n]" type="text" style="ModernLabelText"/> 149 <object name="explorationScoret1p[n]" type="text" style="ModernLabelText"/> 150 <object name="totalScoret1p[n]" type="text" style="ModernLabelText"/> 151 </object> 152 </repeat> 153 </object> 154 <object name="teamHeading0t1" type="text" style="ModernLeftTabLabelText"/> 155 <object name="economyScoret1" type="text" style="ModernLabelText"/> 156 <object name="militaryScoret1" type="text" style="ModernLabelText"/> 157 <object name="explorationScoret1" type="text" style="ModernLabelText"/> 158 <object name="totalScoret1" type="text" style="ModernLabelText"/> 159 </object> 160 <object type="image" name="teamBox0t2" size="0 65 100% 100%-50" hidden="true"> 161 <object type="text" name="teamNameHeading0t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 162 <object size="0 30 100% 100%"> 163 <repeat count="8"> 164 <object type="image" name="playerBox0t2p[n]" size="10 0 10 30" hidden="true"> 165 <object name="playerColourBox0t2p[n]" type="image" size="10 4 30 24"/> 166 <object name="playerName0t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 167 <object name="civIcon0t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 168 <object name="economyScoret2p[n]" type="text" style="ModernLabelText"/> 169 <object name="militaryScoret2p[n]" type="text" style="ModernLabelText"/> 170 <object name="explorationScoret2p[n]" type="text" style="ModernLabelText"/> 171 <object name="totalScoret2p[n]" type="text" style="ModernLabelText"/> 172 </object> 173 </repeat> 174 </object> 175 <object name="teamHeading0t2" type="text" style="ModernLeftTabLabelText"/> 176 <object name="economyScoret2" type="text" style="ModernLabelText"/> 177 <object name="militaryScoret2" type="text" style="ModernLabelText"/> 178 <object name="explorationScoret2" type="text" style="ModernLabelText"/> 179 <object name="totalScoret2" type="text" style="ModernLabelText"/> 180 </object> 181 <object type="image" name="teamBox0t3" size="0 65 100% 100%-50" hidden="true"> 182 <object type="text" name="teamNameHeading0t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 183 <object size="0 30 100% 100%"> 184 <repeat count="8"> 185 <object type="image" name="playerBox0t3p[n]" size="10 0 10 30" hidden="true"> 186 <object name="playerColourBox0t3p[n]" type="image" size="10 4 30 24"/> 187 <object name="playerName0t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 188 <object name="civIcon0t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 189 <object name="economyScoret3p[n]" type="text" style="ModernLabelText"/> 190 <object name="militaryScoret3p[n]" type="text" style="ModernLabelText"/> 191 <object name="explorationScoret3p[n]" type="text" style="ModernLabelText"/> 192 <object name="totalScoret3p[n]" type="text" style="ModernLabelText"/> 193 </object> 194 </repeat> 195 </object> 196 <object name="teamHeading0t3" type="text" style="ModernLeftTabLabelText"/> 197 <object name="economyScoret3" type="text" style="ModernLabelText"/> 198 <object name="militaryScoret3" type="text" style="ModernLabelText"/> 199 <object name="explorationScoret3" type="text" style="ModernLabelText"/> 200 <object name="totalScoret3" type="text" style="ModernLabelText"/> 201 </object> 202 203 <object type="image" name="noTeamsBox0" size="0 65 100% 100%-50" hidden="true"> 204 <repeat count="8"> 205 <object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true"> 206 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 207 <object name="playerColourBox0[n]" type="image" size="2 2 22 22"/> 208 </object> 209 <object name="playerName0[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 210 <object name="civIcon0[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 211 <object name="economyScore[n]" type="text" style="ModernLabelText"/> 212 <object name="militaryScore[n]" type="text" style="ModernLabelText"/> 213 <object name="explorationScore[n]" type="text" style="ModernLabelText"/> 214 <object name="totalScore[n]" type="text" style="ModernLabelText"/> 107 <repeat var="x" count="8"> 108 <object name="Heading[x]" type="text" style="ModernTabLabelText"> 109 <translatableAttribute id="caption">Demo</translatableAttribute> 215 110 </object> 216 111 </repeat> 217 112 </object> 218 </object>219 220 <object name="buildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">221 113 222 <object size="0 0 100% 100%-50"> 223 <object name="playerName1Heading" type="text" style="ModernLeftTabLabelText"> 224 <translatableAttribute id="caption">Player name</translatableAttribute> 225 </object> 226 <object name="buildingsHeading" type="text" style="ModernTabLabelText"> 227 <translatableAttribute id="caption">Buildings Statistics (Constructed / Lost / Destroyed)</translatableAttribute> 228 </object> 229 <object name="totalBuildingsHeading" type="text" style="ModernTabLabelText"> 230 <translatableAttribute id="caption">Total</translatableAttribute> 231 </object> 232 <object name="houseBuildingsHeading" type="text" style="ModernTabLabelText"> 233 <translatableAttribute id="caption">Houses</translatableAttribute> 234 </object> 235 <object name="economicBuildingsHeading" type="text" style="ModernTabLabelText"> 236 <translatableAttribute id="caption">Economic</translatableAttribute> 237 </object> 238 <object name="outpostBuildingsHeading" type="text" style="ModernTabLabelText"> 239 <translatableAttribute id="caption">Outposts</translatableAttribute> 240 </object> 241 <object name="militaryBuildingsHeading" type="text" style="ModernTabLabelText"> 242 <translatableAttribute id="caption">Military</translatableAttribute> 243 </object> 244 <object name="fortressBuildingsHeading" type="text" style="ModernTabLabelText"> 245 <translatableAttribute id="caption">Fortresses</translatableAttribute> 246 </object> 247 <object name="civCentreBuildingsHeading" type="text" style="ModernTabLabelText"> 248 <translatableAttribute id="caption">Civ Centers</translatableAttribute> 249 </object> 250 <object name="wonderBuildingsHeading" type="text" style="ModernTabLabelText"> 251 <translatableAttribute id="caption">Wonders</translatableAttribute> 252 </object> 253 254 </object> 255 256 <object type="image" name="teamBox1t0" size="0 65 100% 100%-50" hidden="true"> 257 <object type="text" name="teamNameHeading1t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 258 <object size="0 30 100% 100%"> 259 <repeat count="8"> 260 <object type="image" name="playerBox1t0p[n]" size="10 0 10 30" hidden="true"> 261 <object name="playerColourBox1t0p[n]" type="image" size="10 4 30 24"/> 262 <object name="playerName1t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 263 <object name="civIcon1t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 264 <object name="totalBuildingst0p[n]" type="text" style="ModernLabelText"/> 265 <object name="houseBuildingst0p[n]" type="text" style="ModernLabelText"/> 266 <object name="economicBuildingst0p[n]" type="text" style="ModernLabelText"/> 267 <object name="outpostBuildingst0p[n]" type="text" style="ModernLabelText"/> 268 <object name="militaryBuildingst0p[n]" type="text" style="ModernLabelText"/> 269 <object name="fortressBuildingst0p[n]" type="text" style="ModernLabelText"/> 270 <object name="civCentreBuildingst0p[n]" type="text" style="ModernLabelText"/> 271 <object name="wonderBuildingst0p[n]" type="text" style="ModernLabelText"/> 272 </object> 273 </repeat> 274 </object> 275 <object name="teamHeading1t0" type="text" style="ModernLeftTabLabelText"/> 276 <object name="totalBuildingst0" type="text" style="ModernLabelText"/> 277 <object name="houseBuildingst0" type="text" style="ModernLabelText"/> 278 <object name="economicBuildingst0" type="text" style="ModernLabelText"/> 279 <object name="outpostBuildingst0" type="text" style="ModernLabelText"/> 280 <object name="militaryBuildingst0" type="text" style="ModernLabelText"/> 281 <object name="fortressBuildingst0" type="text" style="ModernLabelText"/> 282 <object name="civCentreBuildingst0" type="text" style="ModernLabelText"/> 283 <object name="wonderBuildingst0" type="text" style="ModernLabelText"/> 284 </object> 285 <object type="image" name="teamBox1t1" size="0 65 100% 100%-50" hidden="true"> 286 <object type="text" name="teamNameHeading1t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 287 <object size="0 30 100% 100%"> 288 <repeat count="8"> 289 <object type="image" name="playerBox1t1p[n]" size="10 0 10 30" hidden="true"> 290 <object name="playerColourBox1t1p[n]" type="image" size="10 4 30 24"/> 291 <object name="playerName1t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 292 <object name="civIcon1t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 293 <object name="totalBuildingst1p[n]" type="text" style="ModernLabelText"/> 294 <object name="houseBuildingst1p[n]" type="text" style="ModernLabelText"/> 295 <object name="economicBuildingst1p[n]" type="text" style="ModernLabelText"/> 296 <object name="outpostBuildingst1p[n]" type="text" style="ModernLabelText"/> 297 <object name="militaryBuildingst1p[n]" type="text" style="ModernLabelText"/> 298 <object name="fortressBuildingst1p[n]" type="text" style="ModernLabelText"/> 299 <object name="civCentreBuildingst1p[n]" type="text" style="ModernLabelText"/> 300 <object name="wonderBuildingst1p[n]" type="text" style="ModernLabelText"/> 301 </object> 302 </repeat> 303 </object> 304 <object name="teamHeading1t1" type="text" style="ModernLeftTabLabelText"/> 305 <object name="totalBuildingst1" type="text" style="ModernLabelText"/> 306 <object name="houseBuildingst1" type="text" style="ModernLabelText"/> 307 <object name="economicBuildingst1" type="text" style="ModernLabelText"/> 308 <object name="outpostBuildingst1" type="text" style="ModernLabelText"/> 309 <object name="militaryBuildingst1" type="text" style="ModernLabelText"/> 310 <object name="fortressBuildingst1" type="text" style="ModernLabelText"/> 311 <object name="civCentreBuildingst1" type="text" style="ModernLabelText"/> 312 <object name="wonderBuildingst1" type="text" style="ModernLabelText"/> 313 </object> 314 <object type="image" name="teamBox1t2" size="0 65 100% 100%-50" hidden="true"> 315 <object type="text" name="teamNameHeading1t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 316 <object size="0 30 100% 100%"> 317 <repeat count="8"> 318 <object type="image" name="playerBox1t2p[n]" size="10 0 10 30" hidden="true"> 319 <object name="playerColourBox1t2p[n]" type="image" size="10 4 30 24"/> 320 <object name="playerName1t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 321 <object name="civIcon1t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 322 <object name="totalBuildingst2p[n]" type="text" style="ModernLabelText"/> 323 <object name="houseBuildingst2p[n]" type="text" style="ModernLabelText"/> 324 <object name="economicBuildingst2p[n]" type="text" style="ModernLabelText"/> 325 <object name="outpostBuildingst2p[n]" type="text" style="ModernLabelText"/> 326 <object name="militaryBuildingst2p[n]" type="text" style="ModernLabelText"/> 327 <object name="fortressBuildingst2p[n]" type="text" style="ModernLabelText"/> 328 <object name="civCentreBuildingst2p[n]" type="text" style="ModernLabelText"/> 329 <object name="wonderBuildingst2p[n]" type="text" style="ModernLabelText"/> 330 </object> 331 </repeat> 332 </object> 333 <object name="teamHeading1t2" type="text" style="ModernLeftTabLabelText"/> 334 <object name="totalBuildingst2" type="text" style="ModernLabelText"/> 335 <object name="houseBuildingst2" type="text" style="ModernLabelText"/> 336 <object name="economicBuildingst2" type="text" style="ModernLabelText"/> 337 <object name="outpostBuildingst2" type="text" style="ModernLabelText"/> 338 <object name="militaryBuildingst2" type="text" style="ModernLabelText"/> 339 <object name="fortressBuildingst2" type="text" style="ModernLabelText"/> 340 <object name="civCentreBuildingst2" type="text" style="ModernLabelText"/> 341 <object name="wonderBuildingst2" type="text" style="ModernLabelText"/> 342 </object> 343 <object type="image" name="teamBox1t3" size="0 65 100% 100%-50" hidden="true"> 344 <object type="text" name="teamNameHeading1t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 345 <object size="0 30 100% 100%"> 346 <repeat count="8"> 347 <object type="image" name="playerBox1t3p[n]" size="10 0 10 30" hidden="true"> 348 <object name="playerColourBox1t3p[n]" type="image" size="10 4 30 24"/> 349 <object name="playerName1t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 350 <object name="civIcon1t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 351 <object name="totalBuildingst3p[n]" type="text" style="ModernLabelText"/> 352 <object name="houseBuildingst3p[n]" type="text" style="ModernLabelText"/> 353 <object name="economicBuildingst3p[n]" type="text" style="ModernLabelText"/> 354 <object name="outpostBuildingst3p[n]" type="text" style="ModernLabelText"/> 355 <object name="militaryBuildingst3p[n]" type="text" style="ModernLabelText"/> 356 <object name="fortressBuildingst3p[n]" type="text" style="ModernLabelText"/> 357 <object name="civCentreBuildingst3p[n]" type="text" style="ModernLabelText"/> 358 <object name="wonderBuildingst3p[n]" type="text" style="ModernLabelText"/> 359 </object> 360 </repeat> 361 </object> 362 <object name="teamHeading1t3" type="text" style="ModernLeftTabLabelText"/> 363 <object name="totalBuildingst3" type="text" style="ModernLabelText"/> 364 <object name="houseBuildingst3" type="text" style="ModernLabelText"/> 365 <object name="economicBuildingst3" type="text" style="ModernLabelText"/> 366 <object name="outpostBuildingst3" type="text" style="ModernLabelText"/> 367 <object name="militaryBuildingst3" type="text" style="ModernLabelText"/> 368 <object name="fortressBuildingst3" type="text" style="ModernLabelText"/> 369 <object name="civCentreBuildingst3" type="text" style="ModernLabelText"/> 370 <object name="wonderBuildingst3" type="text" style="ModernLabelText"/> 371 </object> 372 373 <object type="image" name="noTeamsBox1" size="0 65 100% 100%-50" hidden="true"> 374 <repeat count="8"> 375 <object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true"> 376 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 377 <object name="playerColourBox1[n]" type="image" size="2 2 22 22"/> 378 </object> 379 <object name="playerName1[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 380 <object name="civIcon1[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 381 <object name="totalBuildings[n]" type="text" style="ModernLabelText"/> 382 <object name="houseBuildings[n]" type="text" style="ModernLabelText"/> 383 <object name="economicBuildings[n]" type="text" style="ModernLabelText"/> 384 <object name="outpostBuildings[n]" type="text" style="ModernLabelText"/> 385 <object name="militaryBuildings[n]" type="text" style="ModernLabelText"/> 386 <object name="fortressBuildings[n]" type="text" style="ModernLabelText"/> 387 <object name="civCentreBuildings[n]" type="text" style="ModernLabelText"/> 388 <object name="wonderBuildings[n]" type="text" style="ModernLabelText"/> 114 <repeat count="4" var="i"> 115 <object type="image" name="teamBoxt[i]" size="0 65 100% 100%-50" hidden="true"> 116 <object type="text" name="teamNameHeadingt[i]" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 117 <object size="0 30 100% 100%"> 118 <repeat count="8" var="n"> 119 <object type="image" name="playerBoxt[i]p[n]" size="10 0 10 30" hidden="true"> 120 <object name="playerColourBoxt[i]p[n]" type="image" size="10 4 30 24"/> 121 <object name="playerNamet[i]p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText" /> 122 <object name="civIcont[i]p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 123 <repeat var="x" count="8"> 124 <object name="valueDataTeam[i]p[n][x]" type="text" style="ModernTabLabelText"> 125 <translatableAttribute id="caption">DemoOhsi</translatableAttribute> 126 </object> 127 </repeat> 128 </object> 129 </repeat> 389 130 </object> 390 </repeat> 391 </object> 392 </object> 393 394 <object name="unitsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 395 396 <object size="0 0 100% 100%-50"> 397 <object name="playerName2Heading" type="text" style="ModernLeftTabLabelText"> 398 <translatableAttribute id="caption">Player name</translatableAttribute> 399 </object> 400 <object name="unitsHeading" type="text" style="ModernTabLabelText"> 401 <translatableAttribute id="caption">Units Statistics (Trained / Lost / Killed)</translatableAttribute> 402 </object> 403 <object name="totalUnitsHeading" type="text" style="ModernTabLabelText"> 404 <translatableAttribute id="caption">Total</translatableAttribute> 405 </object> 406 <object name="infantryUnitsHeading" type="text" style="ModernTabLabelText"> 407 <translatableAttribute id="caption">Infantry</translatableAttribute> 408 </object> 409 <object name="workerUnitsHeading" type="text" style="ModernTabLabelText"> 410 <translatableAttribute id="caption">Worker</translatableAttribute> 411 </object> 412 <object name="cavalryUnitsHeading" type="text" style="ModernTabLabelText"> 413 <translatableAttribute id="caption">Cavalry</translatableAttribute> 414 </object> 415 <object name="championUnitsHeading" type="text" style="ModernTabLabelText"> 416 <translatableAttribute id="caption">Champion</translatableAttribute> 417 </object> 418 <object name="heroesUnitsHeading" type="text" style="ModernTabLabelText"> 419 <translatableAttribute id="caption">Heroes</translatableAttribute> 420 </object> 421 <object name="navyUnitsHeading" type="text" style="ModernTabLabelText"> 422 <translatableAttribute id="caption">Navy</translatableAttribute> 423 </object> 424 </object> 425 426 <object type="image" name="teamBox2t0" size="0 65 100% 100%-50" hidden="true"> 427 <object type="text" name="teamNameHeading2t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 428 <object size="0 30 100% 100%"> 429 <repeat count="8"> 430 <object type="image" name="playerBox2t0p[n]" size="10 0 10 30" hidden="true"> 431 <object name="playerColourBox2t0p[n]" type="image" size="10 4 30 24"/> 432 <object name="playerName2t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 433 <object name="civIcon2t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 434 <object name="totalUnitst0p[n]" type="text" style="ModernLabelText"/> 435 <object name="infantryUnitst0p[n]" type="text" style="ModernLabelText"/> 436 <object name="workerUnitst0p[n]" type="text" style="ModernLabelText"/> 437 <object name="cavalryUnitst0p[n]" type="text" style="ModernLabelText"/> 438 <object name="championUnitst0p[n]" type="text" style="ModernLabelText"/> 439 <object name="heroesUnitst0p[n]" type="text" style="ModernLabelText"/> 440 <object name="navyUnitst0p[n]" type="text" style="ModernLabelText"/> 131 <object name="teamHeadingt[i]" type="text" style="ModernLeftTabLabelText"/> 132 <repeat var="x" count="8"> 133 <object name="valueDataTeam[i][x]" type="text" style="ModernTabLabelText"> 134 <translatableAttribute id="caption">DemoNormal</translatableAttribute> 441 135 </object> 442 136 </repeat> 443 137 </object> 444 <object name="teamHeading2t0" type="text" style="ModernLeftTabLabelText"/> 445 <object name="totalUnitst0" type="text" style="ModernLabelText"/> 446 <object name="infantryUnitst0" type="text" style="ModernLabelText"/> 447 <object name="workerUnitst0" type="text" style="ModernLabelText"/> 448 <object name="cavalryUnitst0" type="text" style="ModernLabelText"/> 449 <object name="championUnitst0" type="text" style="ModernLabelText"/> 450 <object name="heroesUnitst0" type="text" style="ModernLabelText"/> 451 <object name="navyUnitst0" type="text" style="ModernLabelText"/> 452 </object> 453 <object type="image" name="teamBox2t1" size="0 65 100% 100%-50" hidden="true"> 454 <object type="text" name="teamNameHeading2t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 455 <object size="0 30 100% 100%"> 456 <repeat count="8"> 457 <object type="image" name="playerBox2t1p[n]" size="10 0 10 30" hidden="true"> 458 <object name="playerColourBox2t1p[n]" type="image" size="10 4 30 24"/> 459 <object name="playerName2t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 460 <object name="civIcon2t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 461 <object name="totalUnitst1p[n]" type="text" style="ModernLabelText"/> 462 <object name="infantryUnitst1p[n]" type="text" style="ModernLabelText"/> 463 <object name="workerUnitst1p[n]" type="text" style="ModernLabelText"/> 464 <object name="cavalryUnitst1p[n]" type="text" style="ModernLabelText"/> 465 <object name="championUnitst1p[n]" type="text" style="ModernLabelText"/> 466 <object name="heroesUnitst1p[n]" type="text" style="ModernLabelText"/> 467 <object name="navyUnitst1p[n]" type="text" style="ModernLabelText"/> 468 </object> 469 </repeat> 470 </object> 471 <object name="teamHeading2t1" type="text" style="ModernLeftTabLabelText"/> 472 <object name="totalUnitst1" type="text" style="ModernLabelText"/> 473 <object name="infantryUnitst1" type="text" style="ModernLabelText"/> 474 <object name="workerUnitst1" type="text" style="ModernLabelText"/> 475 <object name="cavalryUnitst1" type="text" style="ModernLabelText"/> 476 <object name="championUnitst1" type="text" style="ModernLabelText"/> 477 <object name="heroesUnitst1" type="text" style="ModernLabelText"/> 478 <object name="navyUnitst1" type="text" style="ModernLabelText"/> 479 </object> 480 <object type="image" name="teamBox2t2" size="0 65 100% 100%-50" hidden="true"> 481 <object type="text" name="teamNameHeading2t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 482 <object size="0 30 100% 100%"> 483 <repeat count="8"> 484 <object type="image" name="playerBox2t2p[n]" size="10 0 10 30" hidden="true"> 485 <object name="playerColourBox2t2p[n]" type="image" size="10 4 30 24"/> 486 <object name="playerName2t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 487 <object name="civIcon2t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 488 <object name="totalUnitst2p[n]" type="text" style="ModernLabelText"/> 489 <object name="infantryUnitst2p[n]" type="text" style="ModernLabelText"/> 490 <object name="workerUnitst2p[n]" type="text" style="ModernLabelText"/> 491 <object name="cavalryUnitst2p[n]" type="text" style="ModernLabelText"/> 492 <object name="championUnitst2p[n]" type="text" style="ModernLabelText"/> 493 <object name="heroesUnitst2p[n]" type="text" style="ModernLabelText"/> 494 <object name="navyUnitst2p[n]" type="text" style="ModernLabelText"/> 495 </object> 496 </repeat> 497 </object> 498 <object name="teamHeading2t2" type="text" style="ModernLeftTabLabelText"/> 499 <object name="totalUnitst2" type="text" style="ModernLabelText"/> 500 <object name="infantryUnitst2" type="text" style="ModernLabelText"/> 501 <object name="workerUnitst2" type="text" style="ModernLabelText"/> 502 <object name="cavalryUnitst2" type="text" style="ModernLabelText"/> 503 <object name="championUnitst2" type="text" style="ModernLabelText"/> 504 <object name="heroesUnitst2" type="text" style="ModernLabelText"/> 505 <object name="navyUnitst2" type="text" style="ModernLabelText"/> 506 </object> 507 <object type="image" name="teamBox2t3" size="0 65 100% 100%-50" hidden="true"> 508 <object type="text" name="teamNameHeading2t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 509 <object size="0 30 100% 100%"> 510 <repeat count="8"> 511 <object type="image" name="playerBox2t3p[n]" size="10 0 10 30" hidden="true"> 512 <object name="playerColourBox2t3p[n]" type="image" size="10 4 30 24"/> 513 <object name="playerName2t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 514 <object name="civIcon2t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 515 <object name="totalUnitst3p[n]" type="text" style="ModernLabelText"/> 516 <object name="infantryUnitst3p[n]" type="text" style="ModernLabelText"/> 517 <object name="workerUnitst3p[n]" type="text" style="ModernLabelText"/> 518 <object name="cavalryUnitst3p[n]" type="text" style="ModernLabelText"/> 519 <object name="championUnitst3p[n]" type="text" style="ModernLabelText"/> 520 <object name="heroesUnitst3p[n]" type="text" style="ModernLabelText"/> 521 <object name="navyUnitst3p[n]" type="text" style="ModernLabelText"/> 522 </object> 523 </repeat> 524 </object> 525 <object name="teamHeading2t3" type="text" style="ModernLeftTabLabelText"/> 526 <object name="totalUnitst3" type="text" style="ModernLabelText"/> 527 <object name="infantryUnitst3" type="text" style="ModernLabelText"/> 528 <object name="workerUnitst3" type="text" style="ModernLabelText"/> 529 <object name="cavalryUnitst3" type="text" style="ModernLabelText"/> 530 <object name="championUnitst3" type="text" style="ModernLabelText"/> 531 <object name="heroesUnitst3" type="text" style="ModernLabelText"/> 532 <object name="navyUnitst3" type="text" style="ModernLabelText"/> 533 </object> 138 </repeat> 534 139 535 <object type="image" name="noTeamsBox 2" size="0 65 100% 100%-50" hidden="true">140 <object type="image" name="noTeamsBox" size="0 65 100% 100%-50" hidden="true"> 536 141 <repeat count="8"> 537 <object type="image" name="playerBox 2[n]" size="10 0 10 30" hidden="true">142 <object type="image" name="playerBox[n]" size="10 0 10 30" hidden="true"> 538 143 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 539 <object name="playerColourBox 2[n]" type="image" size="2 2 22 22"/>144 <object name="playerColourBox[n]" type="image" size="2 2 22 22"/> 540 145 </object> 541 <object name="playerName2[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 542 <object name="civIcon2[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 543 <object name="totalUnits[n]" type="text" style="ModernLabelText"/> 544 <object name="infantryUnits[n]" type="text" style="ModernLabelText"/> 545 <object name="workerUnits[n]" type="text" style="ModernLabelText"/> 546 <object name="cavalryUnits[n]" type="text" style="ModernLabelText"/> 547 <object name="championUnits[n]" type="text" style="ModernLabelText"/> 548 <object name="heroesUnits[n]" type="text" style="ModernLabelText"/> 549 <object name="navyUnits[n]" type="text" style="ModernLabelText"/> 146 <object name="playerName[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 147 <object name="civIcon[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 148 <repeat var="x" count="8"> 149 <object name="valueData[n][x]" type="text" style="ModernTabLabelText"> 150 <translatableAttribute id="caption">DemoValueData</translatableAttribute> 151 </object> 152 </repeat> 550 153 </object> 551 154 </repeat> 552 155 </object> 553 156 </object> 554 555 <object name="resourcesPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 556 557 <object size="0 0 100% 100%-50"> 558 <object name="playerName3Heading" type="text" style="ModernLeftTabLabelText"> 559 <translatableAttribute id="caption">Player name</translatableAttribute> 560 </object> 561 <object name="resourceHeading" type="text" style="ModernTabLabelText"> 562 <translatableAttribute id="caption">Resource Statistics (Gathered / Used)</translatableAttribute> 563 </object> 564 <object name="foodGatheredHeading" type="text" style="ModernTabLabelText"> 565 <translatableAttribute id="caption">Food</translatableAttribute> 566 </object> 567 <object name="woodGatheredHeading" type="text" style="ModernTabLabelText"> 568 <translatableAttribute id="caption">Wood</translatableAttribute> 569 </object> 570 <object name="stoneGatheredHeading" type="text" style="ModernTabLabelText"> 571 <translatableAttribute id="caption">Stone</translatableAttribute> 572 </object> 573 <object name="metalGatheredHeading" type="text" style="ModernTabLabelText"> 574 <translatableAttribute id="caption">Metal</translatableAttribute> 575 </object> 576 <object name="totalGatheredHeading" type="text" style="ModernTabLabelText"> 577 <translatableAttribute id="caption">Total</translatableAttribute> 578 </object> 579 <object name="treasuresCollectedHeading" type="text" style="ModernTabLabelText"> 580 <translatableAttribute id="caption">Treasures collected</translatableAttribute> 581 </object> 582 <object name="resourcesTributedHeading" type="text" style="ModernTabLabelText"> 583 <translatableAttribute id="caption">Tributes (Sent / Received)</translatableAttribute> 584 </object> 585 </object> 586 587 <object type="image" name="teamBox3t0" size="0 65 100% 100%-50" hidden="true"> 588 <object type="text" name="teamNameHeading3t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 589 <object size="0 30 100% 100%"> 590 <repeat count="8"> 591 <object type="image" name="playerBox3t0p[n]" size="10 0 10 30" hidden="true"> 592 <object name="playerColourBox3t0p[n]" type="image" size="10 4 30 24"/> 593 <object name="playerName3t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 594 <object name="civIcon3t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 595 <object name="foodGatheredt0p[n]" type="text" style="ModernLabelText"/> 596 <object name="woodGatheredt0p[n]" type="text" style="ModernLabelText"/> 597 <object name="stoneGatheredt0p[n]" type="text" style="ModernLabelText"/> 598 <object name="metalGatheredt0p[n]" type="text" style="ModernLabelText"/> 599 <object name="totalGatheredt0p[n]" type="text" style="ModernLabelText"/> 600 <object name="treasuresCollectedt0p[n]" type="text" style="ModernLabelText"/> 601 <object name="resourcesTributedt0p[n]" type="text" style="ModernLabelText"/> 602 </object> 603 </repeat> 604 </object> 605 <object name="teamHeading3t0" type="text" style="ModernLeftTabLabelText"/> 606 <object name="foodGatheredt0" type="text" style="ModernLabelText"/> 607 <object name="woodGatheredt0" type="text" style="ModernLabelText"/> 608 <object name="stoneGatheredt0" type="text" style="ModernLabelText"/> 609 <object name="metalGatheredt0" type="text" style="ModernLabelText"/> 610 <object name="totalGatheredt0" type="text" style="ModernLabelText"/> 611 <object name="treasuresCollectedt0" type="text" style="ModernLabelText"/> 612 <object name="resourcesTributedt0" type="text" style="ModernLabelText"/> 613 </object> 614 <object type="image" name="teamBox3t1" size="0 65 100% 100%-50" hidden="true"> 615 <object type="text" name="teamNameHeading3t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 616 <object size="0 30 100% 100%"> 617 <repeat count="8"> 618 <object type="image" name="playerBox3t1p[n]" size="10 0 10 30" hidden="true"> 619 <object name="playerColourBox3t1p[n]" type="image" size="10 4 30 24"/> 620 <object name="playerName3t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 621 <object name="civIcon3t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 622 <object name="foodGatheredt1p[n]" type="text" style="ModernLabelText"/> 623 <object name="woodGatheredt1p[n]" type="text" style="ModernLabelText"/> 624 <object name="stoneGatheredt1p[n]" type="text" style="ModernLabelText"/> 625 <object name="metalGatheredt1p[n]" type="text" style="ModernLabelText"/> 626 <object name="totalGatheredt1p[n]" type="text" style="ModernLabelText"/> 627 <object name="treasuresCollectedt1p[n]" type="text" style="ModernLabelText"/> 628 <object name="resourcesTributedt1p[n]" type="text" style="ModernLabelText"/> 629 </object> 630 </repeat> 631 </object> 632 <object name="teamHeading3t1" type="text" style="ModernLeftTabLabelText"/> 633 <object name="foodGatheredt1" type="text" style="ModernLabelText"/> 634 <object name="woodGatheredt1" type="text" style="ModernLabelText"/> 635 <object name="stoneGatheredt1" type="text" style="ModernLabelText"/> 636 <object name="metalGatheredt1" type="text" style="ModernLabelText"/> 637 <object name="totalGatheredt1" type="text" style="ModernLabelText"/> 638 <object name="treasuresCollectedt1" type="text" style="ModernLabelText"/> 639 <object name="resourcesTributedt1" type="text" style="ModernLabelText"/> 640 </object> 641 <object type="image" name="teamBox3t2" size="0 65 100% 100%-50" hidden="true"> 642 <object type="text" name="teamNameHeading3t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 643 <object size="0 30 100% 100%"> 644 <repeat count="8"> 645 <object type="image" name="playerBox3t2p[n]" size="10 0 10 30" hidden="true"> 646 <object name="playerColourBox3t2p[n]" type="image" size="10 4 30 24"/> 647 <object name="playerName3t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 648 <object name="civIcon3t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 649 <object name="foodGatheredt2p[n]" type="text" style="ModernLabelText"/> 650 <object name="woodGatheredt2p[n]" type="text" style="ModernLabelText"/> 651 <object name="stoneGatheredt2p[n]" type="text" style="ModernLabelText"/> 652 <object name="metalGatheredt2p[n]" type="text" style="ModernLabelText"/> 653 <object name="totalGatheredt2p[n]" type="text" style="ModernLabelText"/> 654 <object name="treasuresCollectedt2p[n]" type="text" style="ModernLabelText"/> 655 <object name="resourcesTributedt2p[n]" type="text" style="ModernLabelText"/> 656 </object> 657 </repeat> 658 </object> 659 <object name="teamHeading3t2" type="text" style="ModernLeftTabLabelText"/> 660 <object name="foodGatheredt2" type="text" style="ModernLabelText"/> 661 <object name="woodGatheredt2" type="text" style="ModernLabelText"/> 662 <object name="stoneGatheredt2" type="text" style="ModernLabelText"/> 663 <object name="metalGatheredt2" type="text" style="ModernLabelText"/> 664 <object name="totalGatheredt2" type="text" style="ModernLabelText"/> 665 <object name="treasuresCollectedt2" type="text" style="ModernLabelText"/> 666 <object name="resourcesTributedt2" type="text" style="ModernLabelText"/> 667 </object> 668 <object type="image" name="teamBox3t3" size="0 65 100% 100%-50" hidden="true"> 669 <object type="text" name="teamNameHeading3t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 670 <object size="0 30 100% 100%"> 671 <repeat count="8"> 672 <object type="image" name="playerBox3t3p[n]" size="10 0 10 30" hidden="true"> 673 <object name="playerColourBox3t3p[n]" type="image" size="10 4 30 24"/> 674 <object name="playerName3t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 675 <object name="civIcon3t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 676 <object name="foodGatheredt3p[n]" type="text" style="ModernLabelText"/> 677 <object name="woodGatheredt3p[n]" type="text" style="ModernLabelText"/> 678 <object name="stoneGatheredt3p[n]" type="text" style="ModernLabelText"/> 679 <object name="metalGatheredt3p[n]" type="text" style="ModernLabelText"/> 680 <object name="totalGatheredt3p[n]" type="text" style="ModernLabelText"/> 681 <object name="treasuresCollectedt3p[n]" type="text" style="ModernLabelText"/> 682 <object name="resourcesTributedt3p[n]" type="text" style="ModernLabelText"/> 683 </object> 684 </repeat> 685 </object> 686 <object name="teamHeading3t3" type="text" style="ModernLeftTabLabelText"/> 687 <object name="foodGatheredt3" type="text" style="ModernLabelText"/> 688 <object name="woodGatheredt3" type="text" style="ModernLabelText"/> 689 <object name="stoneGatheredt3" type="text" style="ModernLabelText"/> 690 <object name="metalGatheredt3" type="text" style="ModernLabelText"/> 691 <object name="totalGatheredt3" type="text" style="ModernLabelText"/> 692 <object name="treasuresCollectedt3" type="text" style="ModernLabelText"/> 693 <object name="resourcesTributedt3" type="text" style="ModernLabelText"/> 694 </object> 695 696 <object type="image" name="noTeamsBox3" size="0 65 100% 100%-50" hidden="true"> 697 <repeat count="8"> 698 <object type="image" name="playerBox3[n]" size="10 0 10 30" hidden="true"> 699 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 700 <object name="playerColourBox3[n]" type="image" size="2 2 22 22"/> 701 </object> 702 <object name="playerName3[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 703 <object name="civIcon3[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 704 <object name="foodGathered[n]" type="text" style="ModernLabelText"/> 705 <object name="woodGathered[n]" type="text" style="ModernLabelText"/> 706 <object name="stoneGathered[n]" type="text" style="ModernLabelText" /> 707 <object name="metalGathered[n]" type="text" style="ModernLabelText"/> 708 <object name="totalGathered[n]" type="text" style="ModernLabelText"/> 709 <object name="treasuresCollected[n]" type="text" style="ModernLabelText"/> 710 <object name="resourcesTributed[n]" type="text" style="ModernLabelText"/> 711 </object> 712 </repeat> 713 </object> 714 </object> 715 716 <object name="marketPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 717 718 <object size="0 0 100% 100%-50"> 719 <object name="playerName4Heading" type="text" style="ModernLeftTabLabelText"> 720 <translatableAttribute id="caption">Player name</translatableAttribute> 721 </object> 722 <object name="exchangedFoodHeading" type="text" style="ModernTabLabelText"> 723 <translatableAttribute id="caption">Food exchanged</translatableAttribute> 724 </object> 725 <object name="exchangedWoodHeading" type="text" style="ModernTabLabelText"> 726 <translatableAttribute id="caption">Wood exchanged</translatableAttribute> 727 </object> 728 <object name="exchangedStoneHeading" type="text" style="ModernTabLabelText"> 729 <translatableAttribute id="caption">Stone exchanged</translatableAttribute> 730 </object> 731 <object name="exchangedMetalHeading" type="text" style="ModernTabLabelText"> 732 <translatableAttribute id="caption">Metal exchanged</translatableAttribute> 733 </object> 734 <object name="barterEfficiencyHeading" type="text" style="ModernTabLabelText"> 735 <translatableAttribute id="caption">Barter efficiency</translatableAttribute> 736 </object> 737 <object name="tradeIncomeHeading" type="text" style="ModernTabLabelText"> 738 <translatableAttribute id="caption">Trade income</translatableAttribute> 739 </object> 740 </object> 741 742 <object type="image" name="teamBox4t0" size="0 65 100% 100%-50" hidden="true"> 743 <object type="text" name="teamNameHeading4t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 744 <object size="0 30 100% 100%"> 745 <repeat count="8"> 746 <object type="image" name="playerBox4t0p[n]" size="10 0 10 30" hidden="true"> 747 <object name="playerColourBox4t0p[n]" type="image" size="10 4 30 24"/> 748 <object name="playerName4t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 749 <object name="civIcon4t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 750 <object name="exchangedFoodt0p[n]" type="text" style="ModernLabelText"/> 751 <object name="exchangedWoodt0p[n]" type="text" style="ModernLabelText"/> 752 <object name="exchangedStonet0p[n]" type="text" style="ModernLabelText"/> 753 <object name="exchangedMetalt0p[n]" type="text" style="ModernLabelText"/> 754 <object name="barterEfficiencyt0p[n]" type="text" style="ModernLabelText"/> 755 <object name="tradeIncomet0p[n]" type="text" style="ModernLabelText"/> 756 </object> 757 </repeat> 758 </object> 759 <object name="teamHeading4t0" type="text" style="ModernLeftTabLabelText"/> 760 <object name="exchangedFoodt0" type="text" style="ModernLabelText"/> 761 <object name="exchangedWoodt0" type="text" style="ModernLabelText"/> 762 <object name="exchangedStonet0" type="text" style="ModernLabelText"/> 763 <object name="exchangedMetalt0" type="text" style="ModernLabelText"/> 764 <object name="barterEfficiencyt0" type="text" style="ModernLabelText"/> 765 <object name="tradeIncomet0" type="text" style="ModernLabelText"/> 766 </object> 767 <object type="image" name="teamBox4t1" size="0 65 100% 100%-50" hidden="true"> 768 <object type="text" name="teamNameHeading4t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 769 <object size="0 30 100% 100%"> 770 <repeat count="8"> 771 <object type="image" name="playerBox4t1p[n]" size="10 0 10 30" hidden="true"> 772 <object name="playerColourBox4t1p[n]" type="image" size="10 4 30 24"/> 773 <object name="playerName4t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 774 <object name="civIcon4t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 775 <object name="exchangedFoodt1p[n]" type="text" style="ModernLabelText"/> 776 <object name="exchangedWoodt1p[n]" type="text" style="ModernLabelText"/> 777 <object name="exchangedStonet1p[n]" type="text" style="ModernLabelText"/> 778 <object name="exchangedMetalt1p[n]" type="text" style="ModernLabelText"/> 779 <object name="barterEfficiencyt1p[n]" type="text" style="ModernLabelText"/> 780 <object name="tradeIncomet1p[n]" type="text" style="ModernLabelText"/> 781 </object> 782 </repeat> 783 </object> 784 <object name="teamHeading4t1" type="text" style="ModernLeftTabLabelText"/> 785 <object name="exchangedFoodt1" type="text" style="ModernLabelText"/> 786 <object name="exchangedWoodt1" type="text" style="ModernLabelText"/> 787 <object name="exchangedStonet1" type="text" style="ModernLabelText"/> 788 <object name="exchangedMetalt1" type="text" style="ModernLabelText"/> 789 <object name="barterEfficiencyt1" type="text" style="ModernLabelText"/> 790 <object name="tradeIncomet1" type="text" style="ModernLabelText"/> 791 </object> 792 <object type="image" name="teamBox4t2" size="0 65 100% 100%-50" hidden="true"> 793 <object type="text" name="teamNameHeading4t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 794 <object size="0 30 100% 100%"> 795 <repeat count="8"> 796 <object type="image" name="playerBox4t2p[n]" size="10 0 10 30" hidden="true"> 797 <object name="playerColourBox4t2p[n]" type="image" size="10 4 30 24"/> 798 <object name="playerName4t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 799 <object name="civIcon4t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 800 <object name="exchangedFoodt2p[n]" type="text" style="ModernLabelText"/> 801 <object name="exchangedWoodt2p[n]" type="text" style="ModernLabelText"/> 802 <object name="exchangedStonet2p[n]" type="text" style="ModernLabelText"/> 803 <object name="exchangedMetalt2p[n]" type="text" style="ModernLabelText"/> 804 <object name="barterEfficiencyt2p[n]" type="text" style="ModernLabelText"/> 805 <object name="tradeIncomet2p[n]" type="text" style="ModernLabelText"/> 806 </object> 807 </repeat> 808 </object> 809 <object name="teamHeading4t2" type="text" style="ModernLeftTabLabelText"/> 810 <object name="exchangedFoodt2" type="text" style="ModernLabelText"/> 811 <object name="exchangedWoodt2" type="text" style="ModernLabelText"/> 812 <object name="exchangedStonet2" type="text" style="ModernLabelText"/> 813 <object name="exchangedMetalt2" type="text" style="ModernLabelText"/> 814 <object name="barterEfficiencyt2" type="text" style="ModernLabelText"/> 815 <object name="tradeIncomet2" type="text" style="ModernLabelText"/> 816 </object> 817 <object type="image" name="teamBox4t3" size="0 65 100% 100%-50" hidden="true"> 818 <object type="text" name="teamNameHeading4t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 819 <object size="0 30 100% 100%"> 820 <repeat count="8"> 821 <object type="image" name="playerBox4t3p[n]" size="10 0 10 30" hidden="true"> 822 <object name="playerColourBox4t3p[n]" type="image" size="10 4 30 24"/> 823 <object name="playerName4t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 824 <object name="civIcon4t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 825 <object name="exchangedFoodt3p[n]" type="text" style="ModernLabelText"/> 826 <object name="exchangedWoodt3p[n]" type="text" style="ModernLabelText"/> 827 <object name="exchangedStonet3p[n]" type="text" style="ModernLabelText"/> 828 <object name="exchangedMetalt3p[n]" type="text" style="ModernLabelText"/> 829 <object name="barterEfficiencyt3p[n]" type="text" style="ModernLabelText"/> 830 <object name="tradeIncomet3p[n]" type="text" style="ModernLabelText"/> 831 </object> 832 </repeat> 833 </object> 834 <object name="teamHeading4t3" type="text" style="ModernLeftTabLabelText"/> 835 <object name="exchangedFoodt3" type="text" style="ModernLabelText"/> 836 <object name="exchangedWoodt3" type="text" style="ModernLabelText"/> 837 <object name="exchangedStonet3" type="text" style="ModernLabelText"/> 838 <object name="exchangedMetalt3" type="text" style="ModernLabelText"/> 839 <object name="barterEfficiencyt3" type="text" style="ModernLabelText"/> 840 <object name="tradeIncomet3" type="text" style="ModernLabelText"/> 841 </object> 842 843 <object type="image" name="noTeamsBox4" size="0 65 100% 100%-50" hidden="true"> 844 <repeat count="8"> 845 <object type="image" name="playerBox4[n]" size="10 0 10 30" hidden="true"> 846 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 847 <object name="playerColourBox4[n]" type="image" size="2 2 22 22"/> 848 </object> 849 <object name="playerName4[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 850 <object name="civIcon4[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 851 <object name="exchangedFood[n]" type="text" style="ModernLabelText"/> 852 <object name="exchangedWood[n]" type="text" style="ModernLabelText"/> 853 <object name="exchangedStone[n]" type="text" style="ModernLabelText"/> 854 <object name="exchangedMetal[n]" type="text" style="ModernLabelText"/> 855 <object name="barterEfficiency[n]" type="text" style="ModernLabelText"/> 856 <object name="tradeIncome[n]" type="text" style="ModernLabelText"/> 857 </object> 858 </repeat> 859 </object> 860 </object> 861 862 <object name="miscPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 863 864 <object size="0 0 100% 100%-50"> 865 <object name="playerName5Heading" type="text" style="ModernLeftTabLabelText"> 866 <translatableAttribute id="caption">Player name</translatableAttribute> 867 </object> 868 <object name="vegetarianRatioHeading" type="text" style="ModernTabLabelText"> 869 <translatableAttribute id="caption">Vegetarian\nratio</translatableAttribute> 870 </object> 871 <object name="feminisationHeading" type="text" style="ModernTabLabelText"> 872 <translatableAttribute id="caption">Feminisation</translatableAttribute> 873 </object> 874 <object name="killDeathRatioHeading" type="text" style="ModernTabLabelText"> 875 <translatableAttribute id="caption">Kill / Death\nratio</translatableAttribute> 876 </object> 877 <object name="mapExplorationHeading" type="text" style="ModernTabLabelText"> 878 <translatableAttribute id="caption">Map\nexploration</translatableAttribute> 879 </object> 880 </object> 881 882 <object type="image" name="teamBox5t0" size="0 65 100% 100%-50" hidden="true"> 883 <object type="text" name="teamNameHeading5t0" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 884 <object size="0 30 100% 100%"> 885 <repeat count="8"> 886 <object type="image" name="playerBox5t0p[n]" size="10 0 10 30" hidden="true"> 887 <object name="playerColourBox5t0p[n]" type="image" size="10 4 30 24"/> 888 <object name="playerName5t0p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 889 <object name="civIcon5t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 890 <object name="vegetarianRatiot0p[n]" type="text" style="ModernLabelText"/> 891 <object name="feminisationt0p[n]" type="text" style="ModernLabelText"/> 892 <object name="killDeathRatiot0p[n]" type="text" style="ModernLabelText"/> 893 <object name="mapExplorationt0p[n]" type="text" style="ModernLabelText"/> 894 </object> 895 </repeat> 896 </object> 897 <object name="teamHeading5t0" type="text" style="ModernLeftTabLabelText"/> 898 <object name="vegetarianRatiot0" type="text" style="ModernLabelText"/> 899 <object name="feminisationt0" type="text" style="ModernLabelText"/> 900 <object name="killDeathRatiot0" type="text" style="ModernLabelText"/> 901 <object name="mapExplorationt0" type="text" style="ModernLabelText"/> 902 </object> 903 <object type="image" name="teamBox5t1" size="0 65 100% 100%-50" hidden="true"> 904 <object type="text" name="teamNameHeading5t1" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 905 <object size="0 30 100% 100%"> 906 <repeat count="8"> 907 <object type="image" name="playerBox5t1p[n]" size="10 0 10 30" hidden="true"> 908 <object name="playerColourBox5t1p[n]" type="image" size="10 4 30 24"/> 909 <object name="playerName5t1p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 910 <object name="civIcon5t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 911 <object name="vegetarianRatiot1p[n]" type="text" style="ModernLabelText"/> 912 <object name="feminisationt1p[n]" type="text" style="ModernLabelText"/> 913 <object name="killDeathRatiot1p[n]" type="text" style="ModernLabelText"/> 914 <object name="mapExplorationt1p[n]" type="text" style="ModernLabelText"/> 915 </object> 916 </repeat> 917 </object> 918 <object name="teamHeading5t1" type="text" style="ModernLeftTabLabelText"/> 919 <object name="vegetarianRatiot1" type="text" style="ModernLabelText"/> 920 <object name="feminisationt1" type="text" style="ModernLabelText"/> 921 <object name="killDeathRatiot1" type="text" style="ModernLabelText"/> 922 <object name="mapExplorationt1" type="text" style="ModernLabelText"/> 923 </object> 924 <object type="image" name="teamBox5t2" size="0 65 100% 100%-50" hidden="true"> 925 <object type="text" name="teamNameHeading5t2" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 926 <object size="0 30 100% 100%"> 927 <repeat count="8"> 928 <object type="image" name="playerBox5t2p[n]" size="10 0 10 30" hidden="true"> 929 <object name="playerColourBox5t2p[n]" type="image" size="10 4 30 24"/> 930 <object name="playerName5t2p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 931 <object name="civIcon5t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 932 <object name="vegetarianRatiot2p[n]" type="text" style="ModernLabelText"/> 933 <object name="feminisationt2p[n]" type="text" style="ModernLabelText"/> 934 <object name="killDeathRatiot2p[n]" type="text" style="ModernLabelText"/> 935 <object name="mapExplorationt2p[n]" type="text" style="ModernLabelText"/> 936 </object> 937 </repeat> 938 </object> 939 <object name="teamHeading5t2" type="text" style="ModernLeftTabLabelText"/> 940 <object name="vegetarianRatiot2" type="text" style="ModernLabelText"/> 941 <object name="feminisationt2" type="text" style="ModernLabelText"/> 942 <object name="killDeathRatiot2" type="text" style="ModernLabelText"/> 943 <object name="mapExplorationt2" type="text" style="ModernLabelText"/> 944 </object> 945 <object type="image" name="teamBox5t3" size="0 65 100% 100%-50" hidden="true"> 946 <object type="text" name="teamNameHeading5t3" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 947 <object size="0 30 100% 100%"> 948 <repeat count="8"> 949 <object type="image" name="playerBox5t3p[n]" size="10 0 10 30" hidden="true"> 950 <object name="playerColourBox5t3p[n]" type="image" size="10 4 30 24"/> 951 <object name="playerName5t3p[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 952 <object name="civIcon5t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 953 <object name="vegetarianRatiot3p[n]" type="text" style="ModernLabelText"/> 954 <object name="feminisationt3p[n]" type="text" style="ModernLabelText"/> 955 <object name="killDeathRatiot3p[n]" type="text" style="ModernLabelText"/> 956 <object name="mapExplorationt3p[n]" type="text" style="ModernLabelText"/> 957 </object> 958 </repeat> 959 </object> 960 <object name="teamHeading5t3" type="text" style="ModernLeftTabLabelText"/> 961 <object name="vegetarianRatiot3" type="text" style="ModernLabelText"/> 962 <object name="feminisationt3" type="text" style="ModernLabelText"/> 963 <object name="killDeathRatiot3" type="text" style="ModernLabelText"/> 964 <object name="mapExplorationt3" type="text" style="ModernLabelText"/> 965 </object> 966 967 <object type="image" name="noTeamsBox5" size="0 65 100% 100%-50" hidden="true"> 968 <repeat count="8"> 969 <object type="image" name="playerBox5[n]" size="10 0 10 30" hidden="true"> 970 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 971 <object name="playerColourBox5[n]" type="image" size="2 2 22 22"/> 972 </object> 973 <object name="playerName5[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 974 <object name="civIcon5[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 975 <object name="vegetarianRatio[n]" type="text" style="ModernLabelText"/> 976 <object name="feminisation[n]" type="text" style="ModernLabelText"/> 977 <object name="killDeathRatio[n]" type="text" style="ModernLabelText"/> 978 <object name="mapExploration[n]" type="text" style="ModernLabelText"/> 979 </object> 980 </repeat> 981 </object> 982 </object> 983 157 984 158 <object type="button" style="StoneButton" size="100%-164 100%-52 100%-24 100%-24"> 985 159 <translatableAttribute id="caption">Continue</translatableAttribute> 986 160 <action on="Press"><![CDATA[ … … 997 171 </action> 998 172 </object> 999 173 </object> 1000 </objects> 174 </objects> 175 No newline at end of file