Ticket #2749: t2749_ceasefire_v3.patch
File t2749_ceasefire_v3.patch, 31.2 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/common/global.xml
24 24 hidden="true" 25 25 hotkey="fps.toggle" 26 26 sprite="color: 0 0 0 200" 27 27 font="mono-stroke-10" 28 28 textcolor="white" 29 size="100%- 80 70 100%-10 90"29 size="100%-130 50 100%-60 70" 30 30 z="199" 31 31 > 32 32 <action on="Tick"> 33 33 this.hidden = Engine.ConfigDB_GetValue("user", "overlay.fps") !== "true"; 34 34 updateFPS(); … … 50 50 hidden="true" 51 51 hotkey="realtime.toggle" 52 52 sprite="color: 0 0 0 200" 53 53 font="mono-stroke-10" 54 54 textcolor="white" 55 size="100%- 80 100 100%-10 120"55 size="100%-130 80 100%-60 100" 56 56 z="199" 57 57 > 58 58 <action on="Tick"> 59 59 this.hidden = Engine.ConfigDB_GetValue("user", "overlay.realtime") !== "true"; 60 60 this.caption = (new Date()).toLocaleTimeString(); -
binaries/data/mods/public/gui/gamesetup/gamesetup.js
12 12 const POPULATION_CAP_DEFAULTIDX = 5; 13 13 // Translation: Amount of starting resources. 14 14 const STARTING_RESOURCES = [translateWithContext("startingResources", "Very Low"), translateWithContext("startingResources", "Low"), translateWithContext("startingResources", "Medium"), translateWithContext("startingResources", "High"), translateWithContext("startingResources", "Very High"), translateWithContext("startingResources", "Deathmatch")]; 15 15 const STARTING_RESOURCES_DATA = [100, 300, 500, 1000, 3000, 50000]; 16 16 const STARTING_RESOURCES_DEFAULTIDX = 1; 17 // Translation: Ceasefire. 18 const CEASEFIRE = [translateWithContext("ceasefire", "No ceasefire"), translateWithContext("ceasefire", "15 seconds"), translateWithContext("ceasefire", "5 minutes"), translateWithContext("ceasefire", "10 minutes"), translateWithContext("ceasefire", "15 minutes"), translateWithContext("ceasefire", "20 minutes"), translateWithContext("ceasefire", "30 minutes"), translateWithContext("ceasefire", "45 minutes"), translateWithContext("ceasefire", "60 minutes")]; 19 const CEASEFIRE_DATA = [0, 0.25, 5, 10, 15, 20, 30, 45, 60]; 20 const CEASEFIRE_DEFAULTIDX = 0; 17 21 // Max number of players for any map 18 22 const MAX_PLAYERS = 8; 19 23 20 24 //////////////////////////////////////////////////////////////////////////////////////////////// 21 25 … … 203 207 g_GameAttributes.settings.StartingResources = STARTING_RESOURCES_DATA[this.selected]; 204 208 205 209 updateGameAttributes(); 206 210 } 207 211 212 var ceasefireL = Engine.GetGUIObjectByName("ceasefire"); 213 ceasefireL.list = CEASEFIRE; 214 ceasefireL.list_data = CEASEFIRE_DATA; 215 ceasefireL.selected = CEASEFIRE_DEFAULTIDX; 216 ceasefireL.onSelectionChange = function() { 217 if (this.selected != -1) 218 g_GameAttributes.settings.Ceasefire = CEASEFIRE_DATA[this.selected]; 219 220 updateGameAttributes(); 221 } 222 208 223 var victoryConditions = Engine.GetGUIObjectByName("victoryCondition"); 209 224 var victories = getVictoryConditions(); 210 225 victoryConditions.list = victories.text; 211 226 victoryConditions.list_data = victories.data; 212 227 victoryConditions.onSelectionChange = function() { … … 738 753 { 739 754 var startingResourcesBox = Engine.GetGUIObjectByName("startingResources"); 740 755 startingResourcesBox.selected = startingResourcesBox.list_data.indexOf(mapSettings.StartingResources); 741 756 } 742 757 758 if (mapSettings.Ceasefire) 759 { 760 var ceasefireBox = Engine.GetGUIObjectByName("ceasefire"); 761 ceasefireBox.selected = ceasefireBox.list_data.indexOf(mapSettings.Ceasefire); 762 } 763 743 764 if (attrs.gameSpeed) 744 765 { 745 766 var gameSpeedBox = Engine.GetGUIObjectByName("gameSpeed"); 746 767 gameSpeedBox.selected = g_GameSpeeds.speeds.indexOf(attrs.gameSpeed); 747 768 } … … 1141 1162 { 1142 1163 var startingResourcesBox = Engine.GetGUIObjectByName("startingResources"); 1143 1164 startingResourcesBox.selected = startingResourcesBox.list_data.indexOf(mapSettings.StartingResources); 1144 1165 } 1145 1166 1167 if (mapSettings.Ceasefire) 1168 { 1169 var ceasefireBox = Engine.GetGUIObjectByName("ceasefire"); 1170 ceasefireBox.selected = ceasefireBox.list_data.indexOf(mapSettings.Ceasefire); 1171 } 1172 1146 1173 initMapNameList(); 1147 1174 } 1148 1175 1149 1176 // Controls common to all map types 1150 1177 var numPlayersSelection = Engine.GetGUIObjectByName("numPlayersSelection"); … … 1156 1183 var mapSize = Engine.GetGUIObjectByName("mapSize"); 1157 1184 var enableCheats = Engine.GetGUIObjectByName("enableCheats"); 1158 1185 var enableRating = Engine.GetGUIObjectByName("enableRating"); 1159 1186 var populationCap = Engine.GetGUIObjectByName("populationCap"); 1160 1187 var startingResources = Engine.GetGUIObjectByName("startingResources"); 1188 var ceasefire = Engine.GetGUIObjectByName("ceasefire"); 1161 1189 1162 1190 var numPlayersText= Engine.GetGUIObjectByName("numPlayersText"); 1163 1191 var mapSizeDesc = Engine.GetGUIObjectByName("mapSizeDesc"); 1164 1192 var mapSizeText = Engine.GetGUIObjectByName("mapSizeText"); 1165 1193 var revealMapText = Engine.GetGUIObjectByName("revealMapText"); … … 1169 1197 var lockTeamsText = Engine.GetGUIObjectByName("lockTeamsText"); 1170 1198 var enableCheatsText = Engine.GetGUIObjectByName("enableCheatsText"); 1171 1199 var enableRatingText = Engine.GetGUIObjectByName("enableRatingText"); 1172 1200 var populationCapText = Engine.GetGUIObjectByName("populationCapText"); 1173 1201 var startingResourcesText = Engine.GetGUIObjectByName("startingResourcesText"); 1202 var ceasefireText = Engine.GetGUIObjectByName("ceasefireText"); 1174 1203 var gameSpeedText = Engine.GetGUIObjectByName("gameSpeedText"); 1175 1204 var gameSpeedBox = Engine.GetGUIObjectByName("gameSpeed"); 1176 1205 1177 1206 // We have to check for undefined on these properties as not all maps define them. 1178 1207 var sizeIdx = (mapSettings.Size !== undefined && g_MapSizes.tiles.indexOf(mapSettings.Size) != -1 ? g_MapSizes.tiles.indexOf(mapSettings.Size) : g_MapSizes["default"]); … … 1195 1224 gameSpeedBox.selected = speedIdx; 1196 1225 populationCap.selected = (mapSettings.PopulationCap !== undefined && POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) != -1 ? POPULATION_CAP_DATA.indexOf(mapSettings.PopulationCap) : POPULATION_CAP_DEFAULTIDX); 1197 1226 populationCapText.caption = POPULATION_CAP[populationCap.selected]; 1198 1227 startingResources.selected = (mapSettings.StartingResources !== undefined && STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) != -1 ? STARTING_RESOURCES_DATA.indexOf(mapSettings.StartingResources) : STARTING_RESOURCES_DEFAULTIDX); 1199 1228 startingResourcesText.caption = STARTING_RESOURCES[startingResources.selected]; 1229 ceasefire.selected = (mapSettings.Ceasefire !== undefined && CEASEFIRE_DATA.indexOf(mapSettings.Ceasefire) != -1 ? CEASEFIRE_DATA.indexOf(mapSettings.Ceasefire) : CEASEFIRE_DEFAULTIDX); 1230 ceasefireText.caption = CEASEFIRE[ceasefire.selected]; 1200 1231 1201 1232 // Update map preview 1202 1233 Engine.GetGUIObjectByName("mapPreview").sprite = "cropped:(0.78125,0.5859375)session/icons/mappreview/" + getMapPreview(mapName); 1203 1234 1204 1235 // Hide/show settings depending on whether we can change them or not … … 1220 1251 updateDisplay(disableTreasures, disableTreasuresText, g_IsController); 1221 1252 updateDisplay(victoryCondition, victoryConditionText, g_IsController); 1222 1253 updateDisplay(lockTeams, lockTeamsText, g_IsController); 1223 1254 updateDisplay(populationCap, populationCapText, g_IsController); 1224 1255 updateDisplay(startingResources, startingResourcesText, g_IsController); 1256 updateDisplay(ceasefire, ceasefireText, g_IsController); 1225 1257 1226 1258 if (g_IsController) 1227 1259 { 1228 1260 //Host 1229 1261 numPlayersSelection.selected = numPlayers - 1; … … 1262 1294 updateDisplay(disableTreasures, disableTreasuresText, g_IsController); 1263 1295 updateDisplay(victoryCondition, victoryConditionText, g_IsController); 1264 1296 updateDisplay(lockTeams, lockTeamsText, g_IsController); 1265 1297 updateDisplay(populationCap, populationCapText, g_IsController); 1266 1298 updateDisplay(startingResources, startingResourcesText, g_IsController); 1299 updateDisplay(ceasefire, ceasefireText, g_IsController); 1267 1300 1268 1301 if (g_IsController) 1269 1302 { 1270 1303 //Host 1271 1304 revealMap.checked = (mapSettings.RevealMap ? true : false); … … 1288 1321 1289 1322 1290 1323 case "scenario": 1291 1324 // For scenario just reflect settings for the current map 1292 1325 numPlayersSelection.hidden = true; 1293 mapSize.hidden = true;1294 revealMap.hidden = true;1295 exploreMap.hidden = true;1296 disableTreasures.hidden = true;1297 victoryCondition.hidden = true;1298 lockTeams.hidden = true;1299 1326 numPlayersText.hidden = false; 1327 mapSize.hidden = true; 1300 1328 mapSizeText.hidden = true; 1301 1329 mapSizeDesc.hidden = true; 1330 revealMap.hidden = true; 1302 1331 revealMapText.hidden = false; 1332 exploreMap.hidden = true; 1303 1333 exploreMapText.hidden = false; 1334 disableTreasures.hidden = true; 1304 1335 disableTreasuresText.hidden = false; 1336 victoryCondition.hidden = true; 1305 1337 victoryConditionText.hidden = false; 1338 lockTeams.hidden = true; 1306 1339 lockTeamsText.hidden = false; 1307 populationCap.hidden = true;1308 populationCapText.hidden = false;1309 1340 startingResources.hidden = true; 1310 1341 startingResourcesText.hidden = false; 1311 1342 populationCap.hidden = true; 1343 populationCapText.hidden = false; 1344 ceasefire.hidden = true; 1345 ceasefireText.hidden = false; 1346 1312 1347 numPlayersText.caption = numPlayers; 1313 1348 mapSizeText.caption = translate("Default"); 1314 1349 revealMapText.caption = (mapSettings.RevealMap ? translate("Yes") : translate("No")); 1315 1350 exploreMapText.caption = (mapSettings.ExploreMap ? translate("Yes") : translate("No")); 1316 1351 disableTreasuresText.caption = translate("No"); 1317 1352 victoryConditionText.caption = victories.text[victoryIdx]; 1318 1353 lockTeamsText.caption = (mapSettings.LockTeams ? translate("Yes") : translate("No")); 1319 Engine.GetGUIObjectByName("populationCap").selected = POPULATION_CAP_DEFAULTIDX;1320 1354 1355 startingResourcesText.caption = translate("Determined by scenario"); 1356 populationCapText.caption = translate("Determined by scenario"); 1357 ceasefireText.caption = translate("Determined by scenario"); 1321 1358 break; 1322 1359 1323 1360 default: 1324 1361 error(sprintf("onGameAttributesChange: Unexpected map type '%(mapType)s'", { mapType: g_GameAttributes.mapType })); 1325 1362 return; -
binaries/data/mods/public/gui/gamesetup/gamesetup.xml
268 268 <!-- End Options --> 269 269 </object> 270 270 271 271 <!-- More Options --> 272 272 <object hidden="true" name="moreOptionsFade" type="image" z="60" sprite="ModernFade"/> 273 <object name="moreOptions" type="image" sprite="ModernDialog" size="50%-200 50%-195 50%+200 50%+ 190" z="70" hidden="true">273 <object name="moreOptions" type="image" sprite="ModernDialog" size="50%-200 50%-195 50%+200 50%+220" z="70" hidden="true"> 274 274 <object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14"> 275 275 <translatableAttribute id="caption">More Options</translatableAttribute> 276 276 </object> 277 277 278 278 <object size="14 38 94% 66"> … … 315 315 </object> 316 316 </object> 317 317 318 318 <object size="14 158 94% 186"> 319 319 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 320 <translatableAttribute id="caption">Ceasefire:</translatableAttribute> 321 </object> 322 <object name="ceasefireText" size="40% 0 100% 100%" type="text" style="ModernLeftLabelText"/> 323 <object name="ceasefire" size="40%+10 0 100% 28" type="dropdown" style="ModernDropDown" hidden="true" tooltip_style="onscreenToolTip"> 324 <translatableAttribute id="tooltip">Set time where no attacks are possible.</translatableAttribute> 325 </object> 326 </object> 327 328 <object size="14 188 94% 216"> 329 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 320 330 <translatableAttribute id="caption" comment="Make sure to differentiate between the revealed map and explored map options!">Revealed Map:</translatableAttribute> 321 331 </object> 322 332 <object name="revealMapText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 323 333 <object name="revealMap" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 324 334 <translatableAttribute id="tooltip" comment="Make sure to differentiate between the revealed map and explored map options!">Toggle revealed map (see everything).</translatableAttribute> 325 335 </object> 326 336 </object> 327 337 328 <object size="14 188 94% 216">338 <object size="14 218 94% 246"> 329 339 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 330 340 <translatableAttribute id="caption" comment="Make sure to differentiate between the revealed map and explored map options!">Explored Map:</translatableAttribute> 331 341 </object> 332 342 <object name="exploreMapText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 333 343 <object name="exploreMap" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 334 344 <translatableAttribute id="tooltip" comment="Make sure to differentiate between the revealed map and explored map options!">Toggle explored map (see initial map).</translatableAttribute> 335 345 </object> 336 346 </object> 337 347 338 <object size="14 2 18 94% 246">348 <object size="14 248 94% 276"> 339 349 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 340 350 <translatableAttribute id="caption">Disable Treasures:</translatableAttribute> 341 351 </object> 342 352 <object name="disableTreasuresText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 343 353 <object name="disableTreasures" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 344 354 <translatableAttribute id="tooltip">Disable all treasures on the map.</translatableAttribute> 345 355 </object> 346 356 </object> 347 357 348 <object size="14 2 48 94% 276">358 <object size="14 278 94% 306"> 349 359 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 350 360 <translatableAttribute id="caption">Teams Locked:</translatableAttribute> 351 361 </object> 352 362 <object name="lockTeamsText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 353 363 <object name="lockTeams" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 354 364 <translatableAttribute id="tooltip">Toggle locked teams.</translatableAttribute> 355 365 </object> 356 366 </object> 357 367 358 <object name="optionCheats" size="14 278 94% 306" hidden="true">368 <object name="optionCheats" size="14 308 94% 336" hidden="true"> 359 369 <object size="0 0 40% 28" type="text" style="ModernRightLabelText"> 360 370 <translatableAttribute id="caption">Cheats:</translatableAttribute> 361 371 </object> 362 372 <object name="enableCheatsText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 363 373 <object name="enableCheats" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> 364 374 <translatableAttribute id="tooltip">Toggle the usability of cheats.</translatableAttribute> 365 375 </object> 366 376 </object> 367 377 368 <object name="optionRating" size="14 3 08 94% 336" hidden="true">378 <object name="optionRating" size="14 338 94% 366" hidden="true"> 369 379 <object size="0 0 40% 28" hidden="false" type="text" style="ModernRightLabelText"> 370 380 <translatableAttribute id="caption">Rated Game:</translatableAttribute> 371 381 </object> 372 382 <object name="enableRatingText" size="40% 0 100% 28" type="text" style="ModernLeftLabelText"/> 373 383 <object name="enableRating" size="40%+10 5 40%+30 100%-5" type="checkbox" style="ModernTickBox" hidden="true" tooltip_style="onscreenToolTip"> … … 378 388 <!-- Hide More Options Button --> 379 389 <object 380 390 name="hideMoreOptions" 381 391 type="button" 382 392 style="StoneButton" 383 size="50%-70 3 40 50%+70 366"393 size="50%-70 370 50%+70 396" 384 394 tooltip_style="onscreenToolTip" 385 395 > 386 396 <translatableAttribute id="caption">OK</translatableAttribute> 387 397 <translatableAttribute id="tooltip">Close more game options window</translatableAttribute> 388 398 <action on="Press">toggleMoreOptions();</action> -
binaries/data/mods/public/gui/options/options.js
11 11 [translate("Disable Welcome Screen"), translate("If you disable this screen completely, you may miss important announcements.\nYou can still launch it using the main menu."), {"config":"splashscreendisable"}, "boolean"], 12 12 [translate("Detailed Tooltips"), translate("Show detailed tooltips for trainable units in unit-producing buildings."), {"config":"showdetailedtooltips"}, "boolean"], 13 13 [translate("FPS Overlay"), translate("Show frames per second in top right corner."), {"config":"overlay.fps"}, "boolean"], 14 14 [translate("Realtime Overlay"), translate("Show current system time in top right corner."), {"config":"overlay.realtime"}, "boolean"], 15 15 [translate("Gametime Overlay"), translate("Show current simulation time in top right corner."), {"config":"gui.session.timeelapsedcounter"}, "boolean"], 16 [translate("Ceasefire Time Overlay"), translate("Always show the remaining ceasefire time."), {"config":"gui.session.ceasefirecounter"}, "boolean"], 16 17 [translate("Persist match settings"), translate("Save and restore match settings for quick reuse when hosting another game"), {"config":"persistmatchsettings"}, "boolean"], 17 18 ], 18 19 "graphicsSetting": 19 20 [ 20 21 [translate("Prefer GLSL"), translate("Use OpenGL 2.0 shaders (recommended)"), {"renderer":"PreferGLSL", "config":"preferglsl"}, "boolean"], -
binaries/data/mods/public/gui/session/diplomacy_window.xml
70 70 <object name="diplomacyAttackRequestImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/attack-request.png" ghost="true"/> 71 71 </object> 72 72 </object> 73 73 </repeat> 74 74 </object> 75 75 76 <object name="diplomacyCeasefireCounter" size="32 100%-90 100%-32 100%-62" type="text" style="chatPanel" ghost="true"></object> 77 76 78 <object size="50%-64 100%-50 50%+64 100%-22" type="button" style="StoneButton"> 77 79 <translatableAttribute id="caption">Close</translatableAttribute> 78 80 <action on="Press">closeDiplomacy();</action> 79 81 </object> 80 82 </object> -
binaries/data/mods/public/gui/session/menu.js
341 341 button.hidden = false; 342 342 button.tooltip = formatTributeTooltip(g_Players[i], resource, 100); 343 343 } 344 344 345 345 // Attack Request 346 var simState = GetSimState(); 346 347 let button = Engine.GetGUIObjectByName("diplomacyAttackRequest["+(i-1)+"]"); 347 button.hidden = !(g_Players[i].isEnemy[we]);348 button.hidden = simState.ceasefireActive && !(g_Players[i].isEnemy[we]); 348 349 button.tooltip = translate("request for your allies to attack this enemy"); 349 350 button.onpress = (function(i, we){ return function() { 350 351 Engine.PostNetworkCommand({"type": "attack-request", "source": we, "target": i}); 351 352 } })(i, we); 352 353 … … 360 361 { 361 362 let button = Engine.GetGUIObjectByName("diplomacyPlayer"+setting+"["+(i-1)+"]"); 362 363 363 364 button.caption = g_Players[we]["is"+setting][i] ? translate("x") : ""; 364 365 button.onpress = (function(e){ return function() { setDiplomacy(e) } })({"player": i, "to": setting.toLowerCase()}); 365 button.hidden = false;366 button.hidden = simState.ceasefireActive; 366 367 } 367 368 } 368 369 369 370 Engine.GetGUIObjectByName("diplomacyDialogPanel").hidden = false; 370 371 } -
binaries/data/mods/public/gui/session/session.js
395 395 var now = new Date; 396 396 var tickLength = new Date - lastTickTime; 397 397 lastTickTime = now; 398 398 399 399 checkPlayerState(); 400 401 400 while (true) 402 401 { 403 402 var message = Engine.PollNetworkClient(); 404 403 if (!message) 405 404 break; … … 537 536 updateDebug(); 538 537 updatePlayerDisplay(); 539 538 updateSelectionDetails(); 540 539 updateBuildingPlacementPreview(); 541 540 updateTimeElapsedCounter(); 541 updateCeasefireCounter(); 542 542 updateTimeNotifications(); 543 543 if (!g_IsObserver) 544 544 updateResearchDisplay(); 545 545 546 546 if (!g_IsObserver && !g_GameEnded) … … 778 778 // Hide unused buttons. 779 779 for (var i = numButtons; i < 10; ++i) 780 780 Engine.GetGUIObjectByName("researchStartedButton[" + i + "]").hidden = true; 781 781 } 782 782 783 function updateCeasefireCounter() 784 { 785 var simState = GetSimState(); 786 var isActive = simState.ceasefireActive; 787 var remainingTimeString = timeToString(simState.ceasefireTimeRemaining); 788 789 var ceasefireCounter = Engine.GetGUIObjectByName("ceasefireCounter"); 790 var diplomacyCeasefireCounter = Engine.GetGUIObjectByName("diplomacyCeasefireCounter"); 791 792 ceasefireCounter.hidden = !isActive || Engine.ConfigDB_GetValue("user", "gui.session.ceasefirecounter") !== "true"; 793 diplomacyCeasefireCounter.hidden = !isActive; 794 795 ceasefireCounter.caption = remainingTimeString; 796 diplomacyCeasefireCounter.caption = sprintf(translateWithContext("ceasefire", "Time remaining until ceasefire is over: %(time)s."), {"time": remainingTimeString}); 797 } 798 783 799 function updateTimeElapsedCounter() 784 800 { 785 801 var simState = GetSimState(); 786 802 var timeElapsedCounter = Engine.GetGUIObjectByName("timeElapsedCounter"); 787 803 if (g_CurrentSpeed != 1.0) … … 1042 1058 reportObject.playerID = Engine.GetPlayerID(); 1043 1059 reportObject.matchID = g_MatchID; 1044 1060 reportObject.civs = playerCivs; 1045 1061 reportObject.teams = teams; 1046 1062 reportObject.teamsLocked = String(teamsLocked); 1063 reportObject.ceasefireActive = String(extendedSimState.ceasefireActive); 1064 reportObject.ceasefireTimeRemaining = String(extendedSimState.ceasefireTimeRemaining); 1047 1065 reportObject.mapName = mapName; 1048 1066 reportObject.economyScore = playerStatistics.economyScore; 1049 1067 reportObject.militaryScore = playerStatistics.militaryScore; 1050 1068 reportObject.totalScore = playerStatistics.totalScore; 1051 1069 for each (var rct in resourcesCounterTypes) -
binaries/data/mods/public/gui/session/session.xml
145 145 146 146 <!-- ================================ ================================ --> 147 147 <!-- Time elapsed counter --> 148 148 <!-- ================================ ================================ --> 149 149 150 <object size="100%- 120 45 100%-10 65" type="text" name="timeElapsedCounter" style="SettingsText" hotkey="timeelapsedcounter.toggle" hidden="true">150 <object size="100%-250 45 100%-140 65" type="text" name="timeElapsedCounter" style="SettingsText" hotkey="timeelapsedcounter.toggle" hidden="true"> 151 151 <action on="Tick"> 152 152 this.hidden = Engine.ConfigDB_GetValue("user", "gui.session.timeelapsedcounter") !== "true"; 153 153 </action> 154 154 <action on="Press"> 155 155 Engine.ConfigDB_CreateValue("user", "gui.session.timeelapsedcounter", ""+this.hidden); 156 156 </action> 157 157 </object> 158 <object size="100%-250 80 100%-140 100" type="text" name="ceasefireCounter" style="SettingsText" hotkey="ceasefirecounter.toggle" hidden="true"> 159 <action on="Press"> 160 Engine.ConfigDB_CreateValue("user", "gui.session.ceasefirecounter", ""+this.hidden); 161 </action> 162 </object> 158 163 159 164 <!-- ================================ ================================ --> 160 165 <!-- Pause Overlay --> 161 166 <!-- ================================ ================================ --> 162 167 <object type="button" -
binaries/data/mods/public/gui/session/session_objects/research_progress.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 <object size="100%-50 85100%-10 100%-200">2 <object size="100%-50 40 100%-10 100%-200"> 3 3 <repeat count="10"> 4 4 <object name="researchStartedButton[n]" hidden="true" style="iconButton" type="button" size="0 0 40 40" tooltip_style="sessionToolTipBottom"> 5 5 <object name="researchStartedIcon[n]" ghost="true" type="image" size="3 3 37 37"/> 6 6 <object name="researchStartedProgressSlider[n]" type="image" sprite="queueProgressSlider" ghost="true" size="3 3 37 37"/> 7 7 </object> -
binaries/data/mods/public/simulation/ai/petra/defenseManager.js
121 121 122 122 m.DefenseManager.prototype.checkEnemyUnits = function(gameState) 123 123 { 124 124 var nbPlayers = gameState.sharedScript.playersData.length; 125 125 var i = gameState.ai.playedTurn % nbPlayers; 126 if (i === PlayerID || gameState.isPlayerAlly(i))126 if (i === PlayerID || !gameState.isPlayerEnemy(i)) 127 127 return; 128 128 129 129 // loop through enemy units 130 130 for (let ent of gameState.getEnemyUnits(i).values()) 131 131 { … … 212 212 for (var i = 0; i < this.armies.length; ++i) 213 213 { 214 214 var army = this.armies[i]; 215 215 army.recalculatePosition(gameState); 216 216 var owner = this.territoryMap.getOwner(army.foePosition); 217 if ( gameState.isPlayerAlly(owner))217 if (!gameState.isPlayerEnemy(owner)) 218 218 continue; 219 219 else if (owner !== 0) // enemy army back in its territory 220 220 { 221 221 army.clear(gameState); 222 222 this.armies.splice(i--,1); -
binaries/data/mods/public/simulation/components/Capturable.js
67 67 // Before changing the value, activate Fogging if necessary to hide changes 68 68 var cmpFogging = Engine.QueryInterface(this.entity, IID_Fogging); 69 69 if (cmpFogging) 70 70 cmpFogging.Activate(); 71 71 72 var enemiesFilter = function(v, i) { return v > 0 && !cmpPlayerSource.IsAlly(i); };72 var enemiesFilter = function(v, i) { return v > 0 && cmpPlayerSource.IsEnemy(i); }; 73 73 var numberOfEnemies = this.cp.filter(enemiesFilter).length; 74 74 75 75 if (numberOfEnemies == 0) 76 76 return 0; 77 77 78 78 // distribute the capture points over all enemies 79 79 var distributedAmount = amount / numberOfEnemies; 80 80 for (let i in this.cp) 81 81 { 82 if ( cmpPlayerSource.IsAlly(i))82 if (!cmpPlayerSource.IsEnemy(i)) 83 83 continue; 84 84 if (this.cp[i] > distributedAmount) 85 85 this.cp[i] -= distributedAmount; 86 86 else 87 87 this.cp[i] = 0; … … 119 119 if (!cmpPlayerSource) 120 120 warn(playerID + " has no player component defined on its id"); 121 121 var cp = this.GetCapturePoints() 122 122 var sourceEnemyCp = 0; 123 123 for (let i in this.GetCapturePoints()) 124 if ( !cmpPlayerSource.IsAlly(i))124 if (cmpPlayerSource.IsEnemy(i)) 125 125 sourceEnemyCp += cp[i]; 126 126 return sourceEnemyCp > 0; 127 127 }; 128 128 129 129 //// Private functions //// -
binaries/data/mods/public/simulation/components/GuiInterface.js
116 116 "classCounts": cmpTechnologyManager ? cmpTechnologyManager.GetClassCounts() : null, 117 117 "typeCountsByClass": cmpTechnologyManager ? cmpTechnologyManager.GetTypeCountsByClass() : null 118 118 }; 119 119 ret.players.push(playerData); 120 120 } 121 121 122 122 var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); 123 123 if (cmpRangeManager) 124 124 ret.circularMap = cmpRangeManager.GetLosCircular(); 125 125 126 126 var cmpTerrain = Engine.QueryInterface(SYSTEM_ENTITY, IID_Terrain); … … 128 128 ret.mapSize = 4 * cmpTerrain.GetTilesPerSide(); 129 129 130 130 // Add timeElapsed 131 131 var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); 132 132 ret.timeElapsed = cmpTimer.GetTime(); 133 133 134 // Add ceasefire info 135 var cmpCeasefireManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_CeasefireManager); 136 if (cmpCeasefireManager) 137 { 138 ret.ceasefireActive = cmpCeasefireManager.IsCeasefireActive(); 139 ret.ceasefireTimeRemaining = cmpCeasefireManager.GetCeasefireStartedTime() + cmpCeasefireManager.GetCeasefireTime() - ret.timeElapsed; 140 } 141 134 142 // Add the game type 135 143 var cmpEndGameManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_EndGameManager); 136 144 ret.gameType = cmpEndGameManager.GetGameType(); 137 145 138 146 // Add bartering prices … … 685 693 GuiInterface.prototype.AddTimeNotification = function(notification, duration = 10000) 686 694 { 687 695 var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); 688 696 notification.endTime = duration + cmpTimer.GetTime(); 689 697 notification.id = ++this.timeNotificationID; 698 699 // Let all players receive the notification by default 700 if (notification.players == undefined) 701 { 702 var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); 703 var numPlayers = cmpPlayerManager.GetNumPlayers(); 704 notification.players = []; 705 for (var i = 1; i < numPlayers; i++) 706 notification.players.push(i); 707 } 708 690 709 this.timeNotifications.push(notification); 691 710 this.timeNotifications.sort(function (n1, n2){return n2.endTime - n1.endTime}); 692 711 693 712 cmpTimer.SetTimeout(this.entity, IID_GuiInterface, "DeleteTimeNotification", duration, this.timeNotificationID); 694 713 … … 1733 1752 var cmpTargetPlayer = QueryOwnerInterface(data.target, IID_Player); 1734 1753 if (!cmpEntityPlayer || !cmpTargetPlayer) 1735 1754 return false; 1736 1755 1737 1756 // if the owner is an enemy, it's up to the attack component to decide 1738 if ( !cmpEntityPlayer.IsAlly(cmpTargetPlayer.GetPlayerID()))1757 if (cmpEntityPlayer.IsEnemy(cmpTargetPlayer.GetPlayerID())) 1739 1758 return cmpAttack.CanAttack(data.target); 1740 1759 return false; 1741 1760 }; 1742 1761 1743 1762 /* -
binaries/data/mods/public/simulation/helpers/Setup.js
59 59 warn("Map error in Setup.js: entity " + holder + " can not garrison units"); 60 60 else 61 61 cmpGarrisonHolder.initGarrison = settings.Garrison[holder]; 62 62 } 63 63 } 64 65 var cmpCeasefireManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_CeasefireManager); 66 if (settings.Ceasefire) 67 cmpCeasefireManager.StartCeasefire(settings.Ceasefire * 60 * 1000); 64 68 } 65 69 66 70 Engine.RegisterGlobal("LoadMapSettings", LoadMapSettings);