当前位置: 首页>>代码示例>>C#>>正文


C# World.FindPlayerByClient方法代码示例

本文整理汇总了C#中World.FindPlayerByClient方法的典型用法代码示例。如果您正苦于以下问题:C# World.FindPlayerByClient方法的具体用法?C# World.FindPlayerByClient怎么用?C# World.FindPlayerByClient使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在World的用法示例。


在下文中一共展示了World.FindPlayerByClient方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ProcessOrder

        public static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
        {
            if (world != null)
            {
                if (!world.WorldActor.TraitsImplementing<IValidateOrder>().All(vo =>
                    vo.OrderValidation(orderManager, world, clientId, order)))
                    return;
            }

            switch (order.OrderString)
            {
                case "Chat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var player = world != null ? world.FindPlayerByClient(client) : null;
                            var suffix = (player != null && player.WinState == WinState.Lost) ? " (Dead)" : "";
                            suffix = client.IsObserver ? " (Spectator)" : suffix;
                            Game.AddChatLine(client.Color.RGB, client.Name + suffix, order.TargetString);
                        }
                        else
                            Game.AddChatLine(Color.White, "(player {0})".F(clientId), order.TargetString);
                        break;
                    }
                case "Message": // Server message
                        Game.AddChatLine(Color.White, "Server", order.TargetString);
                    break;
                case "Disconnected": /* reports that the target player disconnected */
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                            client.State = Session.ClientState.Disconnected;
                        break;
                    }

                case "TeamChat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);

                        if (client != null)
                        {
                            if (world == null)
                            {
                                if (orderManager.LocalClient != null && client.Team == orderManager.LocalClient.Team)
                                    Game.AddChatLine(client.Color.RGB, client.Name + " (Team)",
                                        order.TargetString);
                            }
                            else
                            {
                                var player = world.FindPlayerByClient(client);
                                if (player == null) return;

                                if (world.LocalPlayer != null && player.Stances[world.LocalPlayer] == Stance.Ally || player.WinState == WinState.Lost)
                                {
                                    var suffix = player.WinState == WinState.Lost ? " (Dead)" : " (Team)";
                                    Game.AddChatLine(client.Color.RGB, client.Name + suffix, order.TargetString);
                                }
                            }
                        }
                        break;
                    }

                case "StartGame":
                    {
                        Game.AddChatLine(Color.White, "Server", "The game has started.");
                        Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false);
                        break;
                    }

                case "PauseGame":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var pause = order.TargetString == "Pause";
                            if (orderManager.world.Paused != pause && !world.LobbyInfo.IsSinglePlayer)
                            {
                                var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
                                Game.AddChatLine(Color.White, "", pausetext);
                            }

                            orderManager.world.Paused = pause;
                            orderManager.world.PredictedPaused = pause;
                        }
                        break;
                    }

                case "HandshakeRequest":
                    {
                        var request = HandshakeRequest.Deserialize(order.TargetString);
                        var localMods = orderManager.LobbyInfo.GlobalSettings.Mods.Select(m => "{0}@{1}".F(m,Mod.AllMods[m].Version)).ToArray();

                        // Check if mods match
                        if (localMods.FirstOrDefault().ToString().Split('@')[0] != request.Mods.FirstOrDefault().ToString().Split('@')[0])
                            throw new InvalidOperationException("Server's mod ({0}) and yours ({1}) don't match".F(localMods.FirstOrDefault().ToString().Split('@')[0], request.Mods.FirstOrDefault().ToString().Split('@')[0]));
                        // Check that the map exists on the client
                        if (!Game.modData.AvailableMaps.ContainsKey(request.Map))
                        {
                            if (Game.Settings.Game.AllowDownloading)
//.........这里部分代码省略.........
开发者ID:TiriliPiitPiit,项目名称:OpenRA,代码行数:101,代码来源:UnitOrders.cs

示例2: ProcessOrder

        public static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
        {
            if (world != null)
            {
                if (!world.WorldActor.TraitsImplementing<IValidateOrder>().All(vo =>
                    vo.OrderValidation(orderManager, world, clientId, order)))
                    return;
            }

            switch (order.OrderString)
            {
            case "Chat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var player = world != null ? world.FindPlayerByClient(client) : null;
                            var suffix = (player != null && player.WinState == WinState.Lost) ? " (Dead)" : "";
                            Game.AddChatLine(client.Color1, client.Name + suffix, order.TargetString);
                        }
                        else
                            Game.AddChatLine(Color.White, "(player {0})".F(clientId), order.TargetString);
                        break;
                    }
                case "Disconnected": /* reports that the target player disconnected */
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            client.State = Session.ClientState.Disconnected;
                        }
                        break;
                    }
                case "TeamChat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);

                        if (client != null)
                        {
                            if (world == null)
                            {
                                if (client.Team == orderManager.LocalClient.Team)
                                    Game.AddChatLine(client.Color1, client.Name + " (Team)",
                                                     order.TargetString);
                            }
                            else
                            {
                                var player = world.FindPlayerByClient(client);
                                var display = player != null
                                              &&
                                              (world.LocalPlayer != null &&
                                               player.Stances[world.LocalPlayer] == Stance.Ally
                                               || player.WinState == WinState.Lost);

                                if (display)
                                {
                                    var suffix = (player != null && player.WinState == WinState.Lost)
                                                     ? " (Dead)"
                                                     : " (Team)";
                                    Game.AddChatLine(client.Color1, client.Name + suffix, order.TargetString);
                                }
                            }
                        }
                        break;
                    }
                case "StartGame":
                    {
                        Game.AddChatLine(Color.White, "Server", "The game has started.");
                        Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map);
                        break;
                    }
                case "SyncInfo":
                    {
                        orderManager.LobbyInfo = Session.Deserialize(order.TargetString);

                        if (orderManager.FramesAhead != orderManager.LobbyInfo.GlobalSettings.OrderLatency
                            && !orderManager.GameStarted)
                        {
                            orderManager.FramesAhead = orderManager.LobbyInfo.GlobalSettings.OrderLatency;
                            Game.Debug(
                                "Order lag is now {0} frames.".F(orderManager.LobbyInfo.GlobalSettings.OrderLatency));
                        }
                        Game.SyncLobbyInfo();
                        break;
                    }

                case "SetStance":
                    {
                        var targetPlayer = order.Player.World.players[order.TargetLocation.X];
                        var newStance = (Stance)order.TargetLocation.Y;

                        SetPlayerStance(world, order.Player, targetPlayer, newStance);

                        // automatically declare war reciprocally
                        if (newStance == Stance.Enemy)
                            SetPlayerStance(world, targetPlayer, order.Player, newStance);

                        Game.Debug("{0} has set diplomatic stance vs {1} to {2}".F(
                            order.Player.PlayerName, targetPlayer.PlayerName, newStance));
                        break;
//.........这里部分代码省略.........
开发者ID:geckosoft,项目名称:OpenRA,代码行数:101,代码来源:UnitOrders.cs

示例3: ProcessOrder

		public static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
		{
			if (world != null)
			{
				if (!world.WorldActor.TraitsImplementing<IValidateOrder>().All(vo =>
					vo.OrderValidation(orderManager, world, clientId, order)))
					return;
			}

			switch (order.OrderString)
			{
				case "Chat":
					{
						var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
						if (client != null)
						{
							var player = world != null ? world.FindPlayerByClient(client) : null;
							var suffix = (player != null && player.WinState == WinState.Lost) ? " (Dead)" : "";
							suffix = client.IsObserver ? " (Spectator)" : suffix;
							Game.AddChatLine(client.Color.RGB, client.Name + suffix, order.TargetString);
						}
						else
							Game.AddChatLine(Color.White, "(player {0})".F(clientId), order.TargetString);
						break;
					}

				case "Message": // Server message
						Game.AddChatLine(Color.White, "Server", order.TargetString);
					break;

				case "Disconnected": /* reports that the target player disconnected */
					{
						var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
						if (client != null)
							client.State = Session.ClientState.Disconnected;
						break;
					}

				case "TeamChat":
					{
						var client = orderManager.LobbyInfo.ClientWithIndex(clientId);

						if (client != null)
						{
							if (world == null)
							{
								if (orderManager.LocalClient != null && client.Team == orderManager.LocalClient.Team)
									Game.AddChatLine(client.Color.RGB, client.Name + " (Team)",
										order.TargetString);
							}
							else
							{
								var player = world.FindPlayerByClient(client);
								if (player == null) return;

								if (world.LocalPlayer != null && player.Stances[world.LocalPlayer] == Stance.Ally || player.WinState == WinState.Lost)
								{
									var suffix = player.WinState == WinState.Lost ? " (Dead)" : " (Team)";
									Game.AddChatLine(client.Color.RGB, client.Name + suffix, order.TargetString);
								}
							}
						}
						break;
					}

				case "StartGame":
					{
						Game.AddChatLine(Color.White, "Server", "The game has started.");
						Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, false);
						break;
					}

				case "PauseGame":
					{
						var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
						if (client != null)
						{
							var pause = order.TargetString == "Pause";
							if (orderManager.world.Paused != pause && !world.LobbyInfo.IsSinglePlayer)
							{
								var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
								Game.AddChatLine(Color.White, "", pausetext);
							}

							orderManager.world.Paused = pause;
							orderManager.world.PredictedPaused = pause;
						}
						break;
					}

				case "HandshakeRequest":
					{
						// TODO: Switch to the server's mod if we have it
						// Otherwise send the handshake with our current settings and let the server reject us
						var mod = Game.modData.Manifest.Mod;

						var info = new Session.Client()
						{
							Name = Game.Settings.Player.Name,
							PreferredColor = Game.Settings.Player.Color,
//.........这里部分代码省略.........
开发者ID:Berzeger,项目名称:OpenRA,代码行数:101,代码来源:UnitOrders.cs

示例4: ProcessOrder

        public static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
        {
            if (world != null)
            {
                if (!world.WorldActor.TraitsImplementing<IValidateOrder>().All(vo =>
                    vo.OrderValidation(orderManager, world, clientId, order)))
                    return;
            }

            switch (order.OrderString)
            {
                case "Chat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var player = world != null ? world.FindPlayerByClient(client) : null;
                            var suffix = (player != null && player.WinState == WinState.Lost) ? " (Dead)" : "";
                            Game.AddChatLine(client.ColorRamp.GetColor(0), client.Name + suffix, order.TargetString);
                        }
                        else
                            Game.AddChatLine(Color.White, "(player {0})".F(clientId), order.TargetString);
                        break;
                    }
                case "Disconnected": /* reports that the target player disconnected */
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            client.State = Session.ClientState.Disconnected;
                        }
                        break;
                    }
                case "TeamChat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);

                        if (client != null)
                        {
                            if (world == null)
                            {
                                if (client.Team == orderManager.LocalClient.Team)
                                    Game.AddChatLine(client.ColorRamp.GetColor(0), client.Name + " (Team)",
                                                     order.TargetString);
                            }
                            else
                            {
                                var player = world.FindPlayerByClient(client);
                                var display = player != null
                                              &&
                                              (world.LocalPlayer != null &&
                                               player.Stances[world.LocalPlayer] == Stance.Ally
                                               || player.WinState == WinState.Lost);

                                if (display)
                                {
                                    var suffix = (player != null && player.WinState == WinState.Lost)
                                                     ? " (Dead)"
                                                     : " (Team)";
                                    Game.AddChatLine(client.ColorRamp.GetColor(0), client.Name + suffix, order.TargetString);
                                }
                            }
                        }
                        break;
                    }
                case "StartGame":
                    {
                        Game.AddChatLine(Color.White, "Server", "The game has started.");
                        Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map);
                        break;
                    }

                case "HandshakeRequest":
                {
                    var request = HandshakeRequest.Deserialize(order.TargetString);

                    // Check that the map exists on the client
                    if (!Game.modData.AvailableMaps.ContainsKey(request.Map))
                        throw new InvalidOperationException("Missing map {0}".F(request.Map));

                    var info = new Session.Client()
                    {
                        Name = Game.Settings.Player.Name,
                        ColorRamp = Game.Settings.Player.ColorRamp,
                        Country = "random",
                        SpawnPoint = 0,
                        Team = 0,
                        State = Session.ClientState.NotReady
                    };

                    var localMods = orderManager.LobbyInfo.GlobalSettings.Mods.Select(m => "{0}@{1}".F(m,Mod.AllMods[m].Version)).ToArray();
                    var response = new HandshakeResponse()
                    {
                        Client = info,
                        Mods = localMods,
                        Password = "Foo"
                    };

                    orderManager.IssueOrder(Order.HandshakeResponse(response.Serialize()));
                    break;
//.........这里部分代码省略.........
开发者ID:katzsmile,项目名称:OpenRA,代码行数:101,代码来源:UnitOrders.cs

示例5: ProcessOrder

        public static void ProcessOrder(OrderManager orderManager, World world, int clientId, Order order)
        {
            if (world != null)
            {
                if (!world.WorldActor.TraitsImplementing<IValidateOrder>().All(vo =>
                    vo.OrderValidation(orderManager, world, clientId, order)))
                    return;
            }

            switch (order.OrderString)
            {
                case "Chat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var player = world != null ? world.FindPlayerByClient(client) : null;
                            var suffix = (player != null && player.WinState == WinState.Lost) ? " (Dead)" : "";
                            suffix = client.IsObserver ? " (Spectator)" : suffix;

                            if (orderManager.LocalClient != null && client != orderManager.LocalClient && client.Team > 0 && client.Team == orderManager.LocalClient.Team)
                                suffix += " (Ally)";

                            Game.AddChatLine(client.Color.RGB, client.Name + suffix, order.TargetString);
                        }
                        else
                            Game.AddChatLine(Color.White, "(player {0})".F(clientId), order.TargetString);
                        break;
                    }

                case "Message": // Server message
                    Game.AddChatLine(Color.White, "Server", order.TargetString);
                    break;

                case "Disconnected": /* reports that the target player disconnected */
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                            client.State = Session.ClientState.Disconnected;
                        break;
                    }

                case "TeamChat":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);

                        if (client != null)
                        {
                            if (world == null)
                            {
                                if (orderManager.LocalClient != null && client.Team == orderManager.LocalClient.Team)
                                    Game.AddChatLine(client.Color.RGB, "[Team] " + client.Name, order.TargetString);
                            }
                            else
                            {
                                var player = world.FindPlayerByClient(client);
                                if (player != null && player.WinState == WinState.Lost)
                                    Game.AddChatLine(client.Color.RGB, client.Name + " (Dead)", order.TargetString);
                                else if (player != null && world.LocalPlayer != null && player.Stances[world.LocalPlayer] == Stance.Ally)
                                    Game.AddChatLine(client.Color.RGB, "[Team] " + client.Name, order.TargetString);
                                else if (orderManager.LocalClient != null && orderManager.LocalClient.IsObserver && client.IsObserver)
                                    Game.AddChatLine(client.Color.RGB, "[Spectators] " + client.Name, order.TargetString);
                            }
                        }

                        break;
                    }

                case "StartGame":
                    {
                        if (Game.ModData.MapCache[orderManager.LobbyInfo.GlobalSettings.Map].Status != MapStatus.Available)
                        {
                            Game.Disconnect();
                            Game.LoadShellMap();

                            // TODO: After adding a startup error dialog, notify the replay load failure.
                            break;
                        }

                        Game.AddChatLine(Color.White, "Server", "The game has started.");
                        Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, WorldType.Regular);
                        break;
                    }

                case "PauseGame":
                    {
                        var client = orderManager.LobbyInfo.ClientWithIndex(clientId);
                        if (client != null)
                        {
                            var pause = order.TargetString == "Pause";
                            if (orderManager.World.Paused != pause && world != null && !world.LobbyInfo.IsSinglePlayer)
                            {
                                var pausetext = "The game is {0} by {1}".F(pause ? "paused" : "un-paused", client.Name);
                                Game.AddChatLine(Color.White, "", pausetext);
                            }

                            orderManager.World.Paused = pause;
                            orderManager.World.PredictedPaused = pause;
                        }

//.........这里部分代码省略.........
开发者ID:OpenRA,项目名称:OpenRA,代码行数:101,代码来源:UnitOrders.cs


注:本文中的World.FindPlayerByClient方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。