Esempio n. 1
0
    private void MonsterSet(InputMemoryStream inInputStream, short Count)
    {
        lock (lockObject)
        {
            for (int i = 0; i < Count; i++)
            {
                int     _id  = 0;
                Vector3 _pos = new Vector3();
                Vector3 _dir = new Vector3();
                float   _hp  = 0;
                inInputStream.Read(ref _id);
                inInputStream.Read(ref _pos);
                inInputStream.Read(ref _dir);
                inInputStream.Read(ref _hp);
                MonsterManager.instance.SearchMonster(_id, _pos, _dir, _hp);
            }

            if (!FistCreateComplete)
            {
                OutputMemoryStream os = new OutputMemoryStream();
                os.Write((short)Defines.SET_COMPLETE);
                NetWork.instance.Send(os);
                FistCreateComplete = true;
            }
        }
    }
Esempio n. 2
0
 private void PlayerSet(InputMemoryStream inInputStream, short Count)
 {
     lock (lockObject)
     {
         for (int i = 0; i < Count; ++i)
         {
             string name = "";
             inInputStream.Read(ref name);
             short state = 0;
             inInputStream.Read(ref state);
             if (state == Defines.USER_OUT)
             {
                 PlayerManager.instance.DelteUser(name);
             }
             else
             {
                 Vector3 _pos = Vector3.zero;
                 inInputStream.Read(ref _pos);
                 Vector3 _dir = Vector3.zero;
                 inInputStream.Read(ref _dir);
                 PlayerManager.instance.SearchPlayer(name, _pos, _dir, state);
             }
         }
     }
 }
Esempio n. 3
0
    public void SetObject(InputMemoryStream inInputStream)
    {
        short Count = 0;

        inInputStream.Read(ref Count);
        if (Count != 0)
        {
            PlayerSet(inInputStream, Count);
        }
        inInputStream.Read(ref Count);
        MonsterSet(inInputStream, Count);
    }
Esempio n. 4
0
    public void ReadMessage(byte[] msgByte, int recvBytes)
    {
        this.remain_byte = recvBytes;

        //받은 데이터를 패킷 버퍼에 저장한다
        Array.Copy(msgByte, 0, PacketBuffer, PacketBufferMarker, recvBytes);

        int   nPacketData = this.PacketBufferMarker + msgByte.Length;
        short nReadData   = 0;

        while (nPacketData > 0) //받은 데이터를 모두 처리할 때까지 반복한다.
        {
            //남은 데이터가 패킷 헤더보다 작으면 중단한다.
            if (nPacketData < Defines.HEADERSIZE)
            {
                break;
            }

            Array.Copy(PacketBuffer, nReadData, Header, 0, Defines.HEADERSIZE);
            short size = BitConverter.ToInt16(Header, 0);

            if (size <= nPacketData) //일단 처리할 수 있는 만큼의 데이터가 있다면 패킷을 처리한다.
            {
                byte[] buffer = new byte[size];
                Array.Copy(PacketBuffer, nReadData, buffer, 0, size);
                InputMemoryStream io = new InputMemoryStream(buffer, size);
                CheckData(io, size);
                nPacketData -= size;
                nReadData   += (short)size;
            }
            else
            {
                break; //패킷으로 처리할 수 없는 만큼이 아니면 중단한다.
            }
        }

        if (nPacketData > 0)   //만약 패킷 데이터 크기가 남았다면 다시 패킷 데이터에 다시 넣어줌
        {
            byte[] TempBuffer = new byte[2048];
            Array.Copy(PacketBuffer, nReadData, TempBuffer, 0, nPacketData);
            Array.Copy(TempBuffer, 0, PacketBuffer, 0, nPacketData);
        }

        PacketBufferMarker = nPacketData;
    }
Esempio n. 5
0
    void CheckData(InputMemoryStream inInputStream, int size)
    {
        short type = 0;

        inInputStream.Read(ref type);

        switch (type)
        {
        case 7501:
            bool result = false;
            inInputStream.Read(ref result);
            Debug.Log("LogIn : " + result);
            break;

        case 1500:
            ObjectManager.instance.SetObject(inInputStream);
            break;
        }
    }
Esempio n. 6
0
 protected BaseBinaryReader()
 {
     Stream             = new InputMemoryStream();
     mIsPropertyWaiting = false;
 }