Resolve mission briefing notifications client-side.
This commit is contained in:
@@ -658,10 +658,6 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
server.SendFluentMessage(TwoHumansRequired);
|
server.SendFluentMessage(TwoHumansRequired);
|
||||||
else if (server.Map.Players.Players.Where(p => p.Value.Playable).All(p => !p.Value.AllowBots))
|
else if (server.Map.Players.Players.Where(p => p.Value.Playable).All(p => !p.Value.AllowBots))
|
||||||
server.SendFluentMessage(MapBotsDisabled);
|
server.SendFluentMessage(MapBotsDisabled);
|
||||||
|
|
||||||
var briefing = MissionBriefingOrDefault(server);
|
|
||||||
if (briefing != null)
|
|
||||||
server.SendMessage(briefing);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1453,15 +1449,6 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
return !validFactions.Contains(askedFaction) ? "Random" : askedFaction;
|
return !validFactions.Contains(askedFaction) ? "Random" : askedFaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
static string MissionBriefingOrDefault(S server)
|
|
||||||
{
|
|
||||||
var missionData = server.Map.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
|
|
||||||
if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing))
|
|
||||||
return missionData.Briefing.Replace("\\n", "\n");
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClientJoined(S server, Connection conn)
|
public void ClientJoined(S server, Connection conn)
|
||||||
{
|
{
|
||||||
lock (server.LobbyInfo)
|
lock (server.LobbyInfo)
|
||||||
@@ -1474,13 +1461,6 @@ namespace OpenRA.Mods.Common.Server
|
|||||||
// Validate whether color is allowed and get an alternative if it isn't
|
// Validate whether color is allowed and get an alternative if it isn't
|
||||||
if (client.Slot != null && !server.LobbyInfo.Slots[client.Slot].LockColor)
|
if (client.Slot != null && !server.LobbyInfo.Slots[client.Slot].LockColor)
|
||||||
client.Color = SanitizePlayerColor(server, client.Color, client.Index);
|
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -611,7 +611,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
if (!mapAvailable && map.Status == MapStatus.Available)
|
if (!mapAvailable && map.Status == MapStatus.Available)
|
||||||
{
|
{
|
||||||
mapAvailable = true;
|
mapAvailable = true;
|
||||||
orderManager.IssueOrder(Order.Command($"state {Session.ClientState.NotReady}"));
|
CurrentMapBecameAvailable();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (panel == PanelType.Options && OptionsTabDisabled())
|
if (panel == PanelType.Options && OptionsTabDisabled())
|
||||||
@@ -665,6 +665,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CurrentMapBecameAvailable()
|
||||||
|
{
|
||||||
|
orderManager.IssueOrder(Order.Command($"state {Session.ClientState.NotReady}"));
|
||||||
|
|
||||||
|
var missionData = map.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
|
||||||
|
if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing))
|
||||||
|
TextNotificationsManager.AddSystemLine(missionData.Briefing.Replace("\\n", "\n"));
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateCurrentMap()
|
void UpdateCurrentMap()
|
||||||
{
|
{
|
||||||
mapStatus = orderManager.LobbyInfo.GlobalSettings.MapStatus;
|
mapStatus = orderManager.LobbyInfo.GlobalSettings.MapStatus;
|
||||||
@@ -677,7 +686,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
// Tell the server that we have the map
|
// Tell the server that we have the map
|
||||||
mapAvailable = map.Status == MapStatus.Available;
|
mapAvailable = map.Status == MapStatus.Available;
|
||||||
if (mapAvailable)
|
if (mapAvailable)
|
||||||
orderManager.IssueOrder(Order.Command($"state {Session.ClientState.NotReady}"));
|
CurrentMapBecameAvailable();
|
||||||
|
|
||||||
// We don't have the map
|
// We don't have the map
|
||||||
else if (map.Status != MapStatus.DownloadAvailable && Game.Settings.Game.AllowDownloading)
|
else if (map.Status != MapStatus.DownloadAvailable && Game.Settings.Game.AllowDownloading)
|
||||||
|
|||||||
Reference in New Issue
Block a user