/kbe/src/client/unity3d/DataTypes.cs

https://bitbucket.org/kbengine/kbengine · C# · 496 lines · 418 code · 78 blank · 0 comment · 13 complexity · 5b3e32495abc201849892f93ece4e78a MD5 · raw file

  1. namespace KBEngine
  2. {
  3. using UnityEngine;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using MessageID = System.UInt16;
  8. public class KBEDATATYPE_BASE
  9. {
  10. public virtual void bind()
  11. {
  12. }
  13. public virtual object createFromStream(MemoryStream stream)
  14. {
  15. return null;
  16. }
  17. public virtual void addToStream(Bundle stream, object v)
  18. {
  19. }
  20. public virtual object parseDefaultValStr(string v)
  21. {
  22. return null;
  23. }
  24. }
  25. public class KBEDATATYPE_INT8 : KBEDATATYPE_BASE
  26. {
  27. public override object createFromStream(MemoryStream stream)
  28. {
  29. return stream.readInt8();
  30. }
  31. public override void addToStream(Bundle stream, object v)
  32. {
  33. stream.writeInt8(Convert.ToSByte(v));
  34. }
  35. public override object parseDefaultValStr(string v)
  36. {
  37. SByte ret = 0;
  38. SByte.TryParse(v, out ret);
  39. return ret;
  40. }
  41. }
  42. public class KBEDATATYPE_INT16 : KBEDATATYPE_BASE
  43. {
  44. public override object createFromStream(MemoryStream stream)
  45. {
  46. return stream.readInt16();
  47. }
  48. public override void addToStream(Bundle stream, object v)
  49. {
  50. stream.writeInt16(Convert.ToInt16(v));
  51. }
  52. public override object parseDefaultValStr(string v)
  53. {
  54. Int16 ret = 0;
  55. Int16.TryParse(v, out ret);
  56. return ret;
  57. }
  58. }
  59. public class KBEDATATYPE_INT32 : KBEDATATYPE_BASE
  60. {
  61. public override object createFromStream(MemoryStream stream)
  62. {
  63. return stream.readInt32();
  64. }
  65. public override void addToStream(Bundle stream, object v)
  66. {
  67. stream.writeInt32(Convert.ToInt32(v));
  68. }
  69. public override object parseDefaultValStr(string v)
  70. {
  71. Int32 ret = 0;
  72. Int32.TryParse(v, out ret);
  73. return ret;
  74. }
  75. }
  76. public class KBEDATATYPE_INT64 : KBEDATATYPE_BASE
  77. {
  78. public override object createFromStream(MemoryStream stream)
  79. {
  80. return stream.readInt64();
  81. }
  82. public override void addToStream(Bundle stream, object v)
  83. {
  84. stream.writeInt64(Convert.ToInt64(v));
  85. }
  86. public override object parseDefaultValStr(string v)
  87. {
  88. Int64 ret = 0;
  89. Int64.TryParse(v, out ret);
  90. return ret;
  91. }
  92. }
  93. public class KBEDATATYPE_UINT8 : KBEDATATYPE_BASE
  94. {
  95. public override object createFromStream(MemoryStream stream)
  96. {
  97. return stream.readUint8();
  98. }
  99. public override void addToStream(Bundle stream, object v)
  100. {
  101. stream.writeUint8(Convert.ToByte(v));
  102. }
  103. public override object parseDefaultValStr(string v)
  104. {
  105. Byte ret = 0;
  106. Byte.TryParse(v, out ret);
  107. return ret;
  108. }
  109. }
  110. public class KBEDATATYPE_UINT16 : KBEDATATYPE_BASE
  111. {
  112. public override object createFromStream(MemoryStream stream)
  113. {
  114. return stream.readUint16();
  115. }
  116. public override void addToStream(Bundle stream, object v)
  117. {
  118. stream.writeUint16(Convert.ToUInt16(v));
  119. }
  120. public override object parseDefaultValStr(string v)
  121. {
  122. UInt16 ret = 0;
  123. UInt16.TryParse(v, out ret);
  124. return ret;
  125. }
  126. }
  127. public class KBEDATATYPE_UINT32 : KBEDATATYPE_BASE
  128. {
  129. public override object createFromStream(MemoryStream stream)
  130. {
  131. return stream.readUint32();
  132. }
  133. public override void addToStream(Bundle stream, object v)
  134. {
  135. stream.writeUint32(Convert.ToUInt32(v));
  136. }
  137. public override object parseDefaultValStr(string v)
  138. {
  139. UInt32 ret = 0;
  140. UInt32.TryParse(v, out ret);
  141. return ret;
  142. }
  143. }
  144. public class KBEDATATYPE_UINT64 : KBEDATATYPE_BASE
  145. {
  146. public override object createFromStream(MemoryStream stream)
  147. {
  148. return stream.readUint64();
  149. }
  150. public override void addToStream(Bundle stream, object v)
  151. {
  152. stream.writeUint64(Convert.ToUInt64(v));
  153. }
  154. public override object parseDefaultValStr(string v)
  155. {
  156. UInt64 ret = 0;
  157. UInt64.TryParse(v, out ret);
  158. return ret;
  159. }
  160. }
  161. public class KBEDATATYPE_FLOAT : KBEDATATYPE_BASE
  162. {
  163. public override object createFromStream(MemoryStream stream)
  164. {
  165. return stream.readFloat();
  166. }
  167. public override void addToStream(Bundle stream, object v)
  168. {
  169. stream.writeFloat((float)Convert.ToDouble(v));
  170. }
  171. public override object parseDefaultValStr(string v)
  172. {
  173. float ret = 0.0f;
  174. float.TryParse(v, out ret);
  175. return ret;
  176. }
  177. }
  178. public class KBEDATATYPE_DOUBLE : KBEDATATYPE_BASE
  179. {
  180. public override object createFromStream(MemoryStream stream)
  181. {
  182. return stream.readDouble();
  183. }
  184. public override void addToStream(Bundle stream, object v)
  185. {
  186. stream.writeDouble(Convert.ToDouble(v));
  187. }
  188. public override object parseDefaultValStr(string v)
  189. {
  190. double ret = 0.0;
  191. double.TryParse(v, out ret);
  192. return ret;
  193. }
  194. }
  195. public class KBEDATATYPE_STRING : KBEDATATYPE_BASE
  196. {
  197. public override object createFromStream(MemoryStream stream)
  198. {
  199. return stream.readString();
  200. }
  201. public override void addToStream(Bundle stream, object v)
  202. {
  203. stream.writeString(Convert.ToString(v));
  204. }
  205. public override object parseDefaultValStr(string v)
  206. {
  207. return v;
  208. }
  209. }
  210. public class KBEDATATYPE_VECTOR2 : KBEDATATYPE_BASE
  211. {
  212. public override object createFromStream(MemoryStream stream)
  213. {
  214. UInt32 size = stream.readUint32();
  215. if(2 != size)
  216. {
  217. Dbg.ERROR_MSG(string.Format("KBEDATATYPE_VECTOR2::createFromStream: size({0}) is error!", size));
  218. }
  219. return new Vector2(stream.readFloat(), stream.readFloat());
  220. }
  221. public override void addToStream(Bundle stream, object v)
  222. {
  223. stream.writeUint32(2);
  224. stream.writeFloat(((Vector2)v).x);
  225. stream.writeFloat(((Vector2)v).y);
  226. }
  227. public override object parseDefaultValStr(string v)
  228. {
  229. return new Vector2(0.0f, 0.0f);
  230. }
  231. }
  232. public class KBEDATATYPE_VECTOR3 : KBEDATATYPE_BASE
  233. {
  234. public override object createFromStream(MemoryStream stream)
  235. {
  236. UInt32 size = stream.readUint32();
  237. if(3 != size)
  238. {
  239. Dbg.ERROR_MSG(string.Format("KBEDATATYPE_VECTOR3::createFromStream: size({0}) is error!", size));
  240. }
  241. return new Vector3(stream.readFloat(), stream.readFloat(), stream.readFloat());
  242. }
  243. public override void addToStream(Bundle stream, object v)
  244. {
  245. stream.writeUint32(3);
  246. stream.writeFloat(((Vector3)v).x);
  247. stream.writeFloat(((Vector3)v).y);
  248. stream.writeFloat(((Vector3)v).z);
  249. }
  250. public override object parseDefaultValStr(string v)
  251. {
  252. return new Vector3(0.0f, 0.0f, 0.0f);
  253. }
  254. }
  255. public class KBEDATATYPE_VECTOR4 : KBEDATATYPE_BASE
  256. {
  257. public override object createFromStream(MemoryStream stream)
  258. {
  259. UInt32 size = stream.readUint32();
  260. if(4 != size)
  261. {
  262. Dbg.ERROR_MSG(string.Format("KBEDATATYPE_VECTOR4::createFromStream: size({0}) is error!", size));
  263. }
  264. return new Vector4(stream.readFloat(), stream.readFloat(), stream.readFloat(), stream.readFloat());
  265. }
  266. public override void addToStream(Bundle stream, object v)
  267. {
  268. stream.writeUint32(4);
  269. stream.writeFloat(((Vector4)v).x);
  270. stream.writeFloat(((Vector4)v).y);
  271. stream.writeFloat(((Vector4)v).z);
  272. stream.writeFloat(((Vector4)v).w);
  273. }
  274. public override object parseDefaultValStr(string v)
  275. {
  276. return new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
  277. }
  278. }
  279. public class KBEDATATYPE_PYTHON : KBEDATATYPE_BASE
  280. {
  281. public override object createFromStream(MemoryStream stream)
  282. {
  283. return stream.readBlob();
  284. }
  285. public override void addToStream(Bundle stream, object v)
  286. {
  287. stream.writeBlob((byte[])v);
  288. }
  289. public override object parseDefaultValStr(string v)
  290. {
  291. return new byte[0];
  292. }
  293. }
  294. public class KBEDATATYPE_UNICODE : KBEDATATYPE_BASE
  295. {
  296. public override object createFromStream(MemoryStream stream)
  297. {
  298. return stream.readBlob();
  299. }
  300. public override void addToStream(Bundle stream, object v)
  301. {
  302. stream.writeBlob((byte[])v);
  303. }
  304. public override object parseDefaultValStr(string v)
  305. {
  306. return new byte[0];
  307. }
  308. }
  309. public class KBEDATATYPE_MAILBOX : KBEDATATYPE_BASE
  310. {
  311. public override object createFromStream(MemoryStream stream)
  312. {
  313. return stream.readBlob();
  314. }
  315. public override void addToStream(Bundle stream, object v)
  316. {
  317. stream.writeBlob((byte[])v);
  318. }
  319. public override object parseDefaultValStr(string v)
  320. {
  321. return new byte[0];
  322. }
  323. }
  324. public class KBEDATATYPE_BLOB : KBEDATATYPE_BASE
  325. {
  326. public override object createFromStream(MemoryStream stream)
  327. {
  328. return stream.readBlob();
  329. }
  330. public override void addToStream(Bundle stream, object v)
  331. {
  332. stream.writeBlob((byte[])v);
  333. }
  334. public override object parseDefaultValStr(string v)
  335. {
  336. return new byte[0];
  337. }
  338. }
  339. public class KBEDATATYPE_ARRAY : KBEDATATYPE_BASE
  340. {
  341. public object type;
  342. public override void bind()
  343. {
  344. if(type.GetType() == typeof(KBEDATATYPE_BASE).GetType())
  345. ((KBEDATATYPE_BASE)type).bind();
  346. else
  347. if(EntityDef.iddatatypes.ContainsKey((UInt16)type))
  348. type = EntityDef.iddatatypes[(UInt16)type];
  349. }
  350. public override object createFromStream(MemoryStream stream)
  351. {
  352. UInt32 size = stream.readUint32();
  353. List<object> datas = new List<object>();
  354. while(size > 0)
  355. {
  356. size--;
  357. datas.Add(((KBEDATATYPE_BASE)type).createFromStream(stream));
  358. };
  359. return datas;
  360. }
  361. public override void addToStream(Bundle stream, object v)
  362. {
  363. stream.writeUint32((UInt32)((List<object>)v).Count);
  364. for(int i=0; i<((List<object>)v).Count; i++)
  365. {
  366. ((KBEDATATYPE_BASE)type).addToStream(stream, ((List<object>)v)[i]);
  367. }
  368. }
  369. public override object parseDefaultValStr(string v)
  370. {
  371. return new byte[0];
  372. }
  373. }
  374. public class KBEDATATYPE_FIXED_DICT : KBEDATATYPE_BASE
  375. {
  376. public string implementedBy = "";
  377. public Dictionary<string, object> dicttype = new Dictionary<string, object>();
  378. public override void bind()
  379. {
  380. string[] keys = new string[dicttype.Keys.Count];
  381. dicttype.Keys.CopyTo(keys, 0);
  382. foreach(string itemkey in keys)
  383. {
  384. object type = dicttype[itemkey];
  385. if(type.GetType() == typeof(KBEDATATYPE_BASE).GetType())
  386. ((KBEDATATYPE_BASE)type).bind();
  387. else
  388. if(EntityDef.iddatatypes.ContainsKey((UInt16)type))
  389. dicttype[itemkey] = EntityDef.iddatatypes[(UInt16)type];
  390. }
  391. }
  392. public override object createFromStream(MemoryStream stream)
  393. {
  394. Dictionary<string, object> datas = new Dictionary<string, object>();
  395. foreach(string itemkey in dicttype.Keys)
  396. {
  397. datas[itemkey] = ((KBEDATATYPE_BASE)dicttype[itemkey]).createFromStream(stream);
  398. }
  399. return datas;
  400. }
  401. public override void addToStream(Bundle stream, object v)
  402. {
  403. foreach(string itemkey in dicttype.Keys)
  404. {
  405. ((KBEDATATYPE_BASE)dicttype[itemkey]).addToStream(stream, ((Dictionary<string, object>)v)[itemkey]);
  406. }
  407. }
  408. public override object parseDefaultValStr(string v)
  409. {
  410. Dictionary<string, object> datas = new Dictionary<string, object>();
  411. foreach(string itemkey in dicttype.Keys)
  412. {
  413. datas[itemkey] = ((KBEDATATYPE_BASE)dicttype[itemkey]).parseDefaultValStr("");
  414. }
  415. return datas;
  416. }
  417. }
  418. }