コード例 #1
0
        internal void SendWelcomePacket(KNetConnection newClient)
        {
            object[] welcomePacket = new object[2];
            string[] viewTypeNames = new string[KlivenNet.Views.Count];
            int[]    viewIds       = new int[KlivenNet.Views.Count];
            // byte[][] viewOwnersData = new byte[KlivenNet.Views.Count][];
            for (int i = 0; i < KlivenNet.Views.Count; i++)
            {
                var view = KlivenNet.Views[i];
                viewTypeNames[i] = view.GetType().FullName;
                viewIds[i]       = view.Id;
                // viewOwnersData[i] = view.Owner.KNetSerializeReference();
            }
            //  welcomePacket[0] = KlivenNet.NextPlayerId;
            welcomePacket[0] = viewTypeNames;
            welcomePacket[1] = viewIds;
            // welcomePacket[2] = viewOwnersData;
            MemoryStream    ms = new MemoryStream();
            BinaryFormatter bf = new BinaryFormatter();

            bf.Serialize(ms, welcomePacket);
            var packet = KNetUtils.ConstructPacket(KNetUtils.PacketType.welcome, ms.GetBuffer());

            SendBytes(newClient, packet);
            SendBufferedValues(newClient);

            /*KlivenNet.ZeroView.RPC("JebnijSobie", newClient, "monsterka kurwa", new int[] { 1, 2, 3 }, new KNetPlayer(), 2137);
             * KlivenNet.ZeroView.RPC("JebnijSobie", newClient, "monsterka kurwa2", new int[] { 3, 21, 3222 }, new KNetPlayer(), 2167);*/
            KlivenNet.ZeroView.RPC("ZaszczekajPajacu", new KNetConnection[] { newClient }, "paulina");
        }
コード例 #2
0
 //public static List<KNetSerializedField> DEBUG_SEND_BUFFERED_VALUES() {
 //    return SendBufferedValues();
 //}
 internal void SendBufferedValues(KNetConnection newClient)
 {
     //List<KNetSerializedField> serializedFields = new List<KNetSerializedField>();
     foreach (var view in KlivenNet.Views)
     {
         int buffFieldId = -1;
         foreach (var bufferedField in view.BufferedFields)
         {
             buffFieldId++;
             var fieldType  = bufferedField.FieldType;
             var bufferable = KNetUtils.IsSerializable(fieldType);
             if (bufferable == SerializableType.nonSerializable)
             {
                 KNetLogger.LogError($"KNetServer: could not serialize field {bufferedField.Name} on KNetView {view.Id}: does {bufferedField.DeclaringType.Name} implement KNetSerializable interface?");
                 continue;
             }
             // Console.WriteLine(bufferedField.Name + " is bufferable: " + bufferable);
             var bytes = KNetUtils.Serialize(bufferedField.GetValue(view), bufferable, out int count);
             if (bytes == null)
             {
                 continue;
             }
             var serializedField = new KNetSerializedField(view.Id, buffFieldId, bytes);
             serializedField.count = count;
             var packet = KNetUtils.ConstructPacket(KNetUtils.PacketType.bufferedObject, serializedField);
             SendBytes(newClient, packet);
         }
     }
 }
コード例 #3
0
 public KNetPlayer()
 {
     Connection = new KNetConnection();
 }
コード例 #4
0
        public KNetPlayer(KNetConnection connection)
        {
            Connection = connection;
//            Name = name;
        }
コード例 #5
0
        internal static byte[] ConstructPacket(PacketType packetType, byte[] bytes, KNetConnection overrideSender = null)
        {
            var connIdBytes = BytesFromShort(overrideSender != null && KlivenNet.IsServer ? overrideSender.Id : KlivenNet.MyConnection.Id);

            return(LZ4Codec.Wrap(new byte[] { (byte)packetType, (byte)PacketDataType.bytes, connIdBytes[0], connIdBytes[1] }.Concat(bytes).ToArray()));
        }
コード例 #6
0
 internal void SendBytesInternal(KNetConnection target, byte[] bytes)
 {
     SendBytes(target, bytes);
 }
コード例 #7
0
 /// <summary>
 /// Sends bytes to targeted Client. Write your own code that manages that.
 /// </summary>
 /// <param name="target">Targeted Client</param>
 /// <param name="bytes">Data to send</param>
 protected abstract void SendBytes(KNetConnection target, byte[] bytes);
コード例 #8
0
 protected virtual void OnClientConnected(KNetConnection newClient)
 {
     // we have to send welcome packet to the client.
     SendWelcomePacket(newClient);
 }