Ticket #3120: 3120.v6.patch
File 3120.v6.patch, 3.3 KB (added by , 8 years ago) |
---|
-
0ad/binaries/data/mods/public/gui/credits/texts/programming.json
134 134 {"nick": "njm"}, 135 135 {"nick": "NoMonkey", "name": "John Mena"}, 136 136 {"nick": "notpete", "name": "Rich Cross"}, 137 {"nick": "Offensive ePeen", "name": "Jared Ryan Bills"}, 137 138 {"nick": "Ols", "name": "Oliver Whiteman"}, 138 139 {"nick": "olsner", "name": "Simon Brenner"}, 139 140 {"nick": "otero"}, -
0ad/binaries/data/mods/public/gui/gamesetup/gamesetup.js
1034 1034 } 1035 1035 1036 1036 /** 1037 * Called when the map changes or the number of players changes 1038 */ 1039 function resizePlayerData(defPData, ply) 1040 { 1041 if (g_IsNetworked) 1042 // Unassign excess players 1043 for (let guid in g_PlayerAssignments) 1044 { 1045 let player = g_PlayerAssignments[guid].player; 1046 if (player > ply) 1047 Engine.AssignNetworkPlayer(player, ""); 1048 } 1049 else 1050 // Reassign player 1 1051 g_PlayerAssignments = { 1052 "local": { 1053 "name": singleplayerName(), 1054 "player": 1 1055 } 1056 }; 1057 let pData = g_GameAttributes.settings.PlayerData; 1058 return ply > pData.length ? 1059 pData.concat(defPData.slice(pData.length, ply)) : 1060 pData.slice(0, ply); 1061 } 1062 1063 /** 1037 1064 * Called when the host choses the number of players on a random map. 1038 1065 * @param {Number} num 1039 1066 */ … … 1042 1069 if (g_IsInGuiUpdate || !g_IsController || g_GameAttributes.mapType != "random") 1043 1070 return; 1044 1071 1045 // Unassign players from nonexistent slots1046 if (g_IsNetworked)1047 {1048 for (let i = g_MaxPlayers; i > num; --i)1049 Engine.AssignNetworkPlayer(i, "");1050 }1051 else if (g_PlayerAssignments.local.player > num)1052 g_PlayerAssignments.local.player = 1;1053 1054 1072 // Update player data 1055 let pData = g_GameAttributes.settings.PlayerData; 1056 if (num < pData.length) 1057 g_GameAttributes.settings.PlayerData = pData.slice(0, num); 1058 else 1059 for (let i = pData.length; i < num; ++i) 1060 g_GameAttributes.settings.PlayerData.push(g_DefaultPlayerData[i]); 1073 g_GameAttributes.settings.PlayerData = resizePlayerData(g_DefaultPlayerData, num); 1061 1074 1062 1075 updateGameAttributes(); 1063 1076 } … … 1165 1178 delete g_GameAttributes.settings.LastManStanding; 1166 1179 } 1167 1180 1181 // Persist player data settings on map change 1182 if (g_GameAttributes.mapType == "skirmish") 1183 mapSettings.PlayerData = resizePlayerData(mapSettings.PlayerData, mapSettings.PlayerData.length); 1184 1168 1185 if (mapSettings.PlayerData) 1169 1186 sanitizePlayerData(mapSettings.PlayerData); 1170 1187 … … 1184 1201 g_GameAttributes.settings.PlayerData[i].AIDiff = g_DefaultPlayerData[i].AIDiff; 1185 1202 } 1186 1203 1187 if (g_IsNetworked)1188 // Unassign excess players1189 for (let guid in g_PlayerAssignments)1190 {1191 let player = g_PlayerAssignments[guid].player;1192 if (player > g_GameAttributes.settings.PlayerData.length)1193 Engine.AssignNetworkPlayer(player, "");1194 }1195 else1196 g_PlayerAssignments = {1197 "local": {1198 "name": singleplayerName(),1199 "player": 11200 }1201 };1202 1203 1204 updateGameAttributes(); 1204 1205 } 1205 1206