示例#1
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;
 }
        void Server_ChatService_ReceiveText(ChatServerNetworkService sender,
                                            UserManagementServerNetworkService.UserInfo fromUser, string text,
                                            UserManagementServerNetworkService.UserInfo privateToUser)
        {
            string userName = fromUser != null ? fromUser.Name : "(null)";

            AddMessage(string.Format("{0}: {1}", userName, text));
        }
示例#3
0
        void ChatService_ReceiveText(ChatServerNetworkService sender,
                                     UserManagementServerNetworkService.UserInfo fromUser,
                                     string text, UserManagementServerNetworkService.UserInfo privateToUser)
        {
            string userName   = fromUser != null ? fromUser.Name : "(null)";
            string toUserName = privateToUser != null ? privateToUser.Name : "All";

            Log("Chat: {0} -> {1}: {2}", userName, toUserName, text);
        }
        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());
        }
示例#5
0
		public ServerOrSingle_Player ServerOrSingle_GetPlayer(
			UserManagementServerNetworkService.UserInfo user )
		{
			if( user == null )
				Log.Fatal( "PlayerManager: ServerOrSingle_GetPlayerByIntellect: user == null." );

			//it is can be slowly. need to use Dictionary.
			foreach( ServerOrSingle_Player player in serverOrSingle_players )
			{
				if( player.User == user )
					return player;
			}
			return null;
		}
示例#6
0
		public ServerOrSingle_Player Server_AddClientPlayer(
			UserManagementServerNetworkService.UserInfo user )
		{
			uint identifier = serverOrSingle_playerIdentifierCounter;
			serverOrSingle_playerIdentifierCounter++;

			ServerOrSingle_Player player = new ServerOrSingle_Player( identifier, user.Name, false,
				user );
			serverOrSingle_players.Add( player );

			Server_SendAddPlayerToClients( EntitySystemWorld.Instance.RemoteEntityWorlds, player );

			return player;
		}
        private void Server_ReceiveMoveTryToFinish(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            if (!reader.Complete())
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            if (user == server_movingByUser)
            {
                ServerOrSingle_MoveFinish();
            }
        }
        protected override void Server_OnClientDisconnected(RemoteEntityWorld remoteEntityWorld)
        {
            base.Server_OnClientDisconnected(remoteEntityWorld);

            //finish moving when user disconnected
            if (serverOrSingle_Moving)
            {
                EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                    (EntitySystemServerNetworkService.ClientRemoteEntityWorld)remoteEntityWorld;
                UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

                if (user == server_movingByUser)
                {
                    ServerOrSingle_MoveFinish();
                }
            }
        }
        bool Server_CheckRemoteEntityWorldAssociatedWithThisIntellect(RemoteEntityWorld sender)
        {
            UserManagementServerNetworkService.UserInfo senderUser =
                ((EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender).User;

            if (PlayerManager.Instance != null)
            {
                PlayerManager.ServerOrSingle_Player player = PlayerManager.Instance.
                                                             ServerOrSingle_GetPlayer(this);

                if (senderUser != player.User)
                {
                    return(false);
                }
            }

            return(true);
        }
        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();
        }
        private void Server_ReceiveMoveUpdatePosition(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            Vec2 newPosition = reader.ReadVec2();

            if (!reader.Complete())
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            if (user == server_movingByUser)
            {
                ServerOrSingle_MoveUpdatePosition(newPosition);
            }
        }
        private void Server_ReceiveMoveTryToBegin(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            if (!reader.Complete())
            {
                return;
            }

            //already moving
            if (serverOrSingle_Moving)
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            Server_MoveBegin(user);
        }
示例#13
0
 void UserManagementService_RemoveUserEvent(UserManagementServerNetworkService sender,
                                            UserManagementServerNetworkService.UserInfo user)
 {
     listBoxUsers.Items.Remove(user);
     Log("User disconnected: " + user.ToString());
 }
示例#14
0
 void UserManagementService_AddUserEvent(UserManagementServerNetworkService sender,
                                         UserManagementServerNetworkService.UserInfo user)
 {
     Log("User connected: " + user.ToString());
     listBoxUsers.Items.Add(user);
 }
        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");
                }
            }
        }