Auxiliary.cs 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322
  1. using LitJson;
  2. using ScottGarland;
  3. using DragonBones;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using UnityEngine.Events;
  7. using UnityEngine.Advertisements;
  8. using System;
  9. using System.IO;
  10. using System.Xml;
  11. using System.Linq;
  12. using System.Net.Mail;
  13. using System.Net;
  14. using System.Text;
  15. using System.Collections;
  16. using System.Diagnostics;
  17. using System.Collections.Generic;
  18. using System.ComponentModel.Design;
  19. using System.Security.Cryptography;
  20. using System.Runtime.Serialization.Formatters.Binary;
  21. using System.Security;
  22. //using System.Security.Cryptography.Xml;
  23. using System.Text.RegularExpressions;
  24. using System.Security.Cryptography.Xml;
  25. using Sfs2X.Entities.Data;
  26. using Sfs2X.Requests;
  27. using Debug = UnityEngine.Debug;
  28. using Random = UnityEngine.Random;
  29. using Transform = UnityEngine.Transform;
  30. public enum Unit
  31. {
  32. Second
  33. }
  34. public class Amount
  35. {
  36. public static double 百 = 100;
  37. public static double 千 = 1000;
  38. public static double 万 = 10000;
  39. public static double 十万 = 100000;
  40. public static double 百万 = 1000000;
  41. public static double 千万 = 10000000;
  42. public static double 亿 = 100000000;
  43. public static double 十亿 = 1000000000;
  44. public static double 千亿 = 100000000000;
  45. public static double 兆 = 1000000000000;
  46. public static double 千兆 = 1000000000000000;
  47. public static double 京 = 10000000000000000;
  48. public static double 千京 = 10000000000000000000;
  49. public static BigInteger 垓 = new BigInteger("100000000000000000000");
  50. public static BigInteger 千垓 = new BigInteger("100000000000000000000000");
  51. }
  52. public class Auxiliary : Regist
  53. {
  54. #region Config
  55. public string String1;
  56. public string String2;
  57. public TextAsset DragonboneSke;
  58. public List<Sprite> Sprites;
  59. public Sprite Sprite;
  60. public TextAsset TextAsset;
  61. public Texture2D Texture;
  62. public Texture2D Texture1;
  63. public Texture2D Texture2;
  64. public AnimationClip AnimationClip;
  65. public Font Font;
  66. public GameObject Go;
  67. public List<GameObject> GoList;
  68. public List<SpriteRenderer> SrList;
  69. public static bool AnyKeyUp;
  70. public static bool AnyKeyDown;
  71. public static Auxiliary Instance;
  72. public static MD5 MD5
  73. {
  74. get
  75. {
  76. if (_MD5 == null)
  77. {
  78. _MD5 = new MD5CryptoServiceProvider();
  79. }
  80. return _MD5;
  81. }
  82. set { _MD5 = value; }
  83. }
  84. public static DESCryptoServiceProvider Des
  85. {
  86. get
  87. {
  88. if (_Des == null)
  89. {
  90. _Des = new DESCryptoServiceProvider();
  91. _Des.IV = Encoding.UTF8.GetBytes("19283740");
  92. _Des.Key = Encoding.UTF8.GetBytes("93287123");
  93. }
  94. return _Des;
  95. }
  96. set { _Des = value; }
  97. }
  98. private static MD5 _MD5;
  99. private static DESCryptoServiceProvider _Des;
  100. #endregion
  101. public override bool InitAtOnce()
  102. {
  103. if (base.InitAtOnce())
  104. {
  105. return true;
  106. }
  107. enabled = true;
  108. return false;
  109. }
  110. private void Awake()
  111. {
  112. Instance = this;
  113. }
  114. private void Update()
  115. {
  116. #region 调试
  117. ////if (Input.GetKeyDown(KeyCode.Escape))
  118. ////{
  119. //// TutorialManager.MemoryMinigameTutorial = true;
  120. //// TutorialManager.memoryMinigameTutorial = true;
  121. //// TutorialManager.FindMissingMinigameTutorial = true;
  122. //// TutorialManager.findMissingMinigameTutorial = true;
  123. //// TutorialManager.FindSoloMinigameTutorial = true;
  124. //// TutorialManager.findSoloMinigameTutorial = true;
  125. //// SFSManager.GardenSmartFox.SmartFox.Disconnect();
  126. //// RobotManager.DeactivateAllRobots(false);
  127. ////}
  128. //if (Input.GetKey(KeyCode.Space))
  129. //{
  130. // Manager.AddCoin(10000000, StaticsManager.ItemID.获得金币, StaticsManager.ConsumeModule.None);
  131. // //Vector3 pos = ResourceManager.Get(CanvasLabel.Lc_CreditsContent).position;
  132. // //ResourceManager.Get(CanvasLabel.Lc_CreditsContent).position = pos + new Vector3(0, 2f, 0);
  133. //}
  134. //if (Input.GetKeyDown(KeyCode.Space))
  135. //{
  136. // //TutorialManager.changeMouseTutorial = true;
  137. // //PlayerManager.Player.UAC.anim.Stop();
  138. // //Manager.Coin = 0;
  139. // //Manager.Diamond = 0;
  140. // //CommentRewardManager.GetReward();
  141. // //Manager.AddCoin(1000000000000, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None);
  142. // //DebugManager.ResetGardenLevel(38);
  143. // //HttpManager.GetTargetConfig
  144. // //(
  145. // // "1801134288353834791",
  146. // // data =>
  147. // // {
  148. // // VisitManager.VisiteeSerialNumber = "1801134288353834791";
  149. // // VisitManager.SavePulledConfig(data);
  150. // // }
  151. // //);
  152. //}
  153. #endregion
  154. #region 输入检测
  155. if (Input.GetKeyDown(KeyCode.Escape))
  156. {
  157. MiniGameManager.Pause = true;
  158. Bubble.Show(null, Language.GetStr(LanguageLabel.Common__QuitGame), null, null, Application.Quit, () => { MiniGameManager.Pause = false; });
  159. }
  160. if (AnyKeyUp)
  161. {
  162. if (Input.anyKey == false)
  163. {
  164. AnyKeyUp = false;
  165. }
  166. }
  167. if (Input.anyKeyDown)
  168. {
  169. AnyKeyDown = true;
  170. }
  171. if (AnyKeyDown)
  172. {
  173. if (Input.anyKey == false)
  174. {
  175. AnyKeyUp = true;
  176. AnyKeyDown = false;
  177. }
  178. }
  179. #endregion
  180. }
  181. private static void ResetAllCd()
  182. {
  183. for (int i = 0; i < Manager.CoolSkillList.Count; i++)
  184. {
  185. Manager.CoolSkillList[i].CoolTimer = 0;
  186. }
  187. }
  188. public static byte[] GetMD5(object obj)
  189. {
  190. MemoryStream memoryStream = new MemoryStream();
  191. BinaryFormatter binaryFormatter = new BinaryFormatter();
  192. binaryFormatter.Serialize(memoryStream, obj);
  193. byte[] bytes = memoryStream.GetBuffer();
  194. memoryStream.Dispose();
  195. return MD5.ComputeHash(bytes);
  196. }
  197. public static void EncryptXml(XmlDocument doc)
  198. {
  199. EncryptedXml encryptedXml = new EncryptedXml();
  200. XmlElement xmlElement = doc.DocumentElement;
  201. byte[] bytes = encryptedXml.EncryptData(xmlElement, Des, false);
  202. EncryptedData encryptedData = new EncryptedData();
  203. encryptedData.Type = EncryptedXml.XmlEncElementUrl;
  204. encryptedData.EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncDESUrl);
  205. encryptedData.CipherData.CipherValue = bytes;
  206. EncryptedXml.ReplaceElement(xmlElement, encryptedData, false);
  207. }
  208. public static void DecryptXml(XmlDocument doc)
  209. {
  210. EncryptedXml encryptedXml = new EncryptedXml();
  211. XmlElement encryptXmlElement = (XmlElement)doc.GetElementsByTagName("EncryptedData")[0];
  212. EncryptedData encryptedData = new EncryptedData();
  213. encryptedData.LoadXml(encryptXmlElement);
  214. byte[] bytes = encryptedXml.DecryptData(encryptedData, Des);
  215. encryptedXml.ReplaceData(encryptXmlElement, bytes);
  216. }
  217. public static byte[] Encrypt(string str)
  218. {
  219. byte[] bytes = Encoding.UTF8.GetBytes(str);
  220. byte[] encryptBytes = Des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  221. return encryptBytes;
  222. }
  223. public static byte[] ToBytes(string str)
  224. {
  225. string[] strings = str.Split(' ');
  226. byte[] bytes = new byte[strings.Length];
  227. for (int i = 0; i < bytes.Length; i++)
  228. {
  229. bytes[i] = byte.Parse(strings[i]);
  230. }
  231. return bytes;
  232. }
  233. public static string Decrypt(string str)
  234. {
  235. byte[] encryptBytes = ToBytes(str);
  236. byte[] decryptBytes = Des.CreateDecryptor().TransformFinalBlock(encryptBytes, 0, encryptBytes.Length);
  237. return Encoding.UTF8.GetString(decryptBytes);
  238. }
  239. public static string ToString(byte[] bytes)
  240. {
  241. StringBuilder strB = new StringBuilder();
  242. for (int i = 0; i < bytes.Length; i++)
  243. {
  244. if (i == bytes.Length - 1)
  245. {
  246. strB.Append(bytes[i]);
  247. }
  248. else
  249. {
  250. strB.Append(bytes[i] + " ");
  251. }
  252. }
  253. return strB.ToString();
  254. }
  255. public static void CompileDic(Transform tra, Dictionary<string, Transform> dic, bool enableIgnore = true)
  256. {
  257. Transform[] transforms = tra.GetComponentsInChildren<Transform>(true);
  258. for (int i = 0; i < transforms.Length; i++)
  259. {
  260. if (enableIgnore)
  261. {
  262. if (transforms[i].GetComponent<IgnoreIndexing>())
  263. {
  264. continue;
  265. }
  266. }
  267. if (dic.ContainsKey(transforms[i].name))
  268. {
  269. throw new Exception(transforms[i].name);
  270. }
  271. else
  272. {
  273. dic.Add(transforms[i].name, transforms[i]);
  274. }
  275. }
  276. }
  277. public static string GetUnit(int value, Unit unit)
  278. {
  279. if (unit == Unit.Second)
  280. {
  281. if (LanguageManager.CurrentLanguage == CurrentLanguage.English)
  282. {
  283. if (value == 0 || value == 1)
  284. {
  285. return " Second";
  286. }
  287. else
  288. {
  289. return " Seconds";
  290. }
  291. }
  292. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseSimplified)
  293. {
  294. return "秒";
  295. }
  296. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseTraditional)
  297. {
  298. return "秒";
  299. }
  300. else
  301. {
  302. throw new Exception();
  303. }
  304. }
  305. else
  306. {
  307. throw new Exception();
  308. }
  309. }
  310. public static string GetStreamPath()
  311. {
  312. if (Application.isEditor)
  313. {
  314. return "file://" + Application.streamingAssetsPath;
  315. }
  316. else if (Application.platform == RuntimePlatform.IPhonePlayer)
  317. {
  318. return "file://" + Application.streamingAssetsPath;
  319. }
  320. else if (Application.isMobilePlatform)
  321. {
  322. return Application.streamingAssetsPath;
  323. }
  324. else
  325. {
  326. throw new Exception();
  327. }
  328. }
  329. public Coroutine DelayCall(UnityAction function, int frame)
  330. {
  331. return StartCoroutine(IDelayCall(function, frame));
  332. }
  333. public Coroutine DelayCall(UnityAction function, float time)
  334. {
  335. return StartCoroutine(IDelayCall(function, time));
  336. }
  337. public static IEnumerator IDelayCall(UnityAction function, int frame)
  338. {
  339. int count = 0;
  340. while (count < frame)
  341. {
  342. count++;
  343. yield return null;
  344. }
  345. function.Invoke();
  346. }
  347. public static IEnumerator IDelayCall(UnityAction function, float time)
  348. {
  349. yield return new WaitForSeconds(time);
  350. function.Invoke();
  351. }
  352. public static string FmlParse1(string str)
  353. {
  354. int index = 0;
  355. int openIndex = 0;
  356. bool flag = false;
  357. bool group = false;
  358. for (int i = 0; i < str.Length; i++)
  359. {
  360. if (group)
  361. {
  362. if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/')
  363. {
  364. str = str.Replace(openIndex, i - 1, FmlParse2(str[index], str.Between(openIndex, index - 1), str.Between(index + 1, i - 1)));
  365. i = 0;
  366. group = false;
  367. }
  368. else if (i == str.Length - 1)
  369. {
  370. str = str.Replace(openIndex, i, FmlParse2(str[index], str.Between(openIndex, index - 1), str.Between(index + 1, i)));
  371. break;
  372. }
  373. }
  374. else
  375. {
  376. if (str[i] == '+' || str[i] == '-')
  377. {
  378. flag = true;
  379. openIndex = i + 1;
  380. }
  381. else if (str[i] == '*' || str[i] == '/')
  382. {
  383. index = i;
  384. group = true;
  385. if (!flag)
  386. {
  387. openIndex = 0;
  388. }
  389. }
  390. }
  391. }
  392. group = false;
  393. for (int i = 0; i < str.Length; i++)
  394. {
  395. if (group)
  396. {
  397. if (str[i] == '+' || str[i] == '-')
  398. {
  399. str = str.Replace(0, i - 1, FmlParse2(str[index], str.Between(0, index - 1), str.Between(index + 1, i - 1)));
  400. i = -1;
  401. group = false;
  402. }
  403. else if (i == str.Length - 1)
  404. {
  405. return FmlParse2(str[index], str.Between(0, index - 1), str.Between(index + 1, i));
  406. }
  407. }
  408. else
  409. {
  410. if (str[i] == '+' || str[i] == '-')
  411. {
  412. index = i;
  413. group = true;
  414. }
  415. }
  416. }
  417. return str;
  418. }
  419. public static string FmlParse2(char op, string str1, string str2)
  420. {
  421. double var1 = double.Parse(str1);
  422. double var2 = double.Parse(str2);
  423. if (op == '+')
  424. {
  425. return (var1 + var2).ToString("F7");
  426. }
  427. else if (op == '-')
  428. {
  429. return (var1 - var2).ToString("F7");
  430. }
  431. else if (op == '*')
  432. {
  433. return (var1 * var2).ToString("F7");
  434. }
  435. else if (op == '/')
  436. {
  437. return (var1 / var2).ToString("F7");
  438. }
  439. else
  440. {
  441. throw new Exception(op.ToString());
  442. }
  443. }
  444. public static double FmlParse(string str, params string[] strings)
  445. {
  446. for (int i = 0; i < strings.Length; i += 2)
  447. {
  448. if (str.Contains(strings[i]))
  449. {
  450. str = str.Replace(strings[i], double.Parse(strings[i + 1]).ToString("F7"));
  451. }
  452. else
  453. {
  454. //Debug.Log("No such var " + strings[i + 1]);
  455. }
  456. }
  457. int openIndex = 0;
  458. for (int i = 0; i < str.Length; i++)
  459. {
  460. if (str[i] == '(')
  461. {
  462. openIndex = i;
  463. }
  464. else if (str[i] == ')')
  465. {
  466. str = str.Replace(openIndex, i, FmlParse1(str.Between(openIndex + 1, i - 1)));
  467. i = -1;
  468. }
  469. }
  470. return double.Parse(FmlParse1(str));
  471. }
  472. public static string OmitNumberStr(int accuray, string str)
  473. {
  474. int index = str.IndexOf('.');
  475. if (index == -1)
  476. {
  477. return str;
  478. }
  479. if (accuray == 0)
  480. {
  481. return str.Substring(0, index);
  482. }
  483. else
  484. {
  485. for (int i = index + 1; i < index + accuray + 1; i++)
  486. {
  487. if (str[i] != '0')
  488. {
  489. return str.Substring(0, index + accuray + 1);
  490. }
  491. }
  492. return str.Substring(0, index);
  493. }
  494. }
  495. public static double ShrinkNumber(double value, int accuracy = 1)
  496. {
  497. if (LanguageManager.CurrentLanguage == CurrentLanguage.English)
  498. {
  499. if (value < Amount.千)
  500. {
  501. return value;
  502. }
  503. else if (value < Amount.百万)
  504. {
  505. string str = (value / Amount.千).ToString("F" + (accuracy + 1));
  506. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千;
  507. }
  508. else if (value < Amount.十亿)
  509. {
  510. string str = (value / Amount.百万).ToString("F" + (accuracy + 1));
  511. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.百万;
  512. }
  513. else if (value < Amount.兆)
  514. {
  515. string str = (value / Amount.十亿).ToString("F" + (accuracy + 1));
  516. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.十亿;
  517. }
  518. else if (value < Amount.千兆)
  519. {
  520. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  521. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.兆;
  522. }
  523. else
  524. {
  525. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  526. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千兆;
  527. }
  528. }
  529. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseSimplified || LanguageManager.CurrentLanguage == CurrentLanguage.ChineseTraditional)
  530. {
  531. if (value < Amount.万)
  532. {
  533. return value;
  534. }
  535. else if (value < Amount.千万)
  536. {
  537. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  538. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.万;
  539. }
  540. else if (value < Amount.亿)
  541. {
  542. string str = (value / Amount.千万).ToString("F" + (accuracy + 1));
  543. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千万;
  544. }
  545. else if (value < Amount.千亿)
  546. {
  547. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  548. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.亿;
  549. }
  550. else if (value < Amount.兆)
  551. {
  552. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  553. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千亿;
  554. }
  555. else if (value < Amount.千兆)
  556. {
  557. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  558. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.兆;
  559. }
  560. else if (value < Amount.京)
  561. {
  562. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  563. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千兆;
  564. }
  565. else if (value < Amount.千京)
  566. {
  567. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  568. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.京;
  569. }
  570. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  571. {
  572. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  573. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千京;
  574. }
  575. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  576. {
  577. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  578. return double.Parse(OmitNumberStr(0, str)) * Amount.千京 * 10;
  579. }
  580. else
  581. {
  582. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  583. return double.Parse(OmitNumberStr(0, str)) * Amount.千京 * 10000;
  584. }
  585. }
  586. else
  587. {
  588. throw new Exception();
  589. }
  590. }
  591. public static string ShrinkBigNumberStr(double value, int accuracy = 1)
  592. {
  593. if (LanguageManager.CurrentLanguage == CurrentLanguage.English)
  594. {
  595. if (value < Amount.千)
  596. {
  597. return value.ToString("0");
  598. }
  599. else if (value < Amount.百万)
  600. {
  601. string str = (value / Amount.千).ToString("F" + (accuracy + 1));
  602. return OmitNumberStr(accuracy, str) + "K";
  603. }
  604. else if (value < Amount.十亿)
  605. {
  606. string str = (value / Amount.百万).ToString("F" + (accuracy + 1));
  607. return OmitNumberStr(accuracy, str) + "M";
  608. }
  609. else if (value < Amount.兆)
  610. {
  611. string str = (value / Amount.十亿).ToString("F" + (accuracy + 1));
  612. return OmitNumberStr(accuracy, str) + "B";
  613. }
  614. else if (value < Amount.千兆)
  615. {
  616. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  617. return OmitNumberStr(accuracy, str) + "T";
  618. }
  619. else
  620. {
  621. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  622. return OmitNumberStr(accuracy, str) + "T";
  623. }
  624. }
  625. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseSimplified)
  626. {
  627. if (value < Amount.万)
  628. {
  629. return value.ToString("0");
  630. }
  631. else if (value < Amount.千万)
  632. {
  633. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  634. return OmitNumberStr(accuracy, str) + "万";
  635. }
  636. else if (value < Amount.亿)
  637. {
  638. string str = (value/Amount.千万).ToString("F" + (accuracy + 1));
  639. return OmitNumberStr(accuracy, str) + "千万";
  640. }
  641. else if (value < Amount.千亿)
  642. {
  643. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  644. return OmitNumberStr(accuracy, str) + "亿";
  645. }
  646. else if (value < Amount.兆)
  647. {
  648. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  649. return OmitNumberStr(accuracy, str) + "千亿";
  650. }
  651. else if (value < Amount.千兆)
  652. {
  653. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  654. return OmitNumberStr(accuracy, str) + "兆";
  655. }
  656. else if (value < Amount.京)
  657. {
  658. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  659. return OmitNumberStr(accuracy, str) + "千兆";
  660. }
  661. else if (value < Amount.千京)
  662. {
  663. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  664. return OmitNumberStr(accuracy, str) + "京";
  665. }
  666. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  667. {
  668. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  669. return OmitNumberStr(accuracy, str) + "千京";
  670. }
  671. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  672. {
  673. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  674. return OmitNumberStr(0, str) + "垓";
  675. }
  676. else
  677. {
  678. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  679. return OmitNumberStr(0, str) + "千垓";
  680. }
  681. }
  682. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseTraditional)
  683. {
  684. if (value < Amount.万)
  685. {
  686. return value.ToString("0");
  687. }
  688. else if (value < Amount.千万)
  689. {
  690. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  691. return OmitNumberStr(accuracy, str) + "萬";
  692. }
  693. else if (value < Amount.亿)
  694. {
  695. string str = (value / Amount.千万).ToString("F" + (accuracy + 1));
  696. return OmitNumberStr(accuracy, str) + "千萬";
  697. }
  698. else if (value < Amount.千亿)
  699. {
  700. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  701. return OmitNumberStr(accuracy, str) + "億";
  702. }
  703. else if (value < Amount.兆)
  704. {
  705. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  706. return OmitNumberStr(accuracy, str) + "千億";
  707. }
  708. else if (value < Amount.千兆)
  709. {
  710. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  711. return OmitNumberStr(accuracy, str) + "兆";
  712. }
  713. else if (value < Amount.京)
  714. {
  715. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  716. return OmitNumberStr(accuracy, str) + "千兆";
  717. }
  718. else if (value < Amount.千京)
  719. {
  720. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  721. return OmitNumberStr(accuracy, str) + "京";
  722. }
  723. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  724. {
  725. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  726. return OmitNumberStr(accuracy, str) + "千京";
  727. }
  728. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  729. {
  730. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  731. return OmitNumberStr(0, str) + "垓";
  732. }
  733. else
  734. {
  735. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  736. return OmitNumberStr(0, str) + "千垓";
  737. }
  738. }
  739. else
  740. {
  741. throw new Exception();
  742. }
  743. }
  744. public static string ShrinkAllNumberStr(double value, int accuracy = 1)
  745. {
  746. if (LanguageManager.CurrentLanguage == CurrentLanguage.English)
  747. {
  748. if (value < Amount.千)
  749. {
  750. return value.ToString("F" + accuracy);
  751. }
  752. else if (value < Amount.百万)
  753. {
  754. string str = (value / Amount.千).ToString("F" + (accuracy + 1));
  755. return OmitNumberStr(accuracy, str) + "K";
  756. }
  757. else if (value < Amount.十亿)
  758. {
  759. string str = (value / Amount.百万).ToString("F" + (accuracy + 1));
  760. return OmitNumberStr(accuracy, str) + "M";
  761. }
  762. else if (value < Amount.兆)
  763. {
  764. string str = (value / Amount.十亿).ToString("F" + (accuracy + 1));
  765. return OmitNumberStr(accuracy, str) + "B";
  766. }
  767. else if (value < Amount.千兆)
  768. {
  769. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  770. return OmitNumberStr(accuracy, str) + "T";
  771. }
  772. else
  773. {
  774. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  775. return OmitNumberStr(accuracy, str) + "T";
  776. }
  777. }
  778. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseSimplified)
  779. {
  780. if (value < Amount.万)
  781. {
  782. return value.ToString("F" + accuracy);
  783. }
  784. else if (value < Amount.千万)
  785. {
  786. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  787. return OmitNumberStr(accuracy, str) + "万";
  788. }
  789. else if (value < Amount.亿)
  790. {
  791. string str = (value / Amount.千万).ToString("F" + (accuracy + 1));
  792. return OmitNumberStr(accuracy, str) + "千万";
  793. }
  794. else if (value < Amount.千亿)
  795. {
  796. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  797. return OmitNumberStr(accuracy, str) + "亿";
  798. }
  799. else if (value < Amount.兆)
  800. {
  801. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  802. return OmitNumberStr(accuracy, str) + "千亿";
  803. }
  804. else if (value < Amount.千兆)
  805. {
  806. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  807. return OmitNumberStr(accuracy, str) + "兆";
  808. }
  809. else if (value < Amount.京)
  810. {
  811. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  812. return OmitNumberStr(accuracy, str) + "千兆";
  813. }
  814. else if (value < Amount.千京)
  815. {
  816. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  817. return OmitNumberStr(accuracy, str) + "京";
  818. }
  819. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  820. {
  821. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  822. return OmitNumberStr(accuracy, str) + "千京";
  823. }
  824. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  825. {
  826. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  827. return OmitNumberStr(0, str) + "垓";
  828. }
  829. else
  830. {
  831. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  832. return OmitNumberStr(0, str) + "千垓";
  833. }
  834. }
  835. else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseTraditional)
  836. {
  837. if (value < Amount.万)
  838. {
  839. return value.ToString("F" + accuracy);
  840. }
  841. else if (value < Amount.千万)
  842. {
  843. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  844. return OmitNumberStr(accuracy, str) + "萬";
  845. }
  846. else if (value < Amount.亿)
  847. {
  848. string str = (value / Amount.千万).ToString("F" + (accuracy + 1));
  849. return OmitNumberStr(accuracy, str) + "千萬";
  850. }
  851. else if (value < Amount.千亿)
  852. {
  853. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  854. return OmitNumberStr(accuracy, str) + "億";
  855. }
  856. else if (value < Amount.兆)
  857. {
  858. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  859. return OmitNumberStr(accuracy, str) + "千億";
  860. }
  861. else if (value < Amount.千兆)
  862. {
  863. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  864. return OmitNumberStr(accuracy, str) + "兆";
  865. }
  866. else if (value < Amount.京)
  867. {
  868. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  869. return OmitNumberStr(accuracy, str) + "千兆";
  870. }
  871. else if (value < Amount.千京)
  872. {
  873. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  874. return OmitNumberStr(accuracy, str) + "京";
  875. }
  876. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  877. {
  878. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  879. return OmitNumberStr(accuracy, str) + "千京";
  880. }
  881. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  882. {
  883. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  884. return OmitNumberStr(0, str) + "垓";
  885. }
  886. else
  887. {
  888. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  889. return OmitNumberStr(0, str) + "千垓";
  890. }
  891. }
  892. else
  893. {
  894. throw new Exception();
  895. }
  896. }
  897. public static string ImageParse(Current current)
  898. {
  899. if (current == Current.Coin)
  900. {
  901. return TransferLabel.CoinSprite;
  902. }
  903. else if (current == Current.Diamond)
  904. {
  905. return TransferLabel.DiamondSprite;
  906. }
  907. else if (current == Current.Cash)
  908. {
  909. return Language.GetStr(LanguageLabel.Common__Cash);
  910. }
  911. else
  912. {
  913. throw new Exception(current.ToString());
  914. }
  915. }
  916. public static Current CurrentParse(string str)
  917. {
  918. if (string.IsNullOrEmpty(str))
  919. {
  920. return Current.Free;
  921. }
  922. else
  923. {
  924. int number = int.Parse(str);
  925. if (number == 1)
  926. {
  927. return Current.Coin;
  928. }
  929. else if (number == 2)
  930. {
  931. return Current.Diamond;
  932. }
  933. else if (number == 3)
  934. {
  935. return Current.Cash;
  936. }
  937. else if (number == 4)
  938. {
  939. return Current.Other;
  940. }
  941. else if (number == 5)
  942. {
  943. return Current.AD;
  944. }
  945. else
  946. {
  947. throw new Exception(number.ToString());
  948. }
  949. }
  950. }
  951. public static int StringToInt(string str, int defaultValue)
  952. {
  953. if (string.IsNullOrEmpty(str))
  954. {
  955. return defaultValue;
  956. }
  957. else
  958. {
  959. return int.Parse(str);
  960. }
  961. }
  962. public static long StringToLong(string str, long defaultValue)
  963. {
  964. if (string.IsNullOrEmpty(str))
  965. {
  966. return defaultValue;
  967. }
  968. else
  969. {
  970. return long.Parse(str);
  971. }
  972. }
  973. public static bool StringToBool(string str, bool defaultValue)
  974. {
  975. if (string.IsNullOrEmpty(str))
  976. {
  977. return defaultValue;
  978. }
  979. else
  980. {
  981. return Convert.ToBoolean(int.Parse(str));
  982. }
  983. }
  984. public static float StringToFloat(string str, float defaultValue)
  985. {
  986. if (string.IsNullOrEmpty(str))
  987. {
  988. return defaultValue;
  989. }
  990. else
  991. {
  992. return float.Parse(str);
  993. }
  994. }
  995. public static double StringToDouble(string str, double defaultValue)
  996. {
  997. if (string.IsNullOrEmpty(str))
  998. {
  999. return defaultValue;
  1000. }
  1001. else
  1002. {
  1003. return float.Parse(str);
  1004. }
  1005. }
  1006. public static Vector3 StringToVector(char seperateChar, string str, Vector3 defaultValue)
  1007. {
  1008. if (string.IsNullOrEmpty(str))
  1009. {
  1010. return defaultValue;
  1011. }
  1012. else
  1013. {
  1014. string[] strings = str.Split(seperateChar);
  1015. if (strings.Length == 2)
  1016. {
  1017. Vector2 result = new Vector2();
  1018. result.x = float.Parse(strings[0]);
  1019. result.y = float.Parse(strings[1]);
  1020. return result;
  1021. }
  1022. else if (strings.Length == 3)
  1023. {
  1024. Vector3 result = new Vector3();
  1025. result.x = float.Parse(strings[0]);
  1026. result.y = float.Parse(strings[1]);
  1027. result.z = float.Parse(strings[2]);
  1028. return result;
  1029. }
  1030. else
  1031. {
  1032. Debug.Log(str);
  1033. throw new Exception();
  1034. }
  1035. }
  1036. }
  1037. public static List<int> StringToInts(char seperateChar, string str, List<int> defaultValue)
  1038. {
  1039. if (string.IsNullOrEmpty(str))
  1040. {
  1041. return defaultValue;
  1042. }
  1043. else
  1044. {
  1045. string[] strings = str.Split(seperateChar);
  1046. List<int> list = new List<int>();
  1047. for (int i = 0; i < strings.Length; i++)
  1048. {
  1049. list.Add(int.Parse(strings[i]));
  1050. }
  1051. return list;
  1052. }
  1053. }
  1054. public static List<string> StringToStrings(char seperateChar, string str, List<string> defaultValue)
  1055. {
  1056. if (string.IsNullOrEmpty(str))
  1057. {
  1058. return defaultValue;
  1059. }
  1060. else
  1061. {
  1062. string[] strings = str.Split(seperateChar);
  1063. List<string> list = new List<string>();
  1064. for (int i = 0; i < strings.Length; i++)
  1065. {
  1066. list.Add(strings[i]);
  1067. }
  1068. return list;
  1069. }
  1070. }
  1071. public static List<double> StringToDoubles(char seperateChar, string str, List<double> defaultValue)
  1072. {
  1073. if (string.IsNullOrEmpty(str))
  1074. {
  1075. return defaultValue;
  1076. }
  1077. else
  1078. {
  1079. string[] strings = str.Split(seperateChar);
  1080. List<double> list = new List<double>();
  1081. for (int i = 0; i < strings.Length; i++)
  1082. {
  1083. list.Add(double.Parse(strings[i]));
  1084. }
  1085. return list;
  1086. }
  1087. }
  1088. public static List<int> StartEndIndexToInts(int startIndex, int endIndex)
  1089. {
  1090. List<int> ints = new List<int>();
  1091. for (int i = startIndex; i <= endIndex; i++)
  1092. {
  1093. ints.Add(i);
  1094. }
  1095. return ints;
  1096. }
  1097. public static string IntsToString(List<int> ints)
  1098. {
  1099. StringBuilder stringBuilder = new StringBuilder();
  1100. for (int i = 0; i < ints.Count; i++)
  1101. {
  1102. stringBuilder.Append(ints[i] + " ");
  1103. }
  1104. return stringBuilder.ToString();
  1105. }
  1106. }