Ticket #2952: 2952.7.diff
File 2952.7.diff, 121.5 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/summary/counters.js
1 // FUNCTIONS FOR CALCULATING SCORES 2 var teamMiscHelperData = []; 3 4 function resetDataHelpers() 5 { 6 teamMiscHelperData = []; 7 } 8 9 function updateCountersPlayer(playerState, counters, idGUI) 10 { 11 for (var w in counters) 12 { 13 var fn = counters[w].fn; 14 Engine.GetGUIObjectByName(idGUI + "[" + w + "]").caption = fn && fn(playerState, w); 15 } 16 } 17 18 function calculateEconomyScore(playerState, position) 19 { 20 var total = 0 21 for each (var res in playerState.statistics.resourcesGathered) 22 total += res; 23 24 return Math.round(total / 10); 25 } 26 27 function calculateMilitaryScore(playerState, position) 28 { 29 return Math.round((playerState.statistics.enemyUnitsKilledValue + 30 playerState.statistics.enemyBuildingsDestroyedValue) / 10); 31 } 32 33 function calculateExplorationScore(playerState, position) 34 { 35 return playerState.statistics.percentMapExplored * 10; 36 } 37 38 function calculateScoreTotal(playerState, position) 39 { 40 return calculateEconomyScore(playerState) + calculateMilitaryScore(playerState) 41 + calculateExplorationScore(playerState); 42 } 43 44 function calculateScoreTeam(counters) 45 { 46 for (var t in g_Teams) 47 { 48 if (t == -1) 49 continue; 50 51 for (var w in counters) 52 { 53 var total = 0; 54 for (var p = 0; p < g_Teams[t]; ++p) 55 total += (+Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption); 56 57 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = total; 58 } 59 } 60 } 61 62 function calculateBuildings(playerState, position) 63 { 64 var type = BUILDINGS_TYPES[position]; 65 return TRAINED_COLOR + playerState.statistics.buildingsConstructed[type] + '[/color] / ' + 66 LOST_COLOR + playerState.statistics.buildingsLost[type] + '[/color] / ' + 67 KILLED_COLOR + playerState.statistics.enemyBuildingsDestroyed[type] + '[/color]'; 68 } 69 70 function calculateColorsTeam(counters) 71 { 72 for (var t in g_Teams) 73 { 74 if (t == -1) 75 continue; 76 77 for (var w in counters) 78 { 79 var total = { 80 c : 0, 81 l : 0, 82 d : 0 83 }; 84 for (var p = 0; p < g_Teams[t]; ++p) 85 { 86 var caption = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption; 87 // clean [Color=""], [/Color] and white space for make the sum more easy 88 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s/g, ""); 89 90 var splitCaption = caption.split("/"); 91 92 total.c += (+splitCaption[0]); 93 total.l += (+splitCaption[1]); 94 total.d += (+splitCaption[2]); 95 } 96 var teamTotal = TRAINED_COLOR + total.c + '[/color] / ' + 97 LOST_COLOR + total.l + '[/color] / ' + KILLED_COLOR + total.d + '[/color]'; 98 99 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 100 } 101 } 102 } 103 104 function calculateUnits(playerState, position) 105 { 106 var type = UNITS_TYPES[position]; 107 return TRAINED_COLOR + playerState.statistics.unitsTrained[type] + '[/color] / ' + 108 LOST_COLOR + playerState.statistics.unitsLost[type] + '[/color] / ' + 109 KILLED_COLOR + playerState.statistics.enemyUnitsKilled[type] + '[/color]'; 110 } 111 112 function calculateResources(playerState, position) 113 { 114 var type = RESOURCES_TYPES[position]; 115 return INCOME_COLOR + playerState.statistics.resourcesGathered[type] + '[/color] / ' + 116 OUTCOME_COLOR + (playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]) + '[/color]'; 117 } 118 119 function calculateTotalResources(playerState, position) 120 { 121 var totalGathered = 0; 122 var totalUsed = 0; 123 124 for each (var type in RESOURCES_TYPES) 125 { 126 totalGathered += playerState.statistics.resourcesGathered[type]; 127 totalUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 128 } 129 130 return INCOME_COLOR + totalGathered + '[/color] / ' + OUTCOME_COLOR + totalUsed + '[/color]'; 131 } 132 133 function calculateTreasureCollected(playerState, position) 134 { 135 return playerState.statistics.treasuresCollected; 136 } 137 138 function calculateTributeSent(playerState, position) 139 { 140 return INCOME_COLOR + playerState.statistics.tributesSent + "[/color] / " + OUTCOME_COLOR + playerState.statistics.tributesReceived + "[/color]"; 141 } 142 143 function calculateResourcesTeam(counters) 144 { 145 for (var t in g_Teams) 146 { 147 if (t == -1) 148 continue; 149 150 for (var w in counters) 151 { 152 var teamTotal = "undefined"; 153 154 var total = { 155 i : 0, 156 o : 0 157 }; 158 for (var p = 0; p < g_Teams[t]; ++p) 159 { 160 var caption = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption; 161 // clean [Color=""], [/Color] and white space for make the sum more easy 162 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s/g, ""); 163 164 if (w == 5) 165 total.i += (+caption); 166 else 167 { 168 var splitCaption = caption.split("/"); 169 170 total.i += (+splitCaption[0]); 171 total.o += (+splitCaption[1]); 172 } 173 } 174 175 if (w == 5) 176 teamTotal = total.i; 177 else 178 teamTotal = INCOME_COLOR + total.i + "[/color] / " + OUTCOME_COLOR + total.o + "[/color]"; 179 180 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 181 } 182 } 183 } 184 185 function calculateResourceExchanged(playerState, position) 186 { 187 var type = RESOURCES_TYPES[position]; 188 return INCOME_COLOR + '+' + playerState.statistics.resourcesBought[type] + '[/color] ' + 189 OUTCOME_COLOR + '-' + playerState.statistics.resourcesSold[type] + '[/color]'; 190 } 191 192 function calculateBatteryEfficiency(playerState, position) 193 { 194 var totalBought = 0; 195 for each (var boughtAmount in playerState.statistics.resourcesBought) 196 totalBought += boughtAmount; 197 var totalSold = 0; 198 for each (var soldAmount in playerState.statistics.resourcesSold) 199 totalSold += soldAmount; 200 201 return Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 202 } 203 204 function calculateTradeIncome(playerState, position) 205 { 206 return playerState.statistics.tradeIncome; 207 } 208 209 function calculateMarketTeam(counters) 210 { 211 for (var t in g_Teams) 212 { 213 if (t == -1) 214 continue; 215 216 for (var w in counters) 217 { 218 var teamTotal = "undefined"; 219 220 var total = { 221 i : 0, 222 o : 0 223 }; 224 for (var p = 0; p < g_Teams[t]; ++p) 225 { 226 var caption = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption; 227 // clean [Color=""], [/Color], white space, + and % for make the sum more easy 228 caption = caption.replace(/\[([\w\' \\\"\/\=]*)\]|\s|\+|\%/g, ""); 229 230 if (w >= 4) 231 total.i += (+caption); 232 else 233 { 234 var splitCaption = caption.split("-"); 235 total.i += (+splitCaption[0]); 236 total.o += (+splitCaption[1]); 237 } 238 } 239 240 if (w >= 4) 241 teamTotal = total.i +(w == 4 ? "%" : ""); 242 else 243 teamTotal = INCOME_COLOR + '+' + total.i + '[/color] ' + OUTCOME_COLOR + '-' + total.o + '[/color]'; 244 245 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 246 } 247 } 248 } 249 250 function calculateVegetarianRatio(playerState, position) 251 { 252 if (!teamMiscHelperData[playerState.team]) 253 teamMiscHelperData[playerState.team] = []; 254 if (!teamMiscHelperData[playerState.team][position]) 255 teamMiscHelperData[playerState.team][position] = {"food": 0, "vegetarianFood": 0}; 256 257 if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food) 258 { 259 teamMiscHelperData[playerState.team][position].food += playerState.statistics.resourcesGathered.food; 260 teamMiscHelperData[playerState.team][position].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood; 261 return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%"; 262 } 263 else 264 return 0 + "%"; 265 } 266 267 function calculateFeminisation(playerState, position) 268 { 269 if (!teamMiscHelperData[playerState.team]) 270 teamMiscHelperData[playerState.team] = []; 271 if (!teamMiscHelperData[playerState.team][position]) 272 teamMiscHelperData[playerState.team][position] = {"Female": 0, "Worker": 0}; 273 274 if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female) 275 { 276 teamMiscHelperData[playerState.team][position].Female = playerState.statistics.unitsTrained.Female; 277 teamMiscHelperData[playerState.team][position].Worker = playerState.statistics.unitsTrained.Worker; 278 return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%"; 279 } 280 else 281 return 0 + "%"; 282 } 283 284 function calculateKillDeathRatio(playerState, position) 285 { 286 if (!teamMiscHelperData[playerState.team]) 287 teamMiscHelperData[playerState.team] = []; 288 if (!teamMiscHelperData[playerState.team][position]) 289 teamMiscHelperData[playerState.team][position] = {"enemyUnitsKilled": 0, "unitsLost": 0}; 290 291 teamMiscHelperData[playerState.team][position].enemyUnitsKilled = playerState.statistics.enemyUnitsKilled.total; 292 teamMiscHelperData[playerState.team][position].unitsLost = playerState.statistics.unitsLost.total; 293 294 if (!playerState.statistics.enemyUnitsKilled.total) 295 return DEFAULT_DECIMAL; 296 if (!playerState.statistics.unitsLost.total) // and enemyUnitsKilled.total > 0 297 return INFINITE_SYMBOL; // infinity symbol 298 299 return Math.round((playerState.statistics.enemyUnitsKilled.total / playerState.statistics.unitsLost.total)*100)/100; 300 } 301 302 function calculateMapExploration(playerState, position) 303 { 304 if (!teamMiscHelperData[playerState.team]) 305 teamMiscHelperData[playerState.team] = []; 306 307 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapExplored; 308 return playerState.statistics.percentMapExplored + "%"; 309 } 310 311 function calculateMiscellaneous(counters) 312 { 313 for (var t in g_Teams) 314 { 315 if (t == -1) 316 continue; 317 318 for (var w in counters) 319 { 320 var teamTotal = "undefined"; 321 322 if (w == 0) 323 teamTotal = (teamMiscHelperData[t][w].food == 0 ? "0" : Math.floor((teamMiscHelperData[t][w].vegetarianFood / teamMiscHelperData[t][w].food) * 100)) + "%"; 324 else if (w == 1) 325 teamTotal = (teamMiscHelperData[t][w].Worker == 0 ? "0" : Math.floor((teamMiscHelperData[t][w].Female / teamMiscHelperData[t][w].Worker) * 100)) + "%"; 326 else if (w == 2) 327 { 328 if (!teamMiscHelperData[t][w].enemyUnitsKilled) 329 teamTotal = DEFAULT_DECIMAL; 330 else if (!teamMiscHelperData[t][w].unitsLost) // and enemyUnitsKilled.total > 0 331 teamTotal = INFINITE_SYMBOL; // infinity symbol 332 else 333 teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100; 334 } 335 else if (w == 3) 336 teamTotal = teamMiscHelperData[t][w] + "%"; 337 338 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; 339 } 340 } 341 } 342 No newline at end of file -
binaries/data/mods/public/gui/summary/layout.js
1 var panelsData = [ 2 { // Scores panel 3 "headings": [ // headings on score panel 4 { "caption": translate("Player name"),"yStart": 26, "width": 200 }, 5 { "caption": translate("Economy score"),"yStart": 16, "width": 100 }, 6 { "caption": translate("Military score"),"yStart": 16, "width": 100 }, 7 { "caption": translate("Exploration score"),"yStart": 16, "width": 100 }, 8 { "caption": translate("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": translate("Player name"), "yStart": 26, "width": 200 }, 22 { "caption": translate("Total"), "yStart": 34, "width": 105 }, 23 { "caption": translate("Houses"), "yStart": 34, "width": 85 }, 24 { "caption": translate("Economic"), "yStart": 34, "width": 85 }, 25 { "caption": translate("Outposts"), "yStart": 34, "width": 85 }, 26 { "caption": translate("Military"), "yStart": 34, "width": 85 }, 27 { "caption": translate("Fortresses"), "yStart": 34, "width": 85 }, 28 { "caption": translate("Civ centers"), "yStart": 34, "width": 85 }, 29 { "caption": translate("Wonders"), "yStart": 34, "width": 85 } 30 ], 31 "titleHeadings": [ 32 { "caption": translate("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": translate("Player name"), "yStart": 26, "width": 200 }, 49 { "caption": translate("Total"), "yStart": 34, "width": 120 }, 50 { "caption": translate("Infantry"), "yStart": 34, "width": 100 }, 51 { "caption": translate("Worker"), "yStart": 34, "width": 100 }, 52 { "caption": translate("Cavalry"), "yStart": 34, "width": 100 }, 53 { "caption": translate("Champion"), "yStart": 34, "width": 100 }, 54 { "caption": translate("Heroes"), "yStart": 34, "width": 100 }, 55 { "caption": translate("Navy"), "yStart": 34, "width": 100 } 56 ], 57 "titleHeadings": [ 58 { "caption": translate("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": translate("Player name"), "yStart": 26, "width": 200 }, 74 { "caption": translate("Food"), "yStart": 34, "width": 100 }, 75 { "caption": translate("Wood"), "yStart": 34, "width": 100 }, 76 { "caption": translate("Stone"), "yStart": 34, "width": 100 }, 77 { "caption": translate("Metal"), "yStart": 34, "width": 100 }, 78 { "caption": translate("Total"), "yStart": 34, "width": 110 }, 79 { "caption": translate("Treasures collected"), "yStart": 16, "width": 100 }, 80 { "caption": translate("Tributes (Sent / Received)"), "yStart": 16, "width": 121 } 81 ], 82 "titleHeadings": [ 83 { "caption": translate("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": translate("Player name"), "yStart": 26, "width": 200 }, 99 { "caption": translate("Food exchanged"), "yStart": 16, "width": 100 }, 100 { "caption": translate("Wood exchanged"), "yStart": 16, "width": 100 }, 101 { "caption": translate("Stone exchanged"), "yStart": 16, "width": 100 }, 102 { "caption": translate("Metal exchanged"), "yStart": 16, "width": 100 }, 103 { "caption": translate("Barter efficiency"), "yStart": 16, "width": 100 }, 104 { "caption": translate("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": translate("Player name"), "yStart": 26, "width": 200 }, 120 { "caption": translate("Vegetarian\nratio"), "yStart": 16, "width": 100 }, 121 { "caption": translate("Feminisation"), "yStart": 26, "width": 100 }, 122 { "caption": translate("Kill / Death\nratio"), "yStart": 16, "width": 100 }, 123 { "caption": translate("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 for (var h = 0; h < MAX_HEADINGTITLE; ++h) 139 { 140 Engine.GetGUIObjectByName("titleHeading["+ h +"]").hidden = true; 141 Engine.GetGUIObjectByName("Heading[" + h + "]").hidden = true; 142 for (var p = 0; p < MAX_SLOTS; ++p) 143 { 144 Engine.GetGUIObjectByName("valueData[" + p + "][" + h + "]").hidden = true; 145 for (var t = 0; t < MAX_TEAMS; ++t) 146 { 147 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + h + "]").hidden = true; 148 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + h + "]").hidden = true; 149 } 150 } 151 } 152 } 153 154 function updateGeneralPanelHeadings(headings) 155 { 156 var left = 50; 157 for (var h in headings) 158 { 159 var headerGUIName = "playerNameHeading"; 160 if (h > 0) 161 headerGUIName = "Heading[" + (h - 1) + "]"; 162 163 var headerGUI = Engine.GetGUIObjectByName(headerGUIName); 164 headerGUI.caption = headings[h].caption; 165 headerGUI.size = left + " " + headings[h].yStart + " " + (left + headings[h].width) + " 100%"; 166 headerGUI.hidden = false; 167 168 if (headings[h].width < LONG_HEADING_WIDTH) 169 left += headings[h].width; 170 } 171 } 172 173 function updateGeneralPanelTitles(titleHeadings) 174 { 175 var left = 250; 176 for (var th in titleHeadings) 177 { 178 if (th >= MAX_HEADINGTITLE) 179 break; 180 181 var headerGUI = Engine.GetGUIObjectByName("titleHeading["+ th +"]"); 182 headerGUI.caption = titleHeadings[th].caption; 183 headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%"; 184 headerGUI.hidden = false; 185 } 186 } 187 188 function updateGeneralPanelCounter(counters) 189 { 190 var rowPlayerObjectWidth = 0; 191 var left = 0; 192 for (var p = 0; p < MAX_SLOTS; ++p) 193 { 194 left = 240; 195 var counterObject; 196 for (var w in counters) 197 { 198 counterObject = Engine.GetGUIObjectByName("valueData[" + p + "][" + w + "]"); 199 counterObject.size = left + " 6 " + (left + counters[w].width) + " 100%"; 200 counterObject.hidden = false; 201 left += counters[w].width; 202 } 203 if (rowPlayerObjectWidth == 0) 204 rowPlayerObjectWidth = left; 205 206 var counterTotalObject; 207 for (var t = 0; t < MAX_TEAMS; ++t) 208 { 209 left = 240; 210 for (var w in counters) 211 { 212 counterObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]"); 213 counterObject.size = left + " 6 " + (left + counters[w].width) + " 100%"; 214 counterObject.hidden = false; 215 216 if (g_Teams[t]) 217 { 218 var yStart = 30 + g_Teams[t] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 219 counterTotalObject = Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]"); 220 counterTotalObject.size = (left + 20) + " " + yStart + " " + (left + counters[w].width) + " 100%"; 221 counterTotalObject.hidden = false; 222 } 223 224 left += counters[w].width; 225 } 226 } 227 } 228 return rowPlayerObjectWidth; 229 } 230 231 function updateGeneralPanelTeams() 232 { 233 if (!g_Teams || g_WithoutTeam > 0) 234 Engine.GetGUIObjectByName("noTeamsBox").hidden = false; 235 236 if (!g_Teams) 237 return; 238 239 var yStart = TEAMS_BOX_Y_START + g_WithoutTeam * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 240 for (var i = 0; i < g_Teams.length; ++i) 241 { 242 var teamBox = Engine.GetGUIObjectByName("teamBoxt["+i+"]"); 243 teamBox.hidden = false; 244 var teamBoxSize = teamBox.size; 245 teamBoxSize.top = yStart; 246 teamBox.size = teamBoxSize; 247 248 yStart += 30 + g_Teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 32; 249 250 Engine.GetGUIObjectByName("teamNameHeadingt["+i+"]").caption = "Team "+(i+1); 251 252 var teamHeading = Engine.GetGUIObjectByName("teamHeadingt["+i+"]"); 253 var yStartTotal = 30 + g_Teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 254 teamHeading.size = "50 "+yStartTotal+" 100% "+(yStartTotal+20); 255 teamHeading.caption = translate("Team total"); 256 } 257 // If there are no players without team, hide "player name" heading 258 if (!g_WithoutTeam) 259 Engine.GetGUIObjectByName("playerNameHeading").caption = ""; 260 } 261 262 function updateObjectPlayerPosition() 263 { 264 for (var h = 0; h < MAX_SLOTS; ++h) 265 { 266 var playerBox = Engine.GetGUIObjectByName("playerBox[" + h + "]"); 267 var boxSize = playerBox.size; 268 boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 269 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 270 playerBox.size = boxSize; 271 272 for (var i = 0; i < MAX_TEAMS; ++i) 273 { 274 var playerBoxt = Engine.GetGUIObjectByName("playerBoxt[" + i + "][" + h + "]"); 275 boxSize = playerBoxt.size; 276 boxSize.top += h * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 277 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 278 playerBoxt.size = boxSize; 279 }; 280 }; 281 } 282 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 const DEFAULT_DECIMAL = "0.00"; 32 const INFINITE_SYMBOL = "\u221E"; 33 // Load data 34 var g_CivData = loadCivData(); 35 var g_Teams = [ ]; 36 // TODO set g_MaxPlayers as playerCounters.length 37 var g_MaxPlayers = 0; 38 // Count players without team (or all if teams are not displayed) 39 var g_WithoutTeam = 0; 40 var g_GameData; 41 4 42 /** 5 43 * Select active panel 6 44 * @param panelNumber Number of panel, which should get active state (integer) … … 7 45 */ 8 46 function selectPanel(panelNumber) 9 47 { 10 var panelNames = [ 'scorePanel', 'buildingsPanel', 'unitsPanel', 'resourcesPanel', 'marketPanel', 'miscPanel' 11 48 var panelNames = [ 'scorePanel', 'buildingsPanel', 'unitsPanel', 'resourcesPanel', 'marketPanel', 'miscPanel']; 49 12 50 function adjustTabDividers(tabSize) 13 51 { 14 52 var leftSpacer = Engine.GetGUIObjectByName("tabDividerLeft"); … … 16 54 leftSpacer.size = "20 " + leftSpacer.size.top + " " + (tabSize.left + 2) + " " + leftSpacer.size.bottom; 17 55 rightSpacer.size = (tabSize.right - 2) + " " + rightSpacer.size.top + " 100%-20 " + rightSpacer.size.bottom; 18 56 } 19 20 for (var i = 0; i < panelNames.length; i++)57 58 for (var i = 0; i < panelNames.length; ++i) 21 59 { 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 } 60 Engine.GetGUIObjectByName(panelNames[i] + 'Button').sprite = "BackgroundTab"; 33 61 } 62 63 Engine.GetGUIObjectByName(panelNames[panelNumber] + 'Button').sprite = "ForegroundTab"; 64 adjustTabDividers(Engine.GetGUIObjectByName(panelNames[panelNumber] + 'Button').size); 65 66 updatePanelData(panelsData[panelNumber]); 34 67 } 35 68 36 function init(data)69 function updatePanelData(panelInfo) 37 70 { 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"]'; 71 resetGeneralPanel(); 72 resetDataHelpers(); 73 updateGeneralPanelHeadings(panelInfo.headings); 74 updateGeneralPanelTitles(panelInfo.titleHeadings); 75 var rowPlayerObjectWidth = updateGeneralPanelCounter(panelInfo.counters); 76 updateGeneralPanelTeams(); 58 77 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) 78 var playerBoxesCounts = [ ]; 79 for (var i = 0; i < g_MaxPlayers; ++i) 199 80 { 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) + "%"; 81 var playerState = g_GameData.playerStates[i+1]; 82 83 if (!playerBoxesCounts[playerState.team+1]) 84 playerBoxesCounts[playerState.team+1] = 1; 281 85 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 } 86 playerBoxesCounts[playerState.team+1] += 1; 311 87 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) 88 var positionObject = playerBoxesCounts[playerState.team+1] - 1; 89 var rowPlayer = "playerBox[" + positionObject + "]"; 90 var playerNameColumn = "playerName[" + positionObject + "]"; 91 var playerColourBoxColumn = "playerColourBox[" + positionObject + "]"; 92 var playerCivicBoxColumn = "civIcon[" + positionObject + "]"; 93 var playerCounterValue = "valueData[" + positionObject + "]"; 94 if (playerState.team != -1) 324 95 { 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; 96 rowPlayer = "playerBoxt[" + playerState.team + "][" + positionObject + "]"; 97 playerNameColumn = "playerNamet[" + playerState.team + "][" + positionObject + "]"; 98 playerColourBoxColumn = "playerColourBoxt[" + playerState.team + "][" + positionObject + "]"; 99 playerCivicBoxColumn = "civIcont[" + playerState.team + "][" + positionObject + "]"; 100 playerCounterValue = "valueDataTeam[" + playerState.team + "][" + positionObject + "]"; 329 101 } 330 102 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]'; 103 var colourString = "colour: " 104 + Math.floor(playerState.colour.r * 255) + " " 105 + Math.floor(playerState.colour.g * 255) + " " 106 + Math.floor(playerState.colour.b * 255); 107 108 var rowPlayerObject = Engine.GetGUIObjectByName(rowPlayer); 109 rowPlayerObject.hidden = false; 110 rowPlayerObject.sprite = colourString + PLAYER_BOX_ALPHA; 111 var boxSize = rowPlayerObject.size; 112 boxSize.right = rowPlayerObjectWidth; 113 rowPlayerObject.size = boxSize; 114 115 var playerColourBox = Engine.GetGUIObjectByName(playerColourBoxColumn); 116 playerColourBox.sprite = colourString + PLAYER_COLOUR_BOX_ALPHA; 117 118 Engine.GetGUIObjectByName(playerNameColumn).caption = g_GameData.players[i+1].name; 119 120 var civIcon = Engine.GetGUIObjectByName(playerCivicBoxColumn); 121 civIcon.sprite = "stretched:"+g_CivData[playerState.civ].Emblem; 122 civIcon.tooltip = g_CivData[playerState.civ].Name; 123 124 // update counters 125 updateCountersPlayer(playerState, panelInfo.counters, playerCounterValue); 338 126 } 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(); 127 // update team counters 128 var teamCounterFn = panelInfo.teamCounterFn 129 if (g_Teams && teamCounterFn) 130 teamCounterFn(panelInfo.counters); 131 } 132 133 function init(data) 134 { 135 updateObjectPlayerPosition(); 136 g_GameData = data; 137 507 138 // Map 508 139 var mapDisplayType = translate("Scenario"); 509 140 … … 529 160 } 530 161 531 162 Engine.GetGUIObjectByName("mapName").caption = sprintf(translate("%(mapName)s - %(mapType)s"), { mapName: translate(data.mapSettings.Name), mapType: mapDisplayType}); 532 163 533 164 // Panels 534 // Align headers 535 var left = 50; 536 for each (var panel in panels) // for all panels 537 alignHeaders(panel.headings); 165 g_MaxPlayers = data.playerStates.length - 1; 538 166 539 // TODO set maxPlayers as playerCounters.length540 var maxPlayers = data.playerStates.length - 1;541 var maxTeams = 0;542 543 var teams = [ ];544 167 if (data.mapSettings.LockTeams) // teams ARE locked 545 168 { 546 169 // count teams 547 for(var t = 0; t < maxPlayers; ++t)170 for(var t = 0; t < g_MaxPlayers; ++t) 548 171 { 549 if (! teams[data.playerStates[t+1].team])172 if (!g_Teams[data.playerStates[t+1].team]) 550 173 { 551 teams[data.playerStates[t+1].team] = 1;174 g_Teams[data.playerStates[t+1].team] = 1; 552 175 continue; 553 176 } 554 teams[data.playerStates[t+1].team]++;177 g_Teams[data.playerStates[t+1].team]++; 555 178 } 556 557 if ( teams.length == maxPlayers)558 teams = false; // Each player has his own team. Displaying teams makes no sense.179 180 if (g_Teams.length == g_MaxPlayers) 181 g_Teams = false; // Each player has his own team. Displaying teams makes no sense. 559 182 } 560 183 else // teams are NOT locked 561 teams = false;562 184 g_Teams = false; 185 563 186 // Erase teams data if teams are not displayed 564 if (! teams)187 if (!g_Teams) 565 188 { 566 for(var p = 0; p < maxPlayers; ++p)189 for(var p = 0; p < g_MaxPlayers; ++p) 567 190 data.playerStates[p+1].team = -1; 568 191 } 569 570 // Count players without team (or all if teams are not displayed) 571 var withoutTeam = maxPlayers; 572 if (teams) 192 193 g_WithoutTeam = g_MaxPlayers; 194 if (g_Teams) 573 195 { 574 196 // count players without team (or all if teams are not displayed) 575 for (var i = 0; i < teams.length; ++i) 576 withoutTeam -= teams[i]; 577 578 // Display teams boxes 579 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 scores 596 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" heading 604 if (!withoutTeam) 605 Engine.GetGUIObjectByName("playerName"+p+"Heading").caption = ""; 606 607 p++; 608 } 197 for (var i = 0; i < g_Teams.length; ++i) 198 g_WithoutTeam -= g_Teams[i]; 609 199 } 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 200 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 201 selectPanel(0); 825 } 202 } 203 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/counters.js"/> 13 <script file="gui/summary/layout.js"/> 12 14 <script file="gui/summary/summary.js"/> 13 15 14 16 <object type="image" … … 59 61 <translatableAttribute id="caption">Score</translatableAttribute> 60 62 </object> 61 63 </object> 62 64 63 65 <object name="buildingsPanelButton" type="button" sprite="BackgroundTab" size="142 92 260 120"> 64 66 <action on="Press">selectPanel(1);</action> 65 67 <object type="text" style="TitleText" ghost="true"> … … 87 89 <translatableAttribute id="caption">Market</translatableAttribute> 88 90 </object> 89 91 </object> 90 92 91 93 <object name="miscPanelButton" type="button" sprite="BackgroundTab" size="638 92 756 120"> 92 94 <action on="Press">selectPanel(5);</action> 93 95 <object type="text" style="TitleText" ghost="true"> … … 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> 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"/> 105 <repeat var="x" count="8"> 106 <object name="titleHeading[x]" type="text" style="ModernTabLabelText"> 215 107 </object> 216 108 </repeat> 217 </object> 218 </object> 219 220 <object name="buildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 221 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"/> 109 <repeat var="x" count="8"> 110 <object name="Heading[x]" type="text" style="ModernTabLabelText"> 111 <translatableAttribute id="caption">Demo</translatableAttribute> 389 112 </object> 390 113 </repeat> 391 114 </object> 392 </object>393 394 <object name="unitsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">395 115 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"/> 441 </object> 442 </repeat> 443 </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> 534 535 <object type="image" name="noTeamsBox2" size="0 65 100% 100%-50" hidden="true"> 536 <repeat count="8"> 537 <object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true"> 538 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 539 <object name="playerColourBox2[n]" type="image" size="2 2 22 22"/> 540 </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"/> 116 <repeat count="4" var="i"> 117 <object type="image" name="teamBoxt[i]" size="0 65 100% 100%-50" hidden="true"> 118 <object type="text" name="teamNameHeadingt[i]" size="15 5 100% 100%" style="ModernLeftTabLabelText"/> 119 <object size="0 30 100% 100%"> 120 <repeat count="8" var="n"> 121 <object type="image" name="playerBoxt[i][n]" size="10 0 10 30" hidden="true"> 122 <object name="playerColourBoxt[i][n]" type="image" size="10 4 30 24"/> 123 <object name="playerNamet[i][n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText" /> 124 <object name="civIcont[i][n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 125 <repeat var="x" count="8"> 126 <object name="valueDataTeam[i][n][x]" type="text" style="ModernTabLabelText"> 127 <translatableAttribute id="caption">DemoOhsi</translatableAttribute> 128 </object> 129 </repeat> 130 </object> 131 </repeat> 550 132 </object> 551 </repeat> 552 </object> 553 </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"/> 133 <object name="teamHeadingt[i]" type="text" style="ModernLeftTabLabelText"/> 134 <repeat var="x" count="8"> 135 <object name="valueDataTeam[i][x]" type="text" style="ModernTabLabelText"> 136 <translatableAttribute id="caption">DemoNormal</translatableAttribute> 602 137 </object> 603 138 </repeat> 604 139 </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"> 140 </repeat> 717 141 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"> 142 <object type="image" name="noTeamsBox" size="0 65 100% 100%-50" hidden="true"> 844 143 <repeat count="8"> 845 <object type="image" name="playerBox 4[n]" size="10 0 10 30" hidden="true">144 <object type="image" name="playerBox[n]" size="10 0 10 30" hidden="true"> 846 145 <object type="image" sprite="ForegroundBox" size="10 4 34 28"> 847 <object name="playerColourBox 4[n]" type="image" size="2 2 22 22"/>146 <object name="playerColourBox[n]" type="image" size="2 2 22 22"/> 848 147 </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"/> 148 <object name="playerName[n]" type="text" size="40 2 208 100%" style="ModernLeftLabelText"/> 149 <object name="civIcon[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 150 <repeat var="x" count="8"> 151 <object name="valueData[n][x]" type="text" style="ModernTabLabelText"> 152 <translatableAttribute id="caption">DemoValueData</translatableAttribute> 153 </object> 154 </repeat> 857 155 </object> 858 156 </repeat> 859 157 </object> 860 158 </object> 861 159 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 984 160 <object type="button" style="StoneButton" size="100%-164 100%-52 100%-24 100%-24"> 985 161 <translatableAttribute id="caption">Continue</translatableAttribute> 986 162 <action on="Press"><![CDATA[ … … 997 173 </action> 998 174 </object> 999 175 </object> 1000 </objects> 176 </objects> 177 No newline at end of file