Beispiel #1
0
 public unsafe int Send(UOMessage msg, int arg1 = 0, int arg2 = 0, int arg3 = 0)
 {
     lock (syncRoot)
     {
         msgOut[0] = (int)msg;
         msgOut[1] = arg1;
         msgOut[2] = arg2;
         msgOut[3] = arg3;
         SignalObjectAndWait(sentOut, handledOut);
         return(msgOut[0]);
     }
 }
Beispiel #2
0
        public unsafe int SendData(UOMessage msg, byte[] buffer, int len)
        {
            lock (syncRoot)
            {
                fixed(byte *b = buffer)
                memcpy(dataOut, b, len);

                msgOut[0] = (int)msg;
                msgOut[1] = len;
                SignalObjectAndWait(sentOut, handledOut);
                return(msgOut[0]);
            }
        }
Beispiel #3
0
        private static unsafe int OnMessage(UOMessage msg, int arg1, int arg2, int arg3, byte *data)
        {
            try
            {
                switch (msg)
                {
                case UOMessage.Ready:
                    Ready = true;
                    hooks.Send(UOMessage.ConnectionInfo, (int)ServerIP, ServerPort);
                    hooks.Send(UOMessage.GameSize, Width, Height);
                    OnInit();
                    break;

                case UOMessage.Connected:
                    Connected.Raise();
                    break;

                case UOMessage.Disconnecting:
                    Disconnecting.Raise();
                    break;

                case UOMessage.Closing:
                    Closing.Raise();
                    break;

                case UOMessage.Focus:
                    FocusChanged.Raise(arg1 != 0);
                    break;

                case UOMessage.Visibility:
                    VisibilityChanged.Raise(arg1 != 0);
                    break;

                case UOMessage.KeyDown:
                    UOKeyEventArgs keyArgs = new UOKeyEventArgs(arg1, arg2);
                    KeyDown.Raise(keyArgs);
                    if (keyArgs.Filter)
                    {
                        return(1);
                    }
                    break;

                case UOMessage.PacketToClient:
                    Packet toClient = new Packet(data, arg1);
                    PacketToClient.Raise(toClient);
                    if (toClient.Filter)
                    {
                        return(1);
                    }
                    if (toClient.Changed)
                    {
                        return(2);
                    }
                    break;

                case UOMessage.PacketToServer:
                    Packet toServer = new Packet(data, arg1);
                    PacketToServer.Raise(toServer);
                    if (toServer.Filter)
                    {
                        return(1);
                    }
                    if (toServer.Changed)
                    {
                        return(2);
                    }
                    break;
                }
            }
            catch (Exception ex) { OnException(ex); }
            return(0);
        }
Beispiel #4
0
        private static unsafe int OnMessage(UOMessage msg, int arg1, int arg2, int arg3, byte* data)
        {
            try
            {
                switch (msg)
                {
                    case UOMessage.Ready:
                        Ready = true;
                        hooks.Send(UOMessage.ConnectionInfo, (int)ServerIP, ServerPort);
                        hooks.Send(UOMessage.GameSize, Width, Height);
                        OnInit();
                        break;

                    case UOMessage.Connected:
                        Connected.Raise();
                        break;

                    case UOMessage.Disconnecting:
                        Disconnecting.Raise();
                        break;

                    case UOMessage.Closing:
                        Closing.Raise();
                        break;

                    case UOMessage.Focus:
                        FocusChanged.Raise(arg1 != 0);
                        break;

                    case UOMessage.Visibility:
                        VisibilityChanged.Raise(arg1 != 0);
                        break;

                    case UOMessage.KeyDown:
                        UOKeyEventArgs keyArgs = new UOKeyEventArgs(arg1, arg2);
                        KeyDown.Raise(keyArgs);
                        if (keyArgs.Filter)
                            return 1;
                        break;

                    case UOMessage.PacketToClient:
                        Packet toClient = new Packet(data, arg1);
                        PacketToClient.Raise(toClient);
                        if (toClient.Filter)
                            return 1;
                        if (toClient.Changed)
                            return 2;
                        break;

                    case UOMessage.PacketToServer:
                        Packet toServer = new Packet(data, arg1);
                        PacketToServer.Raise(toServer);
                        if (toServer.Filter)
                            return 1;
                        if (toServer.Changed)
                            return 2;
                        break;
                }
            }
            catch (Exception ex) { OnException(ex); }
            return 0;
        }
Beispiel #5
0
        public unsafe int SendData(UOMessage msg, byte[] buffer, int len)
        {
            lock (syncRoot)
            {
                fixed (byte* b = buffer)
                    memcpy(dataOut, b, len);

                msgOut[0] = (int)msg;
                msgOut[1] = len;
                SignalObjectAndWait(sentOut, handledOut);
                return msgOut[0];
            }
        }
Beispiel #6
0
 public unsafe int Send(UOMessage msg, int arg1 = 0, int arg2 = 0, int arg3 = 0)
 {
     lock (syncRoot)
     {
         msgOut[0] = (int)msg;
         msgOut[1] = arg1;
         msgOut[2] = arg2;
         msgOut[3] = arg3;
         SignalObjectAndWait(sentOut, handledOut);
         return msgOut[0];
     }
 }