Exemplo n.º 1
0
        static void WaitTcpConnect(object ob)
        {
            EventsClass.PackageSave   Event = (EventsClass.PackageSave)((object[])ob)[0];
            EventsClass.AddToAddrList AddEv = (EventsClass.AddToAddrList)((object[])ob)[1];
            TcpListener Listener            = new TcpListener(7778);

            Listener.Start();
            TcpClient Client = Listener.AcceptTcpClient();

            byte[] buf = new byte[4];

            Client.GetStream().Read(buf, 0, 4);

            int Length = BitConverter.ToInt32(buf, 0);

            for (int i = 0; i < Length; i++)
            {
                buf = new byte[37];
                Client.GetStream().Read(buf, 0, 37);
                AddEv?.Invoke(IPAddress.Parse(buf[0] + "." + buf[1] + "." + buf[2] + "." + buf[3]), 7777);

                PersonNetDataPackage PersonData = new PersonNetDataPackage();
                ReadFromBuffer(PersonData, buf, null);

                Event?.BeginInvoke(PersonData, null, null);
            }
            FileTools.Log("Person list got");
        }
Exemplo n.º 2
0
        void SendPersonDataPackage(PersonNetDataPackage Package, IPEndPoint EndPoint)
        {
            byte[]    MainPackage;
            UdpClient GetClient = new UdpClient();

            MainPackage = ConvertPackageToArray(Package);

            GetClient.Send(MainPackage, MainPackage.Length, EndPoint);
            GetClient.Close();
        }
Exemplo n.º 3
0
        static void GetPackage(PersonNetDataPackage PersonData, List <Person> ls, int Port = 7777)
        {
            byte[]     Buffer;
            IPEndPoint RemoveIPEndPoint = null;
            UdpClient  GetClient        = new UdpClient(Port);

            Buffer = GetClient.Receive(ref RemoveIPEndPoint);
            GetClient.Close();
            ReadFromBuffer(PersonData, Buffer, ls);
        }
Exemplo n.º 4
0
        static void PackageWait(object ob)
        {
            EventsClass.PackageSave Event = (EventsClass.PackageSave)((object[])ob)[0];
            List <Person>           ls    = (List <Person>)((object[])ob)[1];

            while (true)
            {
                PersonNetDataPackage PersonData = new PersonNetDataPackage();
                PackageReciever.GetPackage(PersonData, ls);
                FileTools.Log("Package got");

                Event?.Invoke(PersonData);
            }
        }
Exemplo n.º 5
0
        void AddNetObject(object Package)
        {
            PersonNetDataPackage Data = (PersonNetDataPackage)Package;
            Person Per;

            if (Data.PersonID == -2)
            {
                return;
            }

            else if (Data.PersonID == -1)
            {
                string RemoveAddr = Data.X.ToString() + "." + Data.Y.ToString() + "." + Data.XSpeed.ToString() + "." + Data.YSpeed.ToString();
                OutNetConnect.AddToAddrIPList(RemoveAddr);
                return;
            }

            if (!Data.IsNewPerson)
            {
                Per = GetPersonByID(Data.PersonID);

                if (Per == null)
                {
                    return;
                }
            }
            else
            {
                Per    = new Person();
                Per.ID = (byte)Data.PersonID;
                if (!IsPerInColl(Per.ID))
                {
                    PersonList.Add(Per);
                }
            }

            Per.X      = Data.X;
            Per.Y      = Data.Y;
            Per.XSpeed = Data.XSpeed;
            Per.YSpeed = Data.YSpeed;

            if (Data.BulletCurner != -1)
            {
                AddBullet(Data.BulletCurner * Math.PI / 180, Per.X + 48, Per.Y + 48, Per);
            }

            ObjDraw.IsPersonInList(Per.ID, true);
            ObjDraw.AddToObjectTicksList(Per, Data.AnimAddr, Data.AnimLenght, ref Anims, BattleField.Image);
        }
Exemplo n.º 6
0
        static void ReadFromBuffer(PersonNetDataPackage PersonData, byte[] Buffer, List <Person> ls)
        {
            if (Buffer[4] == 3)
            {
                Thread SendPersons = new Thread(new ParameterizedThreadStart(SendPersonList));
                string RemoveAddr  = Buffer[0].ToString() + "." + Buffer[1].ToString() + "." + Buffer[2].ToString() + "." + Buffer[3].ToString();

                object[] ob = new object[2];
                ob[0] = RemoveAddr;
                ob[1] = ls;

                SendPersons.Start(ob);    //Start sending person list
                PersonData.PersonID = -1;
                PersonData.X        = Buffer[0];
                PersonData.Y        = Buffer[1];
                PersonData.XSpeed   = Buffer[2];
                PersonData.YSpeed   = Buffer[3];

                ls.Add(new Person()
                {
                    ID     = Buffer[3],
                    X      = BitConverter.ToInt32(Buffer, 5),
                    Y      = BitConverter.ToInt32(Buffer, 9),
                    XSpeed = BitConverter.ToInt32(Buffer, 13),
                    YSpeed = BitConverter.ToInt32(Buffer, 17)
                });
            }
            else
            {
                PersonData.PersonID     = BitConverter.ToInt32(Buffer, 5);
                PersonData.X            = BitConverter.ToInt32(Buffer, 9);
                PersonData.Y            = BitConverter.ToInt32(Buffer, 13);
                PersonData.XSpeed       = BitConverter.ToInt32(Buffer, 17);
                PersonData.YSpeed       = BitConverter.ToInt32(Buffer, 21);
                PersonData.AnimAddr     = BitConverter.ToInt32(Buffer, 25);
                PersonData.AnimLenght   = BitConverter.ToInt32(Buffer, 29);
                PersonData.BulletCurner = BitConverter.ToInt32(Buffer, 33);

                if (Buffer[4] == 0)
                {
                    PersonData.IsNewPerson = true;
                }
                else
                {
                    PersonData.IsNewPerson = false;
                }
            }
        }
Exemplo n.º 7
0
        public void SendPerson(Person Per, int AnimAddr, int AnimLenght, bool IsNewPerson, int BulletCurner)
        {
            PersonNetDataPackage Package = new PersonNetDataPackage()
            {
                PersonID     = Per.ID,
                X            = Per.X,
                Y            = Per.Y,
                XSpeed       = Per.XSpeed,
                YSpeed       = Per.YSpeed,
                AnimAddr     = AnimAddr,
                AnimLenght   = AnimLenght,
                IsNewPerson  = IsNewPerson,
                BulletCurner = BulletCurner
            };

            foreach (var i in AddrIPList)
            {
                SendPersonDataPackage(Package, i);
            }
            FileTools.Log("Person sended to all users");
        }
Exemplo n.º 8
0
        static byte[] ConvertPackageToArray(PersonNetDataPackage Package)
        {
            byte[] MainPackage = new byte[37], buf;

            if (Package.IsNewPerson)
            {
                MainPackage[4] = 0;
            }
            else
            {
                MainPackage[4] = 2;
            }

            buf = BitConverter.GetBytes(Package.PersonID);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 5, 0, 4);

            buf = BitConverter.GetBytes(Package.X);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 9, 0, 4);

            buf = BitConverter.GetBytes(Package.Y);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 13, 0, 4);

            buf = BitConverter.GetBytes(Package.XSpeed);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 17, 0, 4);

            buf = BitConverter.GetBytes(Package.YSpeed);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 21, 0, 4);

            buf = BitConverter.GetBytes(Package.AnimAddr);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 25, 0, 4);

            buf = BitConverter.GetBytes(Package.AnimLenght);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 29, 0, 4);

            buf = BitConverter.GetBytes(Package.BulletCurner);
            ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 33, 0, 4);

            return(MainPackage);
        }