Merge pull request #11993 from pchote/missiondata

Report mission briefings in the mp lobby.
This commit is contained in:
reaperrr
2016-09-23 22:50:59 +02:00
committed by GitHub

View File

@@ -407,6 +407,10 @@ namespace OpenRA.Mods.Common.Server
server.SendMessage(server.TwoHumansRequiredText);
else if (server.Map.Players.Players.Where(p => p.Value.Playable).All(p => !p.Value.AllowBots))
server.SendMessage("Bots have been disabled on this map.");
var briefing = MissionBriefingOrDefault(server);
if (briefing != null)
server.SendMessage(briefing);
};
Action queryFailed = () =>
@@ -842,6 +846,15 @@ namespace OpenRA.Mods.Common.Server
return validator.MakeValid(askColor.RGB, server.Random, terrainColors, playerColors, onError);
}
static string MissionBriefingOrDefault(S server)
{
var missionData = server.Map.Rules.Actors["world"].TraitInfoOrDefault<MissionDataInfo>();
if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing))
return missionData.Briefing.Replace("\\n", "\n");
return null;
}
public void ClientJoined(S server, Connection conn)
{
var client = server.GetClient(conn);
@@ -849,6 +862,13 @@ namespace OpenRA.Mods.Common.Server
// Validate whether color is allowed and get an alternative if it isn't
if (client.Slot == null || !server.LobbyInfo.Slots[client.Slot].LockColor)
client.Color = SanitizePlayerColor(server, client.Color, client.Index);
// Report any custom map details
// HACK: this isn't the best place for this to live, but if we move it somewhere else
// then we need a larger hack to hook the map change event.
var briefing = MissionBriefingOrDefault(server);
if (briefing != null)
server.SendOrderTo(conn, "Message", briefing);
}
public PlayerReference PlayerReferenceForSlot(S server, Session.Slot slot)