void Server_UserManagementService_AddUserEvent(UserManagementServerNetworkService sender, UserManagementServerNetworkService.UserInfo user) { GameNetworkServer server = GameNetworkServer.Instance; //send map name to new client server.CustomMessagesService.SendToClient(user.ConnectedNode, "Lobby_MapName", SelectedMapName); //send AllowToConnectDuringGame flag to new client server.CustomMessagesService.SendToClient(user.ConnectedNode, "Lobby_AllowToConnectDuringGame", checkBoxAllowToConnectDuringGame.Checked.ToString()); }
void UserManagementService_RemoveUserEvent(UserManagementServerNetworkService sender, UserManagementServerNetworkService.UserInfo user) { listBoxUsers.Items.Remove(user); Log("User disconnected: " + user.ToString()); }
void UserManagementService_AddUserEvent(UserManagementServerNetworkService sender, UserManagementServerNetworkService.UserInfo user) { Log("User connected: " + user.ToString()); listBoxUsers.Items.Add(user); }
void UpdateUserList() { //server GameNetworkServer server = GameNetworkServer.Instance; if (server != null) { UserManagementServerNetworkService userService = server.UserManagementService; bool shouldUpdate = false; if (userService.Users.Count == listBoxUsers.Items.Count) { int index = 0; foreach (UserManagementServerNetworkService.UserInfo user in userService.Users) { if (user != listBoxUsers.Items[index]) { shouldUpdate = true; } index++; } } else { shouldUpdate = true; } if (shouldUpdate) { //update list box listBoxUsers.Items.Clear(); foreach (UserManagementServerNetworkService.UserInfo user in userService.Users) { listBoxUsers.Items.Add(user); } } } //client GameNetworkClient client = GameNetworkClient.Instance; if (client != null) { UserManagementClientNetworkService userService = client.UserManagementService; bool shouldUpdate = false; if (userService.Users.Count == listBoxUsers.Items.Count) { int index = 0; foreach (UserManagementClientNetworkService.UserInfo user in userService.Users) { if (user != listBoxUsers.Items[index]) { shouldUpdate = true; } index++; } } else { shouldUpdate = true; } if (shouldUpdate) { //update list box listBoxUsers.Items.Clear(); foreach (UserManagementClientNetworkService.UserInfo user in userService.Users) { listBoxUsers.Items.Add(user); } } } }
protected override void OnRenderUI(GuiRenderer renderer) { base.OnRenderUI(renderer); UpdateHUD(); //render user names for moving pieces by users foreach (Entity entity in Map.Instance.Children) { JigsawPuzzlePiece piece = entity as JigsawPuzzlePiece; if (piece != null) { string userName = null; if (EntitySystemWorld.Instance.IsServer()) { if (piece.Server_MovingByUser != null) { userName = piece.Server_MovingByUser.Name; } } if (EntitySystemWorld.Instance.IsClientOnly()) { if (piece.Client_MovingByUser != null) { userName = piece.Client_MovingByUser.Name; } } if (!string.IsNullOrEmpty(userName)) { Vec2 screenPosition; if (RendererWorld.Instance.DefaultCamera.ProjectToScreenCoordinates( piece.Position, out screenPosition)) { renderer.AddText(userName, screenPosition, HorizontalAlign.Left, VerticalAlign.Top, new ColorValue(0, 1, 0, .75f)); } } } } //show list of users if (GameNetworkServer.Instance != null || GameNetworkClient.Instance != null) { List <string> lines = new List <string>(); lines.Add("Players:"); if (GameNetworkServer.Instance != null) { UserManagementServerNetworkService userService = GameNetworkServer.Instance.UserManagementService; foreach (UserManagementServerNetworkService.UserInfo user in userService.Users) { string line = " " + user.Name; if (user == userService.ServerUser) { line += " (you)"; } lines.Add(line); } } if (GameNetworkClient.Instance != null) { UserManagementClientNetworkService userService = GameNetworkClient.Instance.UserManagementService; foreach (UserManagementClientNetworkService.UserInfo user in userService.Users) { string line = " " + user.Name; if (user == userService.ThisUser) { line += " (you)"; } lines.Add(line); } } renderer.AddTextLines(lines, new Vec2(.01f, .15f), HorizontalAlign.Left, VerticalAlign.Top, 0, new ColorValue(1, 1, 0)); } //screenMessages { Vec2 pos = new Vec2(.01f, .9f); for (int n = screenMessages.Count - 1; n >= 0; n--) { ScreenMessage message = screenMessages[n]; ColorValue color = new ColorValue(1, 1, 1, message.timeRemaining); if (color.Alpha > 1) { color.Alpha = 1; } renderer.AddText(message.text, pos, HorizontalAlign.Left, VerticalAlign.Top, color); pos.Y -= renderer.DefaultFont.Height; } } //Game is paused on server if (EntitySystemWorld.Instance.IsClientOnly() && !EntitySystemWorld.Instance.Simulation) { renderer.AddText("Game is paused on server", new Vec2(.5f, .5f), HorizontalAlign.Center, VerticalAlign.Center, new ColorValue(1, 0, 0)); } }
/// <summary>Overridden from <see cref="Engine.EntitySystem.Entity.OnTick()"/>.</summary> protected override void OnTick() { base.OnTick(); //single mode. recreate player units if need if (EntitySystemWorld.Instance.IsSingle()) { if (GameMap.Instance.GameType == GameMap.GameTypes.Action || GameMap.Instance.GameType == GameMap.GameTypes.TPSArcade || GameMap.Instance.GameType == GameMap.GameTypes.TurretDemo || GameMap.Instance.GameType == GameMap.GameTypes.VillageDemo || GameMap.Instance.GameType == GameMap.GameTypes.PlatformerDemo || GameMap.Instance.GameType == GameMap.GameTypes.AssaultKnights) { if (PlayerManager.Instance != null) { foreach (PlayerManager.ServerOrSingle_Player player in PlayerManager.Instance.ServerOrSingle_Players) { if (player.Intellect == null || player.Intellect.ControlledObject == null) { ServerOrSingle_CreatePlayerUnit(player); } } } } } //networking mode if (EntitySystemWorld.Instance.IsServer()) { if (GameMap.Instance.GameType == GameMap.GameTypes.Action || GameMap.Instance.GameType == GameMap.GameTypes.TPSArcade || GameMap.Instance.GameType == GameMap.GameTypes.TurretDemo || GameMap.Instance.GameType == GameMap.GameTypes.VillageDemo || GameMap.Instance.GameType == GameMap.GameTypes.PlatformerDemo || GameMap.Instance.GameType == GameMap.GameTypes.AssaultKnights) //iNCIN -- OK NOW { if (PlayerManager.Instance != null) { UserManagementServerNetworkService userManagementService = GameNetworkServer.Instance.UserManagementService; //remove users again: foreach (PlayerManager.ServerOrSingle_Player player in PlayerManager.Instance.ServerOrSingle_Players) { if (player.User != null && player.User != userManagementService.ServerUser) { NetworkNode.ConnectedNode connectedNode = player.User.ConnectedNode; if (connectedNode == null || connectedNode.Status != NetworkConnectionStatuses.Connected) { if (player.Intellect != null) { PlayerIntellect playerIntellect = player.Intellect as PlayerIntellect; if (playerIntellect != null) { playerIntellect.TryToRestoreMainControlledUnit(); } if (player.Intellect.ControlledObject != null) { player.Intellect.ControlledObject.Die(); } player.Intellect.SetForDeletion(true); player.Intellect = null; } PlayerManager.Instance.ServerOrSingle_RemovePlayer(player); goto again; } } } //add users foreach (UserManagementServerNetworkService.UserInfo user in userManagementService.Users) { //check whether "EntitySystem" service on the client if (user.ConnectedNode != null) { if (!user.ConnectedNode.RemoteServices.Contains("EntitySystem")) { continue; } } PlayerManager.ServerOrSingle_Player player = PlayerManager.Instance. ServerOrSingle_GetPlayer(user); if (player == null) { player = PlayerManager.Instance.Server_AddClientPlayer(user); PlayerIntellect intellect = (PlayerIntellect)Entities.Instance. Create("PlayerIntellect", World.Instance); intellect.PostCreate(); player.Intellect = intellect; if (GameNetworkServer.Instance.UserManagementService.ServerUser != user) { //player on client RemoteEntityWorld remoteEntityWorld = GameNetworkServer.Instance. EntitySystemService.GetRemoteEntityWorld(user); intellect.Server_SendSetInstanceToClient(remoteEntityWorld); } else { //player on this server PlayerIntellect.SetInstance(intellect); } //player.Intellect = intellect; if (player.User.Faction == null) { return; } FactionType f = (FactionType)EntityTypes.Instance.GetByName(player.User.Faction); player.Intellect.Faction = f; } } //create units foreach (PlayerManager.ServerOrSingle_Player player in PlayerManager.Instance.ServerOrSingle_Players) { if (player.Intellect != null && player.Intellect.ControlledObject == null) { if (GameMap.Instance.GameType == GameMap.GameTypes.AssaultKnights) { ServerOrSingle_CreatePlayerUnit(player); } else { ServerOrSingle_CreatePlayerUnit(player); } } } } } } }