private void SendText(UserManagementServerNetworkService.UserInfo fromUser, string text, UserManagementServerNetworkService.UserInfo privateToUser) { if (ReceiveText != null) { ReceiveText(this, fromUser, text, null); } if (privateToUser != null) { if (privateToUser.ConnectedNode != null) { SendTextToClient(privateToUser, fromUser, text); } } else { foreach (UserManagementServerNetworkService.UserInfo toUser in userManagementService.Users) { if (toUser.ConnectedNode != null) { SendTextToClient(toUser, fromUser, text); } } } }
private void UserManagementService_AddUserEvent(UserManagementServerNetworkService service, UserManagementServerNetworkService.UserInfo user) { if (World.Instance != null && EntitySystemWorld.Instance.IsServer()) { CreateClientRemoteEntityWorldAndSynchronizeWorld(user); } }
public void SayPrivate(string text, UserManagementServerNetworkService.UserInfo toUser) { UserManagementServerNetworkService.UserInfo fromUser = userManagementService.ServerUser; if (fromUser == null) { Log.Fatal("ChatServerNetworkService: Say: Server user is not created."); } SendText(fromUser, text, toUser); }
private void SendTextToClient(UserManagementServerNetworkService.UserInfo toUser, UserManagementServerNetworkService.UserInfo fromUser, string text) { MessageType messageType = GetMessageType("textToClient"); SendDataWriter writer = BeginMessage(toUser.ConnectedNode, messageType); writer.WriteVariableUInt32(fromUser.Identifier); writer.Write(text); EndMessage(); }
private void UserManagementService_RemoveUserEvent(UserManagementServerNetworkService service, UserManagementServerNetworkService.UserInfo user) { ClientRemoteEntityWorld remoteEntityWorld = GetRemoteEntityWorld(user); if (remoteEntityWorld != null) { networkingInterface.DisconnectRemoteEntityWorld(remoteEntityWorld); clientRemoteEntityWorlds.Remove(remoteEntityWorld); } }
public ClientRemoteEntityWorld GetRemoteEntityWorld( UserManagementServerNetworkService.UserInfo user) { for (int n = 0; n < clientRemoteEntityWorlds.Count; n++) { ClientRemoteEntityWorld remoteEntityWorld = clientRemoteEntityWorlds[n]; if (remoteEntityWorld.User == user) { return(remoteEntityWorld); } } return(null); }
private void CreateClientRemoteEntityWorldAndSynchronizeWorld( UserManagementServerNetworkService.UserInfo user) { if (user.ConnectedNode != null)//check for local user { { MessageType messageType = GetMessageType("worldCreateBeginToClient"); SendDataWriter writer = BeginMessage(user.ConnectedNode, messageType); writer.Write(World.Instance.Type.Name); if (Map.Instance != null) { writer.Write(Map.Instance.VirtualFileName); } else { writer.Write(""); } writer.Write(worldCheckIdentifier); EndMessage(); } if (GetRemoteEntityWorld(user) == null)//check for arealdy created { //create entity remote world ClientRemoteEntityWorld remoteEntityWorld = new ClientRemoteEntityWorld(user); clientRemoteEntityWorlds.Add(remoteEntityWorld); networkingInterface.ConnectRemoteEntityWorld(remoteEntityWorld); } { MessageType messageType = GetMessageType("worldCreateEndToClient"); SendDataWriter writer = BeginMessage(user.ConnectedNode, messageType); EndMessage(); } } }
private bool ReceiveMessage_TextToServer(NetworkNode.ConnectedNode sender, MessageType messageType, ReceiveDataReader reader, ref string additionalErrorMessage) { //get source user UserManagementServerNetworkService.UserInfo fromUser = userManagementService. GetUser(sender); //get data of message string text = reader.ReadString(); uint privateToUserIdentifier = reader.ReadVariableUInt32(); if (!reader.Complete()) { return(false); } //send text to the clients if (privateToUserIdentifier != 0) { //send text to the specific user UserManagementServerNetworkService.UserInfo privateToUser = userManagementService. GetUser(privateToUserIdentifier); if (privateToUser != null) { SendText(fromUser, text, privateToUser); } else { //no user anymore } } else { SendText(fromUser, text, null); } return(true); }
protected override void OnConnectedNodeConnectionStatusChanged( NetworkNode.ConnectedNode connectedNode, NetworkConnectionStatuses status, string message) { base.OnConnectedNodeConnectionStatusChanged(connectedNode, status, message); //connected if (status == NetworkConnectionStatuses.Connected) { //add to user management and send events to all clients userManagementService.CreateClientUser(connectedNode); } //disconnected if (status == NetworkConnectionStatuses.Disconnected) { //remove user UserManagementServerNetworkService.UserInfo user = userManagementService.GetUser( connectedNode); if (user != null) { userManagementService.RemoveUser(user); } } }
public void Server_MoveBegin( UserManagementServerNetworkService.UserInfo user ) { if( serverOrSingle_Moving ) Log.Fatal( "JigsawPuzzlePiece: Server_BeginMoving: serverOrSingle_Moving == true." ); serverOrSingle_Moving = true; serverOrSingle_movingTime = 0; server_movingByUser = user; //inform clients (send to the clients MoveBeginToClient message) SendDataWriter writer = BeginNetworkMessage( typeof( JigsawPuzzlePiece ), (ushort)NetworkMessages.MoveBeginToClient ); writer.WriteVariableUInt32( server_movingByUser.Identifier ); EndNetworkMessage(); }
public void ServerOrSingle_MoveFinish() { if( !serverOrSingle_Moving ) return; serverOrSingle_Moving = false; server_movingByUser = null; serverOrSingle_movingTime = 0; bool putToDestinationPlace = false; //check for destination place { Vec2 destination = JigsawPuzzleManager.Instance.GetPieceDestinationPosition( Index ); if( Math.Abs( Position.X - destination.X ) < .2f && Math.Abs( Position.Y - destination.Y ) < .2f ) { //move to destination place //"Position" will be send to clients from JigsawPuzzlePiece.OnSetTransform() method Position = new Vec3( destination.X, destination.Y, 0 ); putToDestinationPlace = true; } } //check for complete puzzle bool completePuzzle = true; { foreach( Entity entity in Map.Instance.Children ) { JigsawPuzzlePiece piece = entity as JigsawPuzzlePiece; if( piece != null ) { Vec2 destination = JigsawPuzzleManager.Instance.GetPieceDestinationPosition( piece.Index ); if( Math.Abs( piece.Position.X - destination.X ) > .01f || Math.Abs( piece.Position.Y - destination.Y ) > .01f ) { completePuzzle = false; break; } } } } if( EntitySystemWorld.Instance.IsServer() ) { SendDataWriter writer = BeginNetworkMessage( typeof( JigsawPuzzlePiece ), (ushort)NetworkMessages.MoveFinishToClient ); writer.Write( putToDestinationPlace ); writer.Write( completePuzzle ); EndNetworkMessage(); } if( EntitySystemWorld.Instance.IsServer() || EntitySystemWorld.Instance.IsSingle() ) { //play sounds if( putToDestinationPlace ) ClientOrSingle_SoundPlay( "Maps\\JigsawPuzzleGame\\PutToDestinationPlace.ogg" ); if( completePuzzle ) ClientOrSingle_SoundPlay( "Maps\\JigsawPuzzleGame\\CompletePuzzle.ogg" ); } }
// internal ClientRemoteEntityWorld(UserManagementServerNetworkService.UserInfo user) : base("Client remote entity world (User: \"" + user.ToString() + "\")") { this.user = user; }
public ServerOrSingle_Player( uint identifier, string name, bool bot, UserManagementServerNetworkService.UserInfo user ) { this.identifier = identifier; this.name = name; this.bot = bot; this.user = user; }