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; } } }
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); } } } }
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); }
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; }
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; } }
protected BaseBinaryReader() { Stream = new InputMemoryStream(); mIsPropertyWaiting = false; }