EncryptionLong.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. using System;
  2. using Fort23.UTool;
  3. namespace Core.Utility
  4. {
  5. public struct EncryptionLong : EncryptionBasic<long>, IFormattable
  6. {
  7. public static Random random = new Random(123);
  8. private long _key;
  9. private long _value;
  10. // private event System.Action<long> _callBack;
  11. public long Value
  12. {
  13. get { return Decrypt(_value); }
  14. set
  15. {
  16. _value = Encryption(value);
  17. // try
  18. // {
  19. // _callBack?.Invoke(value);
  20. // }
  21. // catch (Exception e)
  22. // {
  23. // LogTool.Exception(e);
  24. // }
  25. }
  26. }
  27. public long Decrypt(long v)
  28. {
  29. return v ^ _key;
  30. }
  31. // public void AddCallBack(Action<long> callBack)
  32. // {
  33. // _callBack += callBack;
  34. // }
  35. //
  36. // public void RemoveCallBack(Action<long> callBack)
  37. // {
  38. // _callBack -= callBack;
  39. // }
  40. public long Encryption(long v)
  41. {
  42. _key = (long)random.Next(1, int.MaxValue);
  43. return v ^ _key;
  44. }
  45. public static explicit operator EncryptionLong(long value)
  46. {
  47. EncryptionLong encryptionLong = new EncryptionLong();
  48. encryptionLong.Value = value;
  49. return encryptionLong;
  50. }
  51. public static explicit operator EncryptionLong(int value)
  52. {
  53. EncryptionLong encryptionLong = new EncryptionLong();
  54. encryptionLong.Value = value;
  55. return encryptionLong;
  56. }
  57. public static bool operator ==(EncryptionLong x, EncryptionLong y)
  58. {
  59. return x.Value == y.Value;
  60. }
  61. public static bool operator !=(EncryptionLong x, EncryptionLong y)
  62. {
  63. return x.Value != y.Value;
  64. }
  65. public static bool operator >(EncryptionLong x, float y)
  66. {
  67. return x.Value > y;
  68. }
  69. public static bool operator <(EncryptionLong x, float y)
  70. {
  71. return x.Value < y;
  72. }
  73. public static bool operator >(float x, EncryptionLong y)
  74. {
  75. return x > y.Value;
  76. }
  77. public static bool operator <(float x, EncryptionLong y)
  78. {
  79. return x < y.Value;
  80. }
  81. public static bool operator >(EncryptionLong x, EncryptionLong y)
  82. {
  83. return x.Value > y.Value;
  84. }
  85. public static bool operator <(EncryptionLong x, EncryptionLong y)
  86. {
  87. return x.Value < y.Value;
  88. }
  89. public static bool operator >=(int x, EncryptionLong y)
  90. {
  91. return x >= y.Value;
  92. }
  93. public static bool operator <=(int x, EncryptionLong y)
  94. {
  95. return x <= y.Value;
  96. }
  97. public static bool operator >=(float x, EncryptionLong y)
  98. {
  99. return x >= y.Value;
  100. }
  101. public static bool operator <=(float x, EncryptionLong y)
  102. {
  103. return x <= y.Value;
  104. }
  105. public static bool operator >=(EncryptionLong x, int y)
  106. {
  107. return x.Value >= y;
  108. }
  109. public static bool operator <=(EncryptionLong x, int y)
  110. {
  111. return x.Value <= y;
  112. }
  113. public static bool operator >=(EncryptionLong x, float y)
  114. {
  115. return x.Value >= y;
  116. }
  117. public static bool operator <=(EncryptionLong x, float y)
  118. {
  119. return x.Value <= y;
  120. }
  121. public static bool operator >=(EncryptionLong x, EncryptionLong y)
  122. {
  123. return x.Value >= y.Value;
  124. }
  125. public static bool operator <=(EncryptionLong x, EncryptionLong y)
  126. {
  127. return x.Value <= y.Value;
  128. }
  129. public static EncryptionLong operator /(EncryptionLong x, int y)
  130. {
  131. return (EncryptionLong)(x.Value / y);
  132. }
  133. public static EncryptionLong operator /(int x, EncryptionLong y)
  134. {
  135. return (EncryptionLong)(x / y.Value);
  136. }
  137. #if !COMBAT_SERVER
  138. #endif
  139. public static EncryptionLong operator /(EncryptionLong x, EncryptionLong y)
  140. {
  141. return (EncryptionLong)(x.Value / y.Value);
  142. }
  143. public static EncryptionLong operator *(int x, EncryptionLong y)
  144. {
  145. return (EncryptionLong)(x * y.Value);
  146. }
  147. public static EncryptionLong operator *(EncryptionLong x, int y)
  148. {
  149. return (EncryptionLong)(x.Value * y);
  150. }
  151. public static EncryptionLong operator *(long x, EncryptionLong y)
  152. {
  153. return (EncryptionLong)(x * y.Value);
  154. }
  155. public static EncryptionLong operator *(EncryptionLong x, long y)
  156. {
  157. return (EncryptionLong)(x.Value * y);
  158. }
  159. public static EncryptionLong operator *(EncryptionLong x, EncryptionLong y)
  160. {
  161. return (EncryptionLong)(x.Value * y.Value);
  162. }
  163. public static EncryptionLong operator +(int x, EncryptionLong y)
  164. {
  165. return (EncryptionLong)(x + y.Value);
  166. }
  167. public static EncryptionLong operator +(EncryptionLong x, int y)
  168. {
  169. return (EncryptionLong)(x.Value + y);
  170. }
  171. public static EncryptionLong operator +(long x, EncryptionLong y)
  172. {
  173. return (EncryptionLong)(x + y.Value);
  174. }
  175. public static EncryptionLong operator +(EncryptionLong x, long y)
  176. {
  177. return (EncryptionLong)(x.Value + y);
  178. }
  179. public static EncryptionLong operator +(EncryptionLong x, EncryptionLong y)
  180. {
  181. return (EncryptionLong)(x.Value + y.Value);
  182. }
  183. public static string operator +(EncryptionLong x, string y)
  184. {
  185. return (x.Value + y);
  186. }
  187. public static string operator +(string x, EncryptionLong y)
  188. {
  189. return (x + y.Value);
  190. }
  191. public static EncryptionLong operator -(int x, EncryptionLong y)
  192. {
  193. return (EncryptionLong)(x - y.Value);
  194. }
  195. public static EncryptionLong operator -(EncryptionLong x, int y)
  196. {
  197. return (EncryptionLong)(x.Value - y);
  198. }
  199. public static EncryptionLong operator -(long x, EncryptionLong y)
  200. {
  201. return (EncryptionLong)(x - y.Value);
  202. }
  203. public static EncryptionLong operator -(EncryptionLong x, long y)
  204. {
  205. return (EncryptionLong)(x.Value - y);
  206. }
  207. public static EncryptionLong operator -(EncryptionLong x, EncryptionLong y)
  208. {
  209. return (EncryptionLong)(x.Value - y.Value);
  210. }
  211. // public static long operator -(int x, EncryptionLong y)
  212. // {
  213. // return x - y.Value;
  214. // }
  215. //
  216. // public static long operator -(EncryptionLong x, int y)
  217. // {
  218. // return x.Value - y;
  219. // }
  220. // public static long operator -(long x, EncryptionLong y)
  221. // {
  222. // return x - y.Value;
  223. // }
  224. //
  225. // public static long operator -(EncryptionLong x, long y)
  226. // {
  227. // return x.Value - y;
  228. // }
  229. public string ToString(string format, IFormatProvider formatProvider)
  230. {
  231. return Value.ToString();
  232. }
  233. }
  234. }