Fix option reporting when joining a server.
This commit is contained in:
@@ -1013,6 +1013,33 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void LoadMapSettings(Session.Global gs, Map map)
|
||||||
|
{
|
||||||
|
var devMode = map.Rules.Actors["player"].TraitInfo<DeveloperModeInfo>();
|
||||||
|
gs.AllowCheats = devMode.Enabled;
|
||||||
|
|
||||||
|
var crateSpawner = map.Rules.Actors["world"].TraitInfoOrDefault<CrateSpawnerInfo>();
|
||||||
|
gs.Crates = crateSpawner != null && crateSpawner.Enabled;
|
||||||
|
|
||||||
|
var shroud = map.Rules.Actors["player"].TraitInfo<ShroudInfo>();
|
||||||
|
gs.Fog = shroud.FogEnabled;
|
||||||
|
gs.Shroud = !shroud.ExploredMapEnabled;
|
||||||
|
|
||||||
|
var resources = map.Rules.Actors["player"].TraitInfo<PlayerResourcesInfo>();
|
||||||
|
gs.StartingCash = resources.DefaultCash;
|
||||||
|
|
||||||
|
var startingUnits = map.Rules.Actors["world"].TraitInfoOrDefault<SpawnMPUnitsInfo>();
|
||||||
|
gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass;
|
||||||
|
|
||||||
|
var mapBuildRadius = map.Rules.Actors["world"].TraitInfoOrDefault<MapBuildRadiusInfo>();
|
||||||
|
gs.AllyBuildRadius = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
|
||||||
|
|
||||||
|
var mapOptions = map.Rules.Actors["world"].TraitInfo<MapOptionsInfo>();
|
||||||
|
gs.ShortGame = mapOptions.ShortGameEnabled;
|
||||||
|
gs.TechLevel = mapOptions.TechLevel;
|
||||||
|
gs.Difficulty = mapOptions.Difficulty ?? mapOptions.Difficulties.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
static void LoadMap(S server)
|
static void LoadMap(S server)
|
||||||
{
|
{
|
||||||
server.Map = new Map(server.ModData, server.ModData.MapCache[server.LobbyInfo.GlobalSettings.Map].Package);
|
server.Map = new Map(server.ModData, server.ModData.MapCache[server.LobbyInfo.GlobalSettings.Map].Package);
|
||||||
@@ -1023,30 +1050,7 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
.Where(s => s != null)
|
.Where(s => s != null)
|
||||||
.ToDictionary(s => s.PlayerReference, s => s);
|
.ToDictionary(s => s.PlayerReference, s => s);
|
||||||
|
|
||||||
var gs = server.LobbyInfo.GlobalSettings;
|
LoadMapSettings(server.LobbyInfo.GlobalSettings, server.Map);
|
||||||
var devMode = server.Map.Rules.Actors["player"].TraitInfo<DeveloperModeInfo>();
|
|
||||||
gs.AllowCheats = devMode.Enabled;
|
|
||||||
|
|
||||||
var crateSpawner = server.Map.Rules.Actors["world"].TraitInfoOrDefault<CrateSpawnerInfo>();
|
|
||||||
gs.Crates = crateSpawner != null && crateSpawner.Enabled;
|
|
||||||
|
|
||||||
var shroud = server.Map.Rules.Actors["player"].TraitInfo<ShroudInfo>();
|
|
||||||
gs.Fog = shroud.FogEnabled;
|
|
||||||
gs.Shroud = !shroud.ExploredMapEnabled;
|
|
||||||
|
|
||||||
var resources = server.Map.Rules.Actors["player"].TraitInfo<PlayerResourcesInfo>();
|
|
||||||
gs.StartingCash = resources.DefaultCash;
|
|
||||||
|
|
||||||
var startingUnits = server.Map.Rules.Actors["world"].TraitInfoOrDefault<SpawnMPUnitsInfo>();
|
|
||||||
gs.StartingUnitsClass = startingUnits == null ? "none" : startingUnits.StartingUnitsClass;
|
|
||||||
|
|
||||||
var mapBuildRadius = server.Map.Rules.Actors["world"].TraitInfoOrDefault<MapBuildRadiusInfo>();
|
|
||||||
gs.AllyBuildRadius = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
|
|
||||||
|
|
||||||
var mapOptions = server.Map.Rules.Actors["world"].TraitInfo<MapOptionsInfo>();
|
|
||||||
gs.ShortGame = mapOptions.ShortGameEnabled;
|
|
||||||
gs.TechLevel = mapOptions.TechLevel;
|
|
||||||
gs.Difficulty = mapOptions.Difficulty ?? mapOptions.Difficulties.FirstOrDefault();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HSLColor SanitizePlayerColor(S server, HSLColor askedColor, int playerIndex, Connection connectionToEcho = null)
|
static HSLColor SanitizePlayerColor(S server, HSLColor askedColor, int playerIndex, Connection connectionToEcho = null)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var defaults = new Session.Global();
|
var defaults = new Session.Global();
|
||||||
|
LobbyCommands.LoadMapSettings(defaults, server.Map);
|
||||||
|
|
||||||
if (server.LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats)
|
if (server.LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats)
|
||||||
server.SendOrderTo(conn, "Message", "Allow Cheats: {0}".F(server.LobbyInfo.GlobalSettings.AllowCheats));
|
server.SendOrderTo(conn, "Message", "Allow Cheats: {0}".F(server.LobbyInfo.GlobalSettings.AllowCheats));
|
||||||
|
|||||||
Reference in New Issue
Block a user