public override void HandleSync(Sfs2X.Entities.Data.ISFSObject obj) { //Debug.Log ("Character Handling Sync"); if(mode == SFSNetworkManager.Mode.LOCAL) return; bool consumed = false; if(obj.ContainsKey(statusDS)){ statusRecp.ReceiveStatus(obj); consumed = true; } if (obj.ContainsKey(posDS)){ posRecp.ReceiveResultant(obj); consumed = true; } if (obj.ContainsKey(movDS)){ posRecp.ReceiveMoveDirection(obj); consumed = true; } if (obj.ContainsKey(animDS)){ Debug.Log("Received animation update"); animRecp.ReceiveState(obj); consumed = true; } if(!consumed){ Debug.LogError("Unhandled sync"); } }
public override void OnHandleMessage(Sfs2X.Entities.Data.ISFSObject data) { ServerPublicKey pubKey = new ServerPublicKey(); pubKey.FromSFSObject(data); EncryptionProvider.GetInstance().SetServerPublicKeyParameters(pubKey.parameters); }
public override bool FromSFSObject(Sfs2X.Entities.Data.ISFSObject data) { // We just pull the data straight out of the packet because we don't have a GetByteArray that works with encryption bool retVal = false; if (data.ContainsKey("key")) { ISFSObject publicKeyData = data.GetSFSObject("key"); var tempParams = new RSAParameters(); tempParams.Modulus = publicKeyData.GetByteArray("mod").Bytes; tempParams.Exponent = publicKeyData.GetByteArray("exp").Bytes; parameters = tempParams; } return retVal; }
public override void HandleInit(Sfs2X.Entities.Data.ISFSObject obj) { bool consumed = false; if(obj.ContainsKey(statusDS)){ statusRecp.ReceiveStatus(obj); consumed = true; } if (obj.ContainsKey(posDS)){ posRecp.ReceiveResultant(obj, true); consumed = true; } // else if (obj.ContainsKey(movDS)){ // posRecp.ReceiveMoveDirection(obj); // } // else if (obj.ContainsKey(animDS)){ // animRecp.ReceiveState(obj); // } if(!consumed){ Debug.LogError("Unhandled init"); } }
protected override void OnLogin(Sfs2X.Core.BaseEvent e) { base.OnLogin(e); _sfs.SendJoinRoomRequest(_sfs.RoomList[0]); //Debug.Log("Logged in successfully"); //if (_sfs.GetRoomByName("Test") == null) //{ // var settings = new MMORoomSettings("Test"); // settings.DefaultAOI = new Vec3D(25f, 1f, 25f); // settings.MapLimits = new MapLimits(new Vec3D(-100f, 1f, -100f), new Vec3D(100f, 1f, 100f)); // settings.MaxUsers = 100; // settings.Extension = new RoomExtension("LoginExt", "LoginExtExtension.jar"); // //settings.ProximityListUpdateMillis = 50; // _sfs.Send(new CreateRoomRequest(settings, true, null)); //} //else //{ // // We either create the Game Room or join it if it exists already // _sfs.Send(new JoinRoomRequest("Test")); //} }
private void HandleContinuePacket(Sfs2X.Util.ByteArray data) { int packetRemain = PendingPacket.Header.ExpectedLength - PendingPacket.Buffer.Length; if (packetRemain > data.Length) {//还有包 PendingPacket.Buffer.WriteBytes(data.Bytes); NeedsMoreData = true; } else { PendingPacket.Buffer.WriteBytes(data.Bytes, 0, packetRemain); if (PendingPacket.Header.Compressed) { PendingPacket.Buffer.Uncompress(); } Sfs2X.Entities.Data.SFSObject obj = Sfs2X.Entities.Data.SFSObject.NewFromBinaryData(PendingPacket.Buffer); string dumpstr = obj.GetDump(); Console.WriteLine(IsReq ? "req:" : "resp"); Console.WriteLine(dumpstr); Writer.WriteLine(IsReq ? "req:==========================" : "resp:========================="); Writer.WriteLine(dumpstr); int dataRemain = data.Length - packetRemain; if (dataRemain == 0) NeedsMoreData = false; else { data = ResizeByteArray(data, (uint)packetRemain); HandleNewPacket(data); } } }
public override void OnHandleMessage(Sfs2X.Entities.Data.ISFSObject data) { errorMessage = data.GetUtfString("error"); }
protected override void OnConnectionSuccess(Sfs2X.Core.BaseEvent e) { }
protected override void OnRoomJoin(Sfs2X.Core.BaseEvent e) { base.OnRoomJoin(e); print("Room joined : " + _sfs.LastJoinedRoom.Name); }
public override void OnHandleMessage(Sfs2X.Entities.Data.ISFSObject data) { }
public override void OnHandleMessage(Sfs2X.Entities.Data.ISFSObject data) { Debug.Log("Character created successfully, going back to character select"); }
private Sfs2X.Util.ByteArray ResizeByteArray(Sfs2X.Util.ByteArray data, uint pos) { int len = data.Length - (int)pos; byte[] b = new byte[(uint)len]; Array.ConstrainedCopy(data.Bytes, (int)pos, b, 0, len); return new Sfs2X.Util.ByteArray(b); }
private void HandleNewPacket(Sfs2X.Util.ByteArray data) { Byte headerByte = data.ReadByte(); PendingPacket = new Sfs2X.Bitswarm.PendingPacket(Sfs2X.Core.PacketHeader.FromBinary(headerByte)); int dataSize; if (PendingPacket.Header.BigSized) { dataSize = data.ReadInt(); } else { dataSize = data.ReadUShort(); } data = ResizeByteArray(data, (uint)data.Position); PendingPacket.Header.ExpectedLength = dataSize; HandleContinuePacket(data); }