Example #1
0
        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);
     }
 }
Example #3
0
 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);
 }
Example #4
0
        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();
                }
            }
        }
Example #8
0
        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);
                }
            }
        }
Example #10
0
        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();
        }
Example #11
0
        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;
            }
Example #13
0
            public ServerOrSingle_Player( uint identifier, string name, bool bot,
				UserManagementServerNetworkService.UserInfo user )
            {
                this.identifier = identifier;
                this.name = name;
                this.bot = bot;
                this.user = user;
            }
            //

            internal ClientRemoteEntityWorld(UserManagementServerNetworkService.UserInfo user)
                : base("Client remote entity world (User: \"" + user.ToString() + "\")")
            {
                this.user = user;
            }