Beispiel #1
2
        public static void RegisterHandler(PacketId packetId, PacketHandler handler)
        {
            if (packetHandlers.ContainsKey(packetId))
                throw new Exception("Duplicate packet handler");

            packetHandlers[packetId] = handler;
        }
Beispiel #2
1
        public static void Initialize()
        {
            m_GHandlers = new PacketHandler<GameConnection>[0x20];
            m_LHandlers = new PacketHandler<ArcheAgeConnection>[0x30];

            Registration();
        }
Beispiel #3
1
		/// <summary>
		/// Constructor
		/// </summary>
		public Server()
		{
            m_disposed = false;
            m_handler = PacketHandler.Instatinate();
            m_thread = new Thread(new ThreadStart(AcceptThread));
            m_thread.Name = "UOExt server thread";
            m_thread.Start();
		}
        public PacketHandler OnBlockChange(PacketType p_type, string CustomPacketType, ref PacketReader _pReader, PacketHandler packet, ref ClientManager _client)
        {
            PlayerBlockPlacementPacket _p = (PlayerBlockPlacementPacket)packet;
            BlockChangePacket block_change = new BlockChangePacket(PacketType.BlockChange);
            block_change.Metadata = Utils.GetMetadata(_p.BlockID.s_short, _p.Direction, _client.id);
            //block_change.Metadata = 0x00;
            int X = _p.X;
            byte Y = _p.Y;
            int Z = _p.Z;
            int index = 0;
            int temp = (_p.Direction == 0 ? Y-- :
                (_p.Direction == 1 ? Y++ :
                (_p.Direction == 2 ? Z-- :
                (_p.Direction == 3 ? Z++ :
                (_p.Direction == 4 ? X-- : X++)))));

            if (_p.BlockID.s_short > 255)
            {
                //SendBlockChange(block_change, ref _client, ref _pReader, _p, true);

            }
            else//This is a item ID
            {
                SendBlockChange(block_change, ref _client, ref _pReader, _p, true);
            }
            return block_change;
        }
Beispiel #5
0
 public MinecraftClient(Session session)
 {
     Session = session;
     PacketQueue = new ConcurrentQueue<IPacket>();
     PacketHandlers = new PacketHandler[256];
     Handlers.PacketHandlers.Register(this);
 }
Beispiel #6
0
        public static void Initialize()
        {
            m_LHandlers = new PacketHandler<LoginConnection>[0x20];
            levels = new Dictionary<int, PacketHandler<ClientConnection>[]>();

            RegisterDelegates();
        }
Beispiel #7
0
		public static void Configure()
		{
			m_Real6C = PacketHandlers.GetHandler( 0x6C );
			m_LastTarget = new Hashtable();

			PacketHandlers.Register( 0x6C, 19, true, new OnPacketReceive( TargetResponse ) );
			EventSink.Disconnected += new DisconnectedEventHandler( EventSink_Disconnected );
		}
        public BidirectionalStream(NetworkReader from, NetworkWriter to, PacketHandler packetHandler)
        {
            reader = from;
            writer = to;

            handler = packetHandler;

            var rStart = new ThreadStart(Run);
            readerThread = new Thread(rStart);
            readerThread.Start();
        }
Beispiel #9
0
        public Program()
        {
            try
            {
                _handler = new PacketHandler("127.0.0.1", 25565, HandlerMode.Client);
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.Message);
                Console.ReadKey();
                Environment.Exit(1);
            }

            _loginResponse = Login();

            // Subscribe packets
            _handler.Subscribe(Packet.Handshake, ShakeHands);

            _handler.Subscribe(Packet.Login, p =>
                                                 {
                                                     var packet = (LoginResponse) p;
                                                     Console.WriteLine("Entity ID: " + packet.EntityId);
                                                     Console.WriteLine("Map seed: " + packet.MapSeed);
                                                 });

            _handler.UnsubscribedPacket += p => { };
            _handler.Subscribe(Packet.Disconnect, p =>
                                                      {
                                                          Console.Write("You were kicked: " + ((Disconnect) p).Reason);
                                                          _handler.Disconnect();
                                                      });

            _handler.Subscribe(Packet.ChatMessage, p => Console.WriteLine(((ChatMessage)p).Message));
            _handler.EventMode = true;

            // START ACTION

            // This starts the server joining chain of packets
            _handler.SendPacket(new Handshake { Username = _username });

            while (_handler.IsActive)
            {
                var line = Console.ReadLine();
                if (line == "exit")
                {
                    _handler.SendPacket(new Disconnect {Reason = "This is ignored anyways, so eh"});

                    _handler.Disconnect();
                    break;
                }

                _handler.SendPacket(new ChatMessage { Message = line });
            }
        }
 public ReliableUDPConnection(UdpClient sender, IPEndPoint destinationep, UInt32 cid, Connection owner)
 {
     DestinationEP = destinationep;
     ConnectionID = cid;
     Sender = sender;
     Sent = new Dictionary<UInt32,UDPPacket>();
     Owner = owner;
     Received = new HashSet<UInt32>();
     OnPacketRecv += new PacketHandler(RegisterPacket);
     OnPacketRecv += new PacketHandler(OnPacket);
 }
Beispiel #11
0
            public bool RegisterHandler(UInt32 id, PacketHandler handler)
            {
                if (true == FHandlers.ContainsKey(id))
                {

                    return false;

                }

                FHandlers[id] = handler;

                return true;
            }
Beispiel #12
0
 public MinecraftServer()
 {
     LogicHelpers.Register();
     PacketHandlers = new PacketHandler[256];
     Handlers.PacketHandlers.RegisterHandlers(this);
     NetworkLock = new object();
     Clients = new List<RemoteClient>();
     Settings = ServerSettings.DefaultSettings;
     EntityManager = new EntityManager(this);
     LastTimeUpdate = DateTime.MinValue;
     NextChunkUpdate = DateTime.MinValue;
     PhysicsEngines = new List<PhysicsEngine>();
 }
Beispiel #13
0
 //NO LONGER NEEDED.
 public PacketHandler OnSpwanPositionHandler(PacketType p_type, string CustomPacketType, ref PacketReader _pReader, PacketHandler _p, ref ClientManager cm)
 {
     SpawnPlayerPacket p = new SpawnPlayerPacket(PacketType.SpwanPosition);
     p.X = cm._player.position.X;
     p.Y = cm._player.position.Z;
     p.Z = cm._player.position.Y;
     p.BuildPacket();
     cm.SendPacket(p, cm.id, ref cm, false, false);
     int i = 0;
     for (; i < base.ModuleAddons.Count; i++)
     {
         base.ModuleAddons.ElementAt(i).Value(PacketType.SpwanPosition, ModuleAddons.ElementAt(i).Key, ref _pReader, (PacketHandler)p, ref cm);
     }
     p = null;
     return _p;
 }
        internal static void RegisterHandlers(object source, ConnectionEventArgs args)
        {
            PacketHandler PRequestSubscriptionData = new PacketHandler(Process_RequestSubscriptionData);
            //PacketHandler P = new PacketHandler(Process_);
            //PacketHandler P = new PacketHandler(Process_);
            //PacketHandler P = new PacketHandler(Process_);
            //PacketHandler P = new PacketHandler(Process_);
            //PacketHandler P = new PacketHandler(Process_);
            //PacketHandler P = new PacketHandler(Process_);

            (source as IonTcpConnection).
                AddHandler(26, PacketHandlerPriority.DefaultAction, PRequestSubscriptionData);
                //AddHandler(, PacketHandlerPriority.DefaultAction, ).
                //AddHandler(, PacketHandlerPriority.DefaultAction, ).
                //AddHandler(, PacketHandlerPriority.DefaultAction, ).
                //AddHandler(, PacketHandlerPriority.DefaultAction, ).
                //AddHandler(, PacketHandlerPriority.DefaultAction, )
        }
Beispiel #15
0
        public static void Initialize()
        {
            m_Target = PacketHandlers.GetHandler(0x6C);
            m_Target6017 = PacketHandlers.Get6017Handler(0x6C);

            m_Equip = PacketHandlers.GetHandler(0x13);
            m_Equip6017 = PacketHandlers.Get6017Handler(0x13);

            if (m_Target6017 == null)
                m_Target6017 = m_Target;

            if (m_Equip6017 == null)
                m_Equip6017 = m_Equip;

            PacketHandlers.Register(0x6C, 19, true, new OnPacketReceive(TargetResponse));
            PacketHandlers.Register6017(0x6C, 19, true, new OnPacketReceive(TargetResponse6017));
            PacketHandlers.Register(0x13, 10, true, new OnPacketReceive(EquipReq));
            PacketHandlers.Register6017(0x13, 10, true, new OnPacketReceive(EquipReq6017));
        }
Beispiel #16
0
        internal void PAGE_Add(HttpListenerContext Context)
        {
            if (Context.Request.IsLocal)
            {
                string Header = Context.Request.QueryString["header"];

                uint HeaderID = 0;

                if (!uint.TryParse(Header, out HeaderID))
                    HeaderID = Base64Encoding.DecodeUInt32(Encoding.UTF8.GetBytes(Header));

                PacketHandler Handler = new PacketHandler(Process_DYNAMIC);
                lock(this.fHandlers)
                    fHandlers.Add(HeaderID, Handler);
                RegisterHandlersToExisting(HeaderID, Handler);

                Context.Response.Redirect("addform");
                Context.Response.Close();
            }
        }
Beispiel #17
0
        /// <summary>Constructor</summary>
        /// <param name="client">Client socket with connected client</param>
        /// <param name="ip">Client ip</param>
        /// <param name="port">Server port</param>
        public Peer(Socket client, Server server, PacketHandler handler)
        {
            m_disposed = false;
            m_socket = client;
            m_server = server;
            m_buffer = new byte[65536 * 2];
            m_sendBuffer = new byte[65536 * 2];
            m_bufferPointer = 0;
            m_handler = handler;
            m_connected = true;
            m_AsyncSend = new AsyncCallback(OnSend);
            m_AsyncRecive = new AsyncCallback(OnRecive);
            m_sending = false;
            m_chunkSended = new AutoResetEvent(false);

            m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, 65536 * 2); // this should be enough for every packet
            m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, 65536 * 2);
            m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, 1);
            m_socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, 1);

            BeginReceive();
        }
Beispiel #18
0
        public RemoteClient(IMultiplayerServer server, IPacketReader packetReader, PacketHandler[] packetHandlers, Socket connection)
        {
            LoadedChunks = new List<Coordinates2D>();
            Server = server;
            Inventory = new InventoryWindow(server.CraftingRepository);
            InventoryWindow.WindowChange += HandleWindowChange;
            SelectedSlot = InventoryWindow.HotbarIndex;
            CurrentWindow = InventoryWindow;
            ItemStaging = ItemStack.EmptyStack;
            KnownEntities = new List<IEntity>();
            Disconnected = false;
            EnableLogging = server.EnableClientLogging;
            NextWindowID = 1;
            Connection = connection;
            SocketPool = new SocketAsyncEventArgsPool(100, 200, 65536);
            PacketReader = packetReader;
            PacketHandlers = packetHandlers;

            cancel = new CancellationTokenSource();

            StartReceive();
        }
Beispiel #19
0
        public override void UOExtInitialize(PacketHandler hndlr)
        {
            m_libraryList = new LibraryList();
            m_pluginsList = new PluginsList();
            m_initComplete = new InitializationComplete();

            hndlr.RegisterPacketHandler(0x00, 0, new OnPacketRecive(UOExtPacket));

            for (short i = 0; i < Dll.Dlls.Length; i++)
            {
                Dll.Dlls[i].Header = new DllHeader(Dll.Dlls[i], i);
                uint offset = (uint)(Dll.Dlls[i].Header.DllSize);
                do
                {
                    DllContent dc = new DllContent(Dll.Dlls[i], offset);
                    offset += (uint)dc.DllChunkSize;
                    Dll.Dlls[i].Content.Enqueue(dc);
                } while (offset < Dll.Dlls[i].Size);
            }
            Dll.UOExt = new Dll(Config.UOExtPath, true);
            Dll.UOExtGUI = new Dll(Config.UOExtGUIPath, true);
        }
Beispiel #20
0
 public void RegisterPacketHandler(IPacket packet, PacketHandler handler)
 {
     PacketHandlers.Add(packet.ID, handler);
 }
Beispiel #21
0
 protected void LoadControls()
 {
     #region Main menu
     MnuMain   = new Menu();
     BtnCreate = new Button(Programs[ProgramID.Button],
                            new Vector3(Width / 2 - 64, Height - 128, 0.0f), Vector3.Zero, Vector3.One,
                            Controls, Models, MnuMain,
                            128, 32, 2, Width, Height, Matrix4.Identity,
                            new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                            new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                            () =>
     {
         MnuMain.HideAll();
         MnuNetwork.ShowAll();
         LblNetAddress.HideAll();
         TxtNetAddress.HideAll();
         BtnNetJoin.HideAll();
         return(Task.Delay(0));
     }, "Create game");
     BtnJoin = new Button(Programs[ProgramID.Button],
                          new Vector3(Width / 2 - 64, Height - 192, 0.0f), Vector3.Zero, Vector3.One,
                          Controls, Models, MnuMain,
                          128, 32, 2, Width, Height, Matrix4.Identity,
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                          () =>
     {
         MnuMain.HideAll();
         MnuNetwork.ShowAll();
         BtnNetCreate.HideAll();
         return(Task.Delay(0));
     }, "Join game");
     BtnExit = new Button(Programs[ProgramID.Button],
                          new Vector3(Width / 2 - 64, Height - 256, 0.0f), Vector3.Zero, Vector3.One,
                          Controls, Models, MnuMain,
                          128, 32, 2, Width, Height, Matrix4.Identity,
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                          () =>
     {
         Exit();
         return(Task.Delay(0));
     }, "Exit");
     MnuMain.CreateBuffers();
     #endregion
     #region Test menu
     MnuTest = new Menu();
     LblTest = new Label(Programs[ProgramID.Label],
                         Vector3.Zero, Vector3.Zero, Vector3.One,
                         Controls, Models, MnuTest,
                         92, 18, 2, Width, Height, Matrix4.Identity, new Color4(0.1f, 0.1f, 0.1f, 0.6f), "X:0 Y:0");
     BtnTest = new Button(Programs[ProgramID.Button],
                          new Vector3(8.0f, 40.0f, 0.0f), Vector3.Zero, Vector3.One,
                          Controls, Models, MnuTest,
                          128, 32, 2, Width, Height, Matrix4.Identity,
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                          new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                          () =>
     {
         Polymono.Print("Hello");
         return(Task.Delay(0));
     }, "Test button");
     TxtTest = new Textbox(Programs[ProgramID.Label],
                           new Vector3(8.0f, 80.0f, 0.0f), Vector3.Zero, Vector3.One,
                           Controls, Models, MnuTest,
                           128, 32, 2, Width, Height, Matrix4.Identity,
                           new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                           new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                           "Test Textbox");
     MnuTest.CreateBuffers();
     #endregion
     #region Server creation menu
     MnuNetwork = new Menu();
     LblNetName = new Label(Programs[ProgramID.Label],
                            new Vector3((Width / 2) - 64, Height - (64 * 2) + 24, 0.0f), Vector3.Zero, Vector3.One,
                            Controls, Models, MnuNetwork,
                            92, 18, 2, Width, Height, Matrix4.Identity, new Color4(0.1f, 0.1f, 0.1f, 0.6f),
                            "Enter name:");
     TxtNetName = new Textbox(Programs[ProgramID.Label],
                              new Vector3((Width / 2) - 64, Height - (64 * 2), 0.0f), Vector3.Zero, Vector3.One,
                              Controls, Models, MnuNetwork,
                              128, 32, 2, Width, Height, Matrix4.Identity,
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                              "");
     LblNetAddress = new Label(Programs[ProgramID.Label],
                               new Vector3((Width / 2) - 160, Height - (64 * 3) + 24, 0.0f), Vector3.Zero, Vector3.One,
                               Controls, Models, MnuNetwork,
                               108, 18, 2, Width, Height, Matrix4.Identity, new Color4(0.1f, 0.1f, 0.1f, 0.6f),
                               "Network address:");
     TxtNetAddress = new Textbox(Programs[ProgramID.Label],
                                 new Vector3((Width / 2) - 160, Height - (64 * 3), 0.0f), Vector3.Zero, Vector3.One,
                                 Controls, Models, MnuNetwork,
                                 128, 32, 2, Width, Height, Matrix4.Identity,
                                 new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                                 new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                                 "");
     ChkNetType = new Checkbox(Programs[ProgramID.Button],
                               new Vector3((Width / 2) - 160 + 128 + 8, Height - (64 * 3), 0.0f), Vector3.Zero, Vector3.One,
                               Controls, Models, MnuNetwork,
                               32, 32, 2, Width, Height, Matrix4.Identity,
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f));
     LblNetPort = new Label(Programs[ProgramID.Label],
                            new Vector3((Width / 2) + 32, Height - (64 * 3) + 24, 0.0f), Vector3.Zero, Vector3.One,
                            Controls, Models, MnuNetwork,
                            92, 18, 2, Width, Height, Matrix4.Identity, new Color4(0.1f, 0.1f, 0.1f, 0.6f),
                            "Network port:");
     TxtNetPort = new Textbox(Programs[ProgramID.Label],
                              new Vector3((Width / 2) + 32, Height - (64 * 3), 0.0f), Vector3.Zero, Vector3.One,
                              Controls, Models, MnuNetwork,
                              128, 32, 2, Width, Height, Matrix4.Identity,
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                              "");
     BtnNetCreate = new Button(Programs[ProgramID.Button],
                               new Vector3((Width / 2) - 64, Height - (64 * 4), 0.0f), Vector3.Zero, Vector3.One,
                               Controls, Models, MnuNetwork,
                               128, 32, 2, Width, Height, Matrix4.Identity,
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f), // Default model
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f), // Clicked model
                               () =>
     {
         try
         {
             bool v6;
             if (ChkNetType.State == ControlState.Clicked)
             {
                 v6 = true;
             }
             else
             {
                 v6 = false;
             }
             Server server = new Server(this, TxtNetName.Text, v6);
             int port      = Convert.ToInt32(TxtNetPort.Text);
             server.LocalHandler().Bind(port);
             server.LocalHandler().Listen(10);
             server.Start();
             Network = server;
             State   = GameState.Lobby;
             MnuNetwork.HideAll();
             MnuMessage.ShowAll();
             MnuGame.ShowAll();
         }
         catch (SocketException se)
         {
             Polymono.Error(se.Message);
             Polymono.ErrorF(se.StackTrace);
         }
         catch (FormatException fe)
         {
             Polymono.Error("Port is not a readable number.");
             Polymono.Error(fe.Message);
             Polymono.ErrorF(fe.StackTrace);
         }
         return(Task.Delay(0));
     }, "Create Server");
     BtnNetJoin = new Button(Programs[ProgramID.Button],
                             new Vector3((Width / 2) - 64, Height - (64 * 4), 0.0f), Vector3.Zero, Vector3.One,
                             Controls, Models, MnuNetwork,
                             128, 32, 2, Width, Height, Matrix4.Identity,
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f), // Default model
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f), // Clicked model
                             () =>
     {
         try
         {
             bool v6;
             if (ChkNetType.State == ControlState.Clicked)
             {
                 v6 = true;
             }
             else
             {
                 v6 = false;
             }
             Client client  = new Client(this, v6);
             string address = TxtNetAddress.Text;
             int port       = Convert.ToInt32(TxtNetPort.Text);
             string name    = TxtNetName.Text;
             client.ConnectAsync(address, port, name);
             Network = client;
             State   = GameState.Lobby;
             MnuNetwork.HideAll();
             MnuMessage.ShowAll();
         }
         catch (SocketException se)
         {
             Polymono.Error(se.Message);
             Polymono.ErrorF(se.StackTrace);
         }
         catch (FormatException fe)
         {
             Polymono.Error("Port is not a readable number.");
             Polymono.Error(fe.Message);
             Polymono.ErrorF(fe.StackTrace);
         }
         return(Task.Delay(0));
     }, "Join server");
     BtnNetBack = new Button(Programs[ProgramID.Button],
                             new Vector3((Width / 2) - 64, Height - (64 * 6), 0.0f), Vector3.Zero, Vector3.One,
                             Controls, Models, MnuNetwork,
                             128, 32, 2, Width, Height, Matrix4.Identity,
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                             () =>
     {
         MnuNetwork.HideAll();
         MnuMain.ShowAll();
         return(Task.Delay(0));
     }, "Back");
     MnuNetwork.CreateBuffers();
     #endregion
     #region Message menu
     MnuMessage = new Menu();
     LblMsgBox  = new Label(Programs[ProgramID.Label],
                            new Vector3(32, Height / 2, 0.0f), Vector3.Zero, Vector3.One,
                            Controls, Models, MnuMessage,
                            256, 256, 2, Width, Height, Matrix4.Identity, new Color4(0.1f, 0.1f, 0.1f, 0.6f), "Chat room text" + Environment.NewLine + "Chat room text2");
     TxtMsgInput = new Textbox(Programs[ProgramID.Label],
                               new Vector3(32, Height / 2 - 256, 0.0f), Vector3.Zero, Vector3.One,
                               Controls, Models, MnuMessage,
                               192, 32, 2, Width, Height, Matrix4.Identity,
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                               "");
     BtnMsgSend = new Button(Programs[ProgramID.Button],
                             new Vector3(32 + 192, Height / 2 - 256, 0.0f), Vector3.Zero, Vector3.One,
                             Controls, Models, MnuMessage,
                             64, 32, 2, Width, Height, Matrix4.Identity,
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                             () =>
     {
         string text      = TxtMsgInput.Text.Trim();
         TxtMsgInput.Text = "";
         LblMsgBox.Text  += Environment.NewLine + text;
         Network.SendAsync(PacketHandler.Create(PacketType.Message,
                                                Protocol.Chat.EncodeMessage(text)));
         return(Task.Delay(0));
     }, "Send");
     MnuMessage.CreateBuffers();
     #endregion
     #region Game menu
     MnuGame      = new Menu();
     BtnGameStart = new Button(Programs[ProgramID.Button],
                               new Vector3((Width / 2) - 64, Height - (64 * 4), 0.0f), Vector3.Zero, Vector3.One,
                               Controls, Models, MnuGame,
                               128, 32, 2, Width, Height, Matrix4.Identity,
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                               new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                               () =>
     {
         if (IsServer && Board.GetPlayers().Count > 1)
         {
             // Start game.
             ((Server)Network).AcceptClients = false;
             Network.SendAsync(PacketHandler.Create(PacketType.StartGame,
                                                    Protocol.Game.EncodeStartGame(Board.CurrentPlayerID)));
             State = GameState.LobbyRoll;
             MnuGame.HideAll();
             BtnRollDice.ShowAll();
             Polymono.Debug("Starting game.");
         }
         else
         {
             // Not enough players, not server.
             Polymono.Debug($"Cannot start game: [Is server:{IsServer}] [Players: {Board.GetPlayers().Count}]");
             Polymono.Debug("Needs to be server and have more than 1 player in lobby.");
         }
         // Starts game
         return(Task.Delay(0));
     }, "Start Game");
     BtnGameExit = new Button(Programs[ProgramID.Button],
                              new Vector3((Width / 2) - 64, Height - (64 * 6), 0.0f), Vector3.Zero, Vector3.One,
                              Controls, Models, MnuGame,
                              128, 32, 2, Width, Height, Matrix4.Identity,
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                              new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                              async() =>
     {
         await Network.SendAsync(PacketHandler.Create(PacketType.Disconnect,
                                                      Protocol.Connection.EncodeDisconnect(Board.CurrentPlayerID, "Exit lobby")));
         Network = null;
         Polymono.Debug("Exiting game.");
         // Exits game
     }, "Exit Game");
     MnuPlayerOptions = new Menu();
     BtnRollDice      = new Button(Programs[ProgramID.Button],
                                   new Vector3((Width / 2) - 64, (64 * 2), 0.0f), Vector3.Zero, Vector3.One,
                                   Controls, Models, MnuPlayerOptions,
                                   128, 32, 2, Width, Height, Matrix4.Identity,
                                   new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                                   new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                                   () =>
     {
         int rollOne = DiceOne.GetNumber();
         int rollTwo = DiceTwo.GetNumber();
         Network.SendAsync(PacketHandler.Create(PacketType.DiceRoll,
                                                Protocol.Game.EncodeDiceRoll(rollOne, rollTwo,
                                                                             Board.CurrentPlayerID)));
         if (State == GameState.LobbyRoll)
         {
             BtnRollDice.HideAll();
             Board.EndCurrentTurn(Board.CurrentPlayerID);
             Network.SendAsync(PacketHandler.Create(PacketType.EndTurn,
                                                    Protocol.Game.EncodeEndTurn(Board.CurrentPlayerID)));
         }
         else if (State == GameState.PlayerOptions)
         {
             MnuPlayerOptions.HideAll();
             Board.MoveSpaces(rollOne + rollTwo, Board.CurrentPlayerID);
             State = GameState.Moving;
         }
         return(Task.Delay(0));
     }, "Roll Dice");
     BtnPurchaseProperty = new Button(Programs[ProgramID.Button],
                                      new Vector3((Width / 2) - 256, (64 * 2), 0.0f), Vector3.Zero, Vector3.One,
                                      Controls, Models, MnuPlayerOptions,
                                      128, 32, 2, Width, Height, Matrix4.Identity,
                                      new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                                      new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                                      () =>
     {
         // Purchase current property.
         return(Task.Delay(0));
     }, "Purchase");
     BtnTrade = new Button(Programs[ProgramID.Button],
                           new Vector3((Width / 2) + 192, (64 * 2), 0.0f), Vector3.Zero, Vector3.One,
                           Controls, Models, MnuPlayerOptions,
                           128, 32, 2, Width, Height, Matrix4.Identity,
                           new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                           new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                           () =>
     {
         // Trade screen.
         return(Task.Delay(0));
     }, "Trade");
     BtnEndTurn = new Button(Programs[ProgramID.Button],
                             new Vector3((Width / 2) - 64, (64 * 2), 0.0f), Vector3.Zero, Vector3.One,
                             Controls, Models, MnuPlayerOptions,
                             128, 32, 2, Width, Height, Matrix4.Identity,
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                             () =>
     {
         MnuPlayerOptions.HideAll();
         // Trade screen.
         Board.EndCurrentTurn(Board.CurrentPlayerID);
         Network.SendAsync(PacketHandler.Create(PacketType.EndTurn,
                                                Protocol.Game.EncodeEndTurn(Board.CurrentPlayerID)));
         return(Task.Delay(0));
     }, "End Turn");
     MnuGame.CreateBuffers();
     MnuPlayerOptions.CreateBuffers();
     #endregion
     #region Game menu
     MnuPlayerJailOptions = new Menu();
     BtnPayJail           = new Button(Programs[ProgramID.Button],
                                       new Vector3(), Vector3.Zero, Vector3.One,
                                       Controls, Models, MnuPlayerJailOptions,
                                       128, 32, 2, Width, Height, Matrix4.Identity,
                                       new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                                       new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                                       () =>
     {
         // Pay Jail
         return(Task.Delay(0));
     }, "Roll Dice");
     BtnUseCard = new Button(Programs[ProgramID.Button],
                             new Vector3(), Vector3.Zero, Vector3.One,
                             Controls, Models, MnuPlayerJailOptions,
                             128, 32, 2, Width, Height, Matrix4.Identity,
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.7f, 0.7f, 0.0f, 0.8f),
                             new Color4(0.1f, 0.1f, 0.1f, 0.6f), new Color4(0.0f, 0.6f, 0.7f, 0.8f),
                             () =>
     {
         // Use card
         return(Task.Delay(0));
     }, "Purchase");
     MnuPlayerJailOptions.CreateBuffers();
     #endregion
 }
 internal CifsBrowserPacketHandler(PacketHandler mainPacketHandler) : base(mainPacketHandler)
 {
 }
Beispiel #23
0
 public QueuedPacket(PacketHandler packetHandler, byte[] packetBuffer, int realLength)
 {
     PacketHandler = packetHandler;
     PacketBuffer  = packetBuffer;
     RealLength    = realLength;
 }
Beispiel #24
0
 public static IMessageBusBuilder AddMessageType <T>(this IMessageBusBuilder builder) where T : IMessage
 {
     PacketHandler.Register <T>();
     return(builder);
 }
Beispiel #25
0
        /// <summary>
        /// Unbinds a packet callback from this InSim connection.
        /// </summary>
        /// <param name="packetType">The type of packet to unbind</param>
        /// <param name="callback">The method to unbind.</param>
        public void Unbind(PacketType packetType, PacketHandler callback)
        {
            ThrowIfDisposed();

            bindings.Unbind(packetType, callback);
        }
Beispiel #26
0
 /// <summary>
 /// エラー処理メソッドを登録(サーバー側内部エラー)
 /// </summary>
 /// <param name="code">エラーコード</param>
 /// <param name="h">処理メソッド</param>
 public void OnErrorServer(ushort code, PacketHandler h)
 {
     BuiltinEvent.OnErrorServer(code, h);
 }
Beispiel #27
0
 internal static void OnErrorClient(ushort errorCode, PacketHandler h)
 {
     clientError.OnReceived(errorCode, h);
 }
Beispiel #28
0
 private static void Register(short opcode, OnPacketReceive <LoginConnection> e)
 {
     m_LHandlers[opcode] = new PacketHandler <LoginConnection>(opcode, e);
     m_Maintained++;
 }
Beispiel #29
0
 /// <summary>
 /// エラー処理メソッドを登録(リクエストエラー)
 /// </summary>
 /// <param name="code">エラーコード</param>
 /// <param name="h">処理メソッド</param>
 public void OnErrorClient(ushort code, PacketHandler h)
 {
     BuiltinEvent.OnErrorClient(code, h);
 }
 public bool TryGetHandler(PacketsEnum packetId, out PacketHandler del)
 {
     return(PacketsHanlders.TryGetValue(packetId, out del));
 }
Beispiel #31
0
        public void WillBuyCorrectAmount()
        {
            int vendorSerial = 0x0b0354;

            byte[] shopList =
            {
                0x74, 0x01, 0x67, 0x42, 0x0C, 0x82, 0x83, 0x1B, 0x00, 0x00, 0x00, 0x12, 0x08, 0x31, 0x30, 0x32,
                0x33, 0x38, 0x33, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x31, 0x30, 0x32, 0x34, 0x30, 0x33,
                0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x31, 0x30, 0x32, 0x33, 0x38, 0x32, 0x37, 0x00, 0x00,
                0x00, 0x00, 0x0B, 0x08, 0x31, 0x30, 0x34, 0x31, 0x30, 0x37, 0x32, 0x00, 0x00, 0x00, 0x00, 0x0F,
                0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x35, 0x36, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x30,
                0x32, 0x33, 0x38, 0x35, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x30, 0x32, 0x33, 0x38,
                0x34, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x30, 0x32, 0x33, 0x38, 0x34, 0x36, 0x00,
                0x00, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x30, 0x32, 0x33, 0x38, 0x35, 0x32, 0x00, 0x00, 0x00, 0x00,
                0x0F, 0x08, 0x31, 0x30, 0x32, 0x33, 0x38, 0x34, 0x39, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x31,
                0x30, 0x32, 0x33, 0x38, 0x34, 0x37, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x31, 0x30, 0x32, 0x33,
                0x39, 0x36, 0x32, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x31, 0x30, 0x32, 0x33, 0x39, 0x36, 0x33,
                0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x31, 0x30, 0x32, 0x33, 0x39, 0x37, 0x32, 0x00, 0x00, 0x00,
                0x00, 0x03, 0x08, 0x31, 0x30, 0x32, 0x33, 0x39, 0x37, 0x33, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08,
                0x31, 0x30, 0x32, 0x33, 0x39, 0x37, 0x34, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x31, 0x30, 0x32,
                0x33, 0x39, 0x37, 0x36, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x31, 0x30, 0x32, 0x33, 0x39, 0x38,
                0x31, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x31, 0x30, 0x32, 0x33, 0x39, 0x38, 0x30, 0x00, 0x00,
                0x00, 0x00, 0x0C, 0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x38, 0x32, 0x00, 0x00, 0x00, 0x00, 0x0C,
                0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x38, 0x33, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0x31, 0x30,
                0x32, 0x37, 0x39, 0x38, 0x34, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0x31, 0x30, 0x32, 0x37, 0x39,
                0x38, 0x35, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x38, 0x36, 0x00,
                0x00, 0x00, 0x00, 0x0C, 0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00,
                0x0C, 0x08, 0x31, 0x30, 0x32, 0x37, 0x39, 0x38, 0x31, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0x31,
                0x30, 0x32, 0x37, 0x39, 0x38, 0x38, 0x00
            };

            byte[] contents =
            {
                0x3C, 0x02, 0x21, 0x00, 0x1B, 0x40, 0x1F, 0x00, 0x1B, 0x1F, 0x34, 0x00, 0x00, 0x14, 0x00, 0x1B,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x1A, 0x1F, 0x2D, 0x00,
                0x00, 0x14, 0x00, 0x1A, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00,
                0x19, 0x1F, 0x33, 0x00, 0x00, 0x14, 0x00, 0x19, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1F, 0x00, 0x17, 0x1F, 0x32, 0x00, 0x00, 0x14, 0x00, 0x18, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x14, 0x1F, 0x31, 0x00, 0x00, 0x14, 0x00, 0x17,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x13, 0x1F, 0x30, 0x00,
                0x00, 0x14, 0x00, 0x16, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00,
                0x12, 0x1F, 0x2F, 0x00, 0x00, 0x14, 0x00, 0x15, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1F, 0x00, 0x10, 0x1F, 0x2E, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x0F, 0x0F, 0x8C, 0x00, 0x00, 0x28, 0x00, 0x13,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x0E, 0x0F, 0x8D, 0x00,
                0x00, 0x28, 0x00, 0x12, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00,
                0x0D, 0x0F, 0x88, 0x00, 0x00, 0x28, 0x00, 0x11, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1F, 0x00, 0x0C, 0x0F, 0x86, 0x00, 0x00, 0x14, 0x00, 0x10, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x0A, 0x0F, 0x85, 0x00, 0x00, 0x28, 0x00, 0x0F,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x09, 0x0F, 0x84, 0x00,
                0x00, 0x28, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00,
                0x08, 0x0F, 0x7B, 0x00, 0x00, 0x14, 0x00, 0x0D, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1F, 0x00, 0x07, 0x0F, 0x7A, 0x00, 0x00, 0x14, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x06, 0x0F, 0x07, 0x00, 0x00, 0x14, 0x00, 0x0B,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x05, 0x0F, 0x09, 0x00,
                0x00, 0x14, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00,
                0x04, 0x0F, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x09, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1F, 0x00, 0x02, 0x0F, 0x06, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x01, 0x0F, 0x08, 0x00, 0x00, 0x14, 0x00, 0x07,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1F, 0x00, 0x00, 0x0F, 0x0B, 0x00,
                0x00, 0x14, 0x00, 0x06, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1E, 0xFF,
                0xFF, 0x1F, 0x14, 0x00, 0x00, 0x10, 0x00, 0x05, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00,
                0x00, 0x40, 0x1E, 0xFF, 0xFE, 0x17, 0x18, 0x00, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x01, 0x00, 0x42,
                0x0C, 0x82, 0x83, 0x00, 0xE1, 0x40, 0x1E, 0xFF, 0xFD, 0x0E, 0xF3, 0x00, 0x00, 0x14, 0x00, 0x03,
                0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1E, 0xFF, 0xFC, 0x0F, 0xBF, 0x00,
                0x00, 0x14, 0x00, 0x02, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00, 0x40, 0x1E, 0xFF,
                0xFB, 0x0E, 0xFA, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x0C, 0x82, 0x83, 0x00, 0x00
            };

            byte[] containerDisplay = { 0x24, 0x00, 0x0B, 0x03, 0x54, 0x00, 0x30, 0x00, 0x00 };

            Mobile vendor = new Mobile(vendorSerial);

            vendor.SetLayer(Layer.ShopBuy, 0x420c8283);

            Engine.Mobiles.Add(vendor);

            IncomingPacketHandlers.Initialize();

            VendorBuyTabViewModel vm = new VendorBuyTabViewModel();

            VendorBuyAgentEntry entry = new VendorBuyAgentEntry();

            entry.Items.Add(new VendorBuyAgentItem
            {
                Graphic  = 0xf8c,
                Amount   = 1,
                Enabled  = true,
                Hue      = -1,
                MaxPrice = -1
            });
            entry.Items.Add(new VendorBuyAgentItem
            {
                Graphic  = 0xf8d,
                Amount   = 1,
                Enabled  = true,
                Hue      = -1,
                MaxPrice = -1
            });
            entry.Items.Add(new VendorBuyAgentItem
            {
                Graphic  = 0xf85,
                Amount   = 1,
                Enabled  = true,
                Hue      = -1,
                MaxPrice = -1
            });
            entry.Items.Add(new VendorBuyAgentItem
            {
                Graphic  = 0xf88,
                Amount   = 1,
                Enabled  = true,
                Hue      = -1,
                MaxPrice = -1
            });

            entry.Enabled = true;
            vm.Items.Add(entry);

            PacketHandler containerContentsHandler = IncomingPacketHandlers.GetHandler(0x3C);

            containerContentsHandler?.OnReceive(new PacketReader(contents, contents.Length, false));

            vendor.Equipment.Add(Engine.Items.GetItem(0x420c8283));

            PacketHandler shopListHandler = IncomingPacketHandlers.GetHandler(0x74);

            shopListHandler?.OnReceive(new PacketReader(shopList, shopList.Length, false));

            PacketHandler containerDisplayHandler = IncomingPacketHandlers.GetHandler(0x24);

            AutoResetEvent are = new AutoResetEvent(false);

            List <ShopListEntry> buyList = new List <ShopListEntry>();

            void OnPacketSentEvent(byte[] data, int length)
            {
                if (data[0] != 0x3B)
                {
                    return;
                }

                PacketReader reader = new PacketReader(data, data.Length, false);

                int count = (data.Length - 8) / 7;

                reader.Seek(5, SeekOrigin.Current);

                for (int i = 0; i < count; i++)
                {
                    reader.ReadByte(); // layer
                    int serial = reader.ReadInt32();
                    int amount = reader.ReadInt16();

                    buyList.Add(new ShopListEntry {
                        Amount = amount, Item = Engine.Items.GetItem(serial)
                    });
                }
            }

            Engine.InternalPacketSentEvent += OnPacketSentEvent;

            containerDisplayHandler?.OnReceive(new PacketReader(containerDisplay, containerDisplay.Length, true));

            foreach (VendorBuyAgentItem item in vm.Items.Where(e => e.Enabled).SelectMany(e => e.Items))
            {
                int amount = buyList.Where(e => e.Item.ID == item.Graphic).Sum(e => e.Amount);

                Assert.AreEqual(item.Amount, amount, 0, "Buy incorrect amount");
            }

            Engine.Items.Clear();
            Engine.Mobiles.Clear();
        }
Beispiel #32
0
        protected override void UpdateObjects()
        {
            // Update inputs and camera.
            UpdateInput(UTimeDelta);
            UpdateCamera();
            // Manage game state.
            LblTest.Text = $"X:{Mouse.X} Y:{Mouse.Y}";
            LblTest.SetTranslate(new Vector3(Mouse.X + 16, Height - Mouse.Y, 0.0f));
            LblTest.Update();
            #region Network updating
            UpdateGameFromNetwork();
            #endregion
            #region Update game states
            // If a player should move
            // Move until
            SetWindowTitle(IsServer ? "Server" : "Client", TxtNetName?.Text ?? "N/A", State.ToString(), Board.CurrentPlayerTurn.ToString());
            switch (State)
            {
            case GameState.Menu:
                break;

            case GameState.Lobby:
                break;

            case GameState.LobbyRoll:
                break;

            case GameState.PlayerOptions:
                break;

            case GameState.Moving:
                bool isDone = Board.UpdatePositions(Board.CurrentPlayerTurn, (float)(1d / UpdatePeriod));
                if (isDone && Board.CurrentPlayerTurn == Board.CurrentPlayerID)
                {
                    MnuPlayerOptions.ShowAll();
                    BtnRollDice.HideAll();
                    Network.SendAsync(PacketHandler.Create(PacketType.MoveState,
                                                           Protocol.Game.EncodeMoveDone(Board.CurrentPlayerTurn)));
                    State = GameState.PlayerOptions;
                }
                break;

            default:
                break;
            }
            #endregion
            #region Update Matrices.
            // Update view matrices.
            ViewMatrix       = Camera.GetViewMatrix();
            StaticViewMatrix = Camera.GetStaticViewMatrix();
            ProjectionMatrix = Matrix4.CreatePerspectiveFieldOfView(ToRadians(Camera.Zoom),
                                                                    (float)Width / Height,
                                                                    0.1f, 1000f);
            UIProjectionMatrix = Matrix4.CreateOrthographicOffCenter(
                ClientRectangle.X, ClientRectangle.Width,
                ClientRectangle.Y, ClientRectangle.Height,
                -1.0f, 1.0f);
            // Update projection matrices.
            foreach (var control in Controls.Values)
            {
                control.ProjectionMatrix = UIProjectionMatrix;
                control.Update();
            }
            // Update matrices.
            Skybox.UpdateModelMatrix();
            foreach (var model in Models.Values)
            {
                model.UpdateModelMatrix();
            }
            DiceTwo.UpdateModelMatrix();
            foreach (var player in Board.GetPlayers())
            {
                player.UpdateModelMatrix();
            }
            #endregion
        }
Beispiel #33
0
 public static IMessageBusBuilder AddMessageTypes(this IMessageBusBuilder builder)
 {
     PacketHandler.Registers(Assembly.GetEntryAssembly().GetReferencedAssemblies().Select(x => Assembly.Load(x)).ToArray());
     return(builder);
 }
Beispiel #34
0
        public void RegisterPacketHandler(IPacket packet, PacketHandler handler)
        {
            //TODO: Allow multiple handlers for a single packet.
            if (packet == null)
                throw new ArgumentNullException("packet");
            if (handler == null)
                throw new ArgumentNullException("handler");

            PacketHandlers.Add(packet.ID, handler);
        }
Beispiel #35
0
 public RouteOutputHandler(PacketHandler <bool> outputHandler)
 {
     OutputHandler = outputHandler;
 }
Beispiel #36
0
 public static IMessageBusBuilder AddMessageTypes(this IMessageBusBuilder builder, params Type[] types)
 {
     PacketHandler.Registers(types);
     return(builder);
 }
Beispiel #37
0
        /// <summary>
        /// Determines if a packet callback has been bound with this InSim connection.
        /// </summary>
        /// <param name="packetType">The type of packet to check.</param>
        /// <param name="callback">The method to check.</param>
        /// <returns>True if the method has been bound.</returns>
        public bool IsBound(PacketType packetType, PacketHandler callback)
        {
            ThrowIfDisposed();

            return(bindings.IsBound(packetType, callback));
        }
 public void RegisterUnsafePacketHandler( char packetcode, PacketHandler packethandler )
 {
     if( unsafepackethandlers.Contains( packetcode ) && (PacketHandler)unsafepackethandlers[ packetcode ] != packethandler )
     {
         throw new Exception( "Trying to register duplicate packetcode " + packetcode.ToString() + " by handler " + packethandler.ToString() + " conflicting handler: " + unsafepackethandlers[ packetcode ].ToString() );
     }
     if( !unsafepackethandlers.Contains( packetcode ) )
     {
         //LogFile.WriteLine("Registering unsafe-packet handler " + packetcode.ToString() + " " + packethandler.ToString() );
         unsafepackethandlers.Add( packetcode, packethandler );
     }
 }
 public OscarFileTransferPacketHandler(PacketHandler mainPacketHandler)
     : base(mainPacketHandler)
 {
     //empty constructor
 }
Beispiel #40
0
 private static void Register(short opcode, OnPacketReceive<LoginConnection> e)
 {
     m_LHandlers[opcode] = new PacketHandler<LoginConnection>(opcode, e);
     m_Maintained++;
 }
Beispiel #41
0
 public void SetHandler(short opCode, IncommingMessageHandler handler)
 {
     Handlers[opCode] = new PacketHandler(opCode, handler);
 }
 public SmtpPacketHandler(PacketHandler mainPacketHandler)
     : base(mainPacketHandler)
 {
     this.smtpSessionList = new PopularityList <NetworkTcpSession, SmtpSession>(100);//max 100 simultaneous SMTP sessions
 }
Beispiel #43
0
 public ServerThreadPool(IServerService serverService, Config.Config config, PacketHandler packetHandler)
 {
     _serverService = serverService;
     _config        = config;
     _packetHandler = packetHandler;
 }
Beispiel #44
0
 public void RegisterPacketHandler(byte packetId, PacketHandler handler)
 {
     PacketHandlers[packetId] = handler;
 }
Beispiel #45
0
 public static void RegisterPacketHandler(byte packetId, PacketHandler handler)
 {
     PacketHandlerDelegates[packetId] = handler;
 }
Beispiel #46
0
 public NtlmSspPacketHandler(PacketHandler mainPacketHandler)
     : base(mainPacketHandler)
 {
     this.ntlmChallengeList = new PopularityList <int, string>(20);
 }
Beispiel #47
0
 private static void Register(byte level, short opcode, OnPacketReceive<ClientConnection> e)
 {
     if (!levels.ContainsKey(level))
     {
         PacketHandler<ClientConnection>[] handlers = new PacketHandler<ClientConnection>[0xFFFF];
         handlers[opcode] = new PacketHandler<ClientConnection>(opcode, e);
         levels.Add(level, handlers);
     }
     else
     {
         levels[level][opcode] = new PacketHandler<ClientConnection>(opcode, e);
     }
 }
Beispiel #48
0
 public Task <bool> HandlePacketAsync(PacketHandler handler)
 {
     return(handler.HandleP05KeepAlive(this));
 }
 public HpSwitchProtocolPacketHandler(PacketHandler mainPacketHandler)
     : base(mainPacketHandler)
 {
 }
 public DefaultConnection(IChannel channel, PacketHandler handler)
 {
     _channel = channel;
     SetPacketHandler(handler);
 }
Beispiel #51
0
		public static void Register( int packetID, bool ingame, OnPacketReceive onReceive )
		{
			m_Handlers[packetID] = new PacketHandler( packetID, 0, ingame, onReceive );
		}
 public void SetPacketHandler(PacketHandler packetHandler)
 {
     _handler = packetHandler ??
                throw new ArgumentNullException(nameof(packetHandler), "Packet handler can't be null");
     _handler.OnActive();
 }
Beispiel #53
0
 internal static void OnErrorServer(ushort errorCode, PacketHandler h)
 {
     serverError.OnReceived(errorCode, h);
 }
Beispiel #54
0
 public static IMessageBusBuilder AddMessageTypes(this IMessageBusBuilder builder, params Assembly[] assemblies)
 {
     PacketHandler.Registers(assemblies);
     return(builder);
 }
Beispiel #55
0
        internal void RegisterDefaultPacketHandler(IPacket packet, PacketHandler handler)
        {
            if (packet == null)
                throw new ArgumentNullException("packet");
            if (handler == null)
                throw new ArgumentNullException("handler");

            DefaultPacketHandlers.Add(packet.ID, handler);
        }
Beispiel #56
0
 /// <summary>
 /// 受信時の処理メソッドを登録する
 /// </summary>
 /// <param name="code">イベントコード</param>
 /// <param name="h">処理メソッド。引数:IPacketReader</param>
 public void OnReceivedPacket(ushort code, PacketHandler h)
 {
     Handle(code, h);
 }
 public void RegisterPacketHandler( char packetcode, PacketHandler packethandler )
 {
     if( packethandlers.Contains( packetcode ) && (PacketHandler)packethandlers[ packetcode ] != packethandler )
     {
         throw new Exception( "Trying to register duplicate packetcode " + packetcode.ToString() + " by handler " + packethandler.ToString() + " conflicting handler: " + packethandlers[ packetcode ].ToString() );
     }
     if( !packethandlers.Contains( packetcode ) )
     {
         packethandlers.Add( packetcode, packethandler );
     }
 }
Beispiel #58
0
 public ClientManager(PacketHandler packetHandler)
 {
     _packetHandler = packetHandler;
 }
Beispiel #59
0
        public void RegisterPacketHandler(IPacket packet, PacketHandler handler)
        {
            if (packet == null)
                throw new ArgumentNullException("packet");
            if (handler == null)
                throw new ArgumentNullException("handler");

            PacketHandlers.Add(packet.ID, handler);
        }
Beispiel #60
0
 internal AbstractPacketHandler(PacketHandler mainPacketHandler)
 {
     this.mainPacketHandler = mainPacketHandler;
 }