public void ClientJoined(OpenRA.Server.Server server, Connection conn) { if (server.LobbyInfo.ClientWithIndex(conn.PlayerIndex).IsAdmin) return; var defaults = new Session.Global(); FieldLoader.Load(defaults, Game.ModData.Manifest.LobbyDefaults); if (server.LobbyInfo.GlobalSettings.FragileAlliances != defaults.FragileAlliances) server.SendOrderTo(conn, "Message", "Diplomacy Changes: {0}".F(server.LobbyInfo.GlobalSettings.FragileAlliances)); if (server.LobbyInfo.GlobalSettings.AllowCheats != defaults.AllowCheats) server.SendOrderTo(conn, "Message", "Allow Cheats: {0}".F(server.LobbyInfo.GlobalSettings.AllowCheats)); if (server.LobbyInfo.GlobalSettings.Shroud != defaults.Shroud) server.SendOrderTo(conn, "Message", "Explored map: {0}".F(!server.LobbyInfo.GlobalSettings.Shroud)); if (server.LobbyInfo.GlobalSettings.Fog != defaults.Fog) server.SendOrderTo(conn, "Message", "Fog of war: {0}".F(server.LobbyInfo.GlobalSettings.Fog)); if (server.LobbyInfo.GlobalSettings.Crates != defaults.Crates) server.SendOrderTo(conn, "Message", "Crates Appear: {0}".F(server.LobbyInfo.GlobalSettings.Crates)); if (server.LobbyInfo.GlobalSettings.Creeps != defaults.Creeps) server.SendOrderTo(conn, "Message", "Creeps Spawn: {0}".F(server.LobbyInfo.GlobalSettings.Creeps)); if (server.LobbyInfo.GlobalSettings.AllyBuildRadius != defaults.AllyBuildRadius) server.SendOrderTo(conn, "Message", "Build off Ally ConYards: {0}".F(server.LobbyInfo.GlobalSettings.AllyBuildRadius)); if (server.LobbyInfo.GlobalSettings.StartingUnitsClass != defaults.StartingUnitsClass) { var startUnitsInfo = server.Map.Rules.Actors["world"].TraitInfos<MPStartUnitsInfo>(); var selectedClass = startUnitsInfo.Where(u => u.Class == server.LobbyInfo.GlobalSettings.StartingUnitsClass).Select(u => u.ClassName).FirstOrDefault(); var className = selectedClass != null ? selectedClass : server.LobbyInfo.GlobalSettings.StartingUnitsClass; server.SendOrderTo(conn, "Message", "Starting Units: {0}".F(className)); } if (server.LobbyInfo.GlobalSettings.StartingCash != defaults.StartingCash) server.SendOrderTo(conn, "Message", "Starting Cash: ${0}".F(server.LobbyInfo.GlobalSettings.StartingCash)); if (server.LobbyInfo.GlobalSettings.TechLevel != defaults.TechLevel) server.SendOrderTo(conn, "Message", "Tech Level: {0}".F(server.LobbyInfo.GlobalSettings.TechLevel)); if (server.LobbyInfo.GlobalSettings.ShortGame != defaults.ShortGame) server.SendOrderTo(conn, "Message", "Short Game: {0}".F(server.LobbyInfo.GlobalSettings.ShortGame)); }
public void ClientJoined(OpenRA.Server.Server server, Connection conn) { if (server.LobbyInfo.ClientWithIndex(conn.PlayerIndex).IsAdmin) return; var defaults = new Session.Global(); LobbyCommands.LoadMapSettings(server, defaults, server.Map.Rules); var options = server.Map.Rules.Actors["player"].TraitInfos<ILobbyOptions>() .Concat(server.Map.Rules.Actors["world"].TraitInfos<ILobbyOptions>()) .SelectMany(t => t.LobbyOptions(server.Map.Rules)) .ToDictionary(o => o.Id, o => o); foreach (var kv in server.LobbyInfo.GlobalSettings.LobbyOptions) { Session.LobbyOptionState def; LobbyOption option; if (!defaults.LobbyOptions.TryGetValue(kv.Key, out def) || kv.Value.Value != def.Value) if (options.TryGetValue(kv.Key, out option)) server.SendOrderTo(conn, "Message", option.Name + ": " + kv.Value.Value); } }
public void InitPalette( OpenRA.Graphics.WorldRenderer wr ) { wr.AddPalette( info.Name, new Palette( FileSystem.Open( world.TileSet.Palette ), info.ShadowIndex ) ); }
// Gets the player information for the specified runtime player instance. public Player GetPlayer(OpenRA.Player runtimePlayer) { Player player; playersByRuntime.TryGetValue(runtimePlayer, out player); return player; }
// Adds the player information at start-up. public void AddPlayer(OpenRA.Player runtimePlayer, Session lobbyInfo) { if (runtimePlayer == null) throw new ArgumentNullException("runtimePlayer"); if (lobbyInfo == null) throw new ArgumentNullException("lobbyInfo"); // We don't care about spectators and map players if (runtimePlayer.NonCombatant || !runtimePlayer.Playable) return; // Find the lobby client that created the runtime player var client = lobbyInfo.ClientWithIndex(runtimePlayer.ClientIndex); if (client == null) return; var player = new Player { ClientIndex = runtimePlayer.ClientIndex, Name = runtimePlayer.PlayerName, IsHuman = !runtimePlayer.IsBot, IsBot = runtimePlayer.IsBot, FactionName = runtimePlayer.Faction.Name, FactionId = runtimePlayer.Faction.InternalName, Color = runtimePlayer.Color, Team = client.Team, SpawnPoint = runtimePlayer.SpawnPoint, IsRandomFaction = runtimePlayer.Faction.InternalName != client.Race, IsRandomSpawnPoint = runtimePlayer.SpawnPoint != client.SpawnPoint }; playersByRuntime.Add(runtimePlayer, player); Players.Add(player); }
public void InitPalette(OpenRA.Graphics.WorldRenderer wr) { string Filename = world.TileSet.PlayerPalette == null ? world.TileSet.Palette : world.TileSet.PlayerPalette; wr.AddPalette(info.Name, new Palette(FileSystem.Open(Filename), info.ShadowIndex)); }