Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.69 KB | None | 0 0
  1. protected T getParameter<T>(int packetID)
  2.     {
  3.         if (typeof(T) == typeof(float))
  4.         {
  5.             return (T) (object) NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian);
  6.         }
  7.         else if (typeof(T) == typeof(int))
  8.         {
  9.             return (T) (object) NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  10.         }
  11.         else if (typeof(T) == typeof(decimal))
  12.         {
  13.             int[] bits = new int[4];
  14.             bits[0] = NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  15.             bits[1] = NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  16.             bits[2] = NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  17.             bits[3] = NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  18.             return (T) (object) new decimal(bits);
  19.         }
  20.         else if (typeof(T) == typeof(char))
  21.         {
  22.             byte[] data = new byte[2];
  23.             data[0] = NewNetCoreLib.nextPacketInByte(packetID);
  24.             data[1] = NewNetCoreLib.nextPacketInByte(packetID);
  25.             return (T) (object) BitConverter.ToChar(data,0);
  26.         }
  27.         else if (typeof(T) == typeof(long))
  28.         {
  29.             byte[] bits = new byte[8];
  30.             bits[0] = NewNetCoreLib.nextPacketInByte(packetID);
  31.             bits[1] = NewNetCoreLib.nextPacketInByte(packetID);
  32.             bits[2] = NewNetCoreLib.nextPacketInByte(packetID);
  33.             bits[3] = NewNetCoreLib.nextPacketInByte(packetID);
  34.             bits[4] = NewNetCoreLib.nextPacketInByte(packetID);
  35.             bits[5] = NewNetCoreLib.nextPacketInByte(packetID);
  36.             bits[6] = NewNetCoreLib.nextPacketInByte(packetID);
  37.             bits[7] = NewNetCoreLib.nextPacketInByte(packetID);
  38.             return (T)(object)BitConverter.ToInt64(bits, 0);
  39.         }
  40.         else if (typeof(T) == typeof(sbyte))
  41.         {
  42.             return (T) (object) NewNetCoreLib.nextPacketInByte(packetID);
  43.         }
  44.         else if (typeof(T) == typeof(string))
  45.         {
  46.             char[] outString;
  47.             int outLength;
  48.             NewNetCoreLib.nextPacketInArray(packetID, out outLength, out outString);
  49.             return (T)(object)new string(outString, 0, outLength);
  50.         }
  51.         else if (typeof(T) == typeof(uint))
  52.         {
  53.             return (T)(object)NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  54.         }
  55.         else if (typeof(T) == typeof(ulong))
  56.         {
  57.             byte[] bits = new byte[8];
  58.             bits[0] = NewNetCoreLib.nextPacketInByte(packetID);
  59.             bits[1] = NewNetCoreLib.nextPacketInByte(packetID);
  60.             bits[2] = NewNetCoreLib.nextPacketInByte(packetID);
  61.             bits[3] = NewNetCoreLib.nextPacketInByte(packetID);
  62.             bits[4] = NewNetCoreLib.nextPacketInByte(packetID);
  63.             bits[5] = NewNetCoreLib.nextPacketInByte(packetID);
  64.             bits[6] = NewNetCoreLib.nextPacketInByte(packetID);
  65.             bits[7] = NewNetCoreLib.nextPacketInByte(packetID);
  66.             return (T)(object)BitConverter.ToUInt64(bits, 0);
  67.         }
  68.         else if (typeof(T) == typeof(ushort))
  69.         {
  70.             return (T)(object)NewNetCoreLib.nextPacketInShort(packetID, NewNetCoreLib.Endian.defaultEndian);
  71.         }
  72.         else if (typeof(T) == typeof(short))
  73.         {
  74.             return (T) (object) NewNetCoreLib.nextPacketInShort(packetID, NewNetCoreLib.Endian.defaultEndian);
  75.         }
  76.         else if (typeof(T) == typeof(byte))
  77.         {
  78.             return (T) (object) NewNetCoreLib.nextPacketInByte(packetID);
  79.         }
  80.         else if (typeof(T) == typeof(bool))
  81.         {
  82.             return (T) (object) NewNetCoreLib.nextPacketInBool(packetID);
  83.         }
  84.         else if (typeof(T) == typeof(Vector2))
  85.         {
  86.             Vector2 temp = new Vector2(
  87.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  88.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian));
  89.             return (T) (object) temp;
  90.         }
  91.         else if (typeof(T) == typeof(Vector3))
  92.         {
  93.  
  94.             Vector3 temp = new Vector3(
  95.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  96.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  97.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian));
  98.             return (T) (object) temp;
  99.         }
  100.         else if (typeof(T) == typeof(Vector4))
  101.         {
  102.             Vector4 temp = new Vector4(
  103.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  104.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  105.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  106.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian));
  107.             return (T) (object) temp;
  108.         }
  109.         else if (typeof(T) == typeof(Quaternion))
  110.         {
  111.             Quaternion temp = new Quaternion(
  112.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  113.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  114.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian),
  115.                 NewNetCoreLib.nextPacketInFloat(packetID, NewNetCoreLib.Endian.defaultEndian));
  116.             return (T) (object) temp;
  117.         }
  118.         else if (typeof(T) == typeof(Array))
  119.         {
  120.             int length = NewNetCoreLib.nextPacketInInt(packetID, NewNetCoreLib.Endian.defaultEndian);
  121.             Type t = typeof(T).GetElementType();
  122.             if (t != null)
  123.             {
  124.                 Array myArray = Array.CreateInstance(t, length);
  125.                 for (int i = 0; i < myArray.Length; i++)
  126.  
  127.                     myArray.SetValue(
  128.                         typeof(HandlerBase).GetMethod("getParameter")
  129.                             .MakeGenericMethod(t)
  130.                             .Invoke(this, new object[] {packetID}), i);
  131.             }
  132.         }
  133.         else
  134.         {
  135.             T temporaryT = (T)Activator.CreateInstance(typeof(T));
  136.             int length = 0;
  137.             byte[] output;
  138.             NewNetCoreLib.nextPacketInArray(packetID, out length, out output);
  139.  
  140.             INetSerializable castT = temporaryT as INetSerializable;
  141.             if(castT != null)
  142.                 castT.setFromByteArray(output, length);
  143.             return temporaryT;
  144.         }
  145.         return default(T);
  146.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement