Auxiliary.cs 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280
  1. using LitJson;
  2. using MiniJSON;
  3. using ScottGarland;
  4. using DragonBones;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. using UnityEngine.Events;
  8. using UnityEngine.Advertisements;
  9. using System;
  10. using System.IO;
  11. using System.Xml;
  12. using System.Linq;
  13. using System.Net.Mail;
  14. using System.Net;
  15. using System.Text;
  16. using System.Collections;
  17. using System.Diagnostics;
  18. using System.Collections.Generic;
  19. using System.ComponentModel.Design;
  20. using System.Security.Cryptography;
  21. using System.Runtime.Serialization.Formatters.Binary;
  22. using System.Security;
  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 变量
  55. public string String1;
  56. public string String2;
  57. public Sprite Sprite;
  58. public TextAsset TextAsset;
  59. public Texture2D Texture;
  60. public Texture2D Texture1;
  61. public Texture2D Texture2;
  62. public Font Font;
  63. public GameObject Go;
  64. public List<Sprite> Sprites;
  65. public List<GameObject> GoList;
  66. public List<SpriteRenderer> SrList;
  67. public static bool AnyKeyUp;
  68. public static bool AnyKeyDown;
  69. public static Auxiliary Instance;
  70. public static MD5 MD5
  71. {
  72. get
  73. {
  74. if (_MD5 == null)
  75. {
  76. _MD5 = new MD5CryptoServiceProvider();
  77. }
  78. return _MD5;
  79. }
  80. set { _MD5 = value; }
  81. }
  82. public static DESCryptoServiceProvider Des
  83. {
  84. get
  85. {
  86. if (_Des == null)
  87. {
  88. _Des = new DESCryptoServiceProvider();
  89. _Des.IV = Encoding.UTF8.GetBytes("19283740");
  90. _Des.Key = Encoding.UTF8.GetBytes("93287123");
  91. }
  92. return _Des;
  93. }
  94. set { _Des = value; }
  95. }
  96. private static MD5 _MD5;
  97. private static DESCryptoServiceProvider _Des;
  98. #endregion
  99. public override bool RegistImmed()
  100. {
  101. if (base.RegistImmed())
  102. {
  103. return true;
  104. }
  105. enabled = true;
  106. return false;
  107. }
  108. private void Awake()
  109. {
  110. Instance = this;
  111. }
  112. private void Update()
  113. {
  114. #region 调试
  115. //if (Input.GetKeyDown(KeyCode.Escape))
  116. //{
  117. //}
  118. if (Input.GetKeyDown(KeyCode.Space))
  119. {
  120. ManaCenter.Level = 28;
  121. //RobotManager.AddRobot(SFSManager.GardenSmartFox.PlazaRoomManager.CurrentPlazaRoom.Id, 19, position, PlayerDirection.Left);
  122. //Resources.UnloadAsset(ManaReso.Get("U_LoadingPanel"));
  123. //foreach (var VARIABLE in ChestMge.PlazaRoomChests)
  124. //{
  125. // VARIABLE.ShadowSR.material = UnityFactory.Materials[0];
  126. // VARIABLE.ChestSR.material = UnityFactory.Materials[0];
  127. //}
  128. //ManaSocial.CloseCommentPanel();
  129. //Debug.LogWarning(ManaServer.SerialNumber);
  130. //SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.CheckDefaultRoomStatus(1);
  131. //ManaReso.Get<VerticalLayoutGroup>("R_Grid").CalculateLayoutInputVertical();
  132. //ManaReso.Get<VerticalLayoutGroup>("R_Grid").SetLayoutVertical();
  133. }
  134. if (Input.GetKeyDown(KeyCode.A))
  135. {
  136. URLRequestData urlData = new URLRequestData();
  137. urlData.Add("i", "");
  138. URLRequest.CreateURLRequest(false, ManaServer.NewBaseURL + "/user/rand", urlData, data => { Debug.Log(data.ToJson()); }, URLRequest.Method.POST);
  139. //ManaSocial.UpdatePage(true);
  140. //PlazaRoomMge.DownloadRoomData(0);
  141. //DatabaseManager.GetRoomList(-1);
  142. //ManaServer.NotificationIndex = ManaData.GetPlayerInt("NotificationIndex") + 1;
  143. //ManaCenter.OfflineLock = true;
  144. //ManaSign.ShowOfflinePanel();
  145. //ManaTutorial.EnterC1();
  146. }
  147. if (Input.GetKeyDown(KeyCode.S))
  148. {
  149. ManaTutorial.EnterD1();
  150. }
  151. if (Input.GetKeyDown(KeyCode.D))
  152. {
  153. //SFSManager.GardenSmartFox.PlazaRoomManager.BeginEnterPlazaRoom();
  154. }
  155. if (Input.GetKeyDown(KeyCode.Z))
  156. {
  157. //byte[] bytes = Encoding.UTF8.GetBytes(ManaData.PlayerDoc.OuterXml);
  158. //MD5 md5 = new MD5CryptoServiceProvider();
  159. //PlayerPrefs.SetString("config", ToString(md5.ComputeHash(bytes)));
  160. ManaCenter.MiniTimer = 0;
  161. //GardenSmartFoxManager.GardenSmartFox.PlazaRoomManager.OnEnterPlazaRoomButton();
  162. }
  163. if (Input.GetKeyDown(KeyCode.X))
  164. {
  165. //GardenSmartFoxManager.GardenSmartFox.ExtensionManager.PlazaRoomExtension.SendPublicMessage("123");
  166. //ManaPlayer.Player.PlayAnim("newAnimation");
  167. //StartCoroutine(ManaServer.DownloadAllAsset(new List<string>() { "http://or5zgoeui.bkt.clouddn.com/game_icon.png", "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3853411417,2245648913&fm=26&gp=0.jpg" }, ManaServer.DownloadAllTexture));
  168. ManaMiniGame.GameTimer = 45;
  169. //Lottery.TempTypeList = new List<int>();
  170. //Lottery.TempValueList = new List<int>();
  171. //Lottery.TempLotteryList = new List<Lottery>();
  172. //Lottery.EnterAnimation();
  173. //ManaReso.Get("Bc_LotteryItem1").TweenForEuler();
  174. //ManaReso.Get("Bc_LotteryItem2").TweenForEuler();
  175. //ManaReso.Get("Bc_LotteryItem3").TweenForEuler();
  176. }
  177. if (Input.GetKeyDown(KeyCode.C))
  178. {
  179. //GardenSmartFoxManager.GardenSmartFox.PlazaRoomManager.SendExpression(ExpressionID.郁闷);
  180. //SFSObject sfsObject = new SFSObject();
  181. //sfsObject.PutInt(DataID.SenderID.GetHashString(), 0);
  182. //sfsObject.PutText(DataID.Message.GetHashString(), "123");
  183. //SFSObject parameter = GardenSmartFox.ConstructCommandParameter(CommandID.ReceivePublicMessage.GetHashCode(), sfsObject, -1);
  184. //GardenSmartFoxManager.GardenSmartFox.AddRequest(parameter, RequestType.Immediate);
  185. //GardenSmartFoxManager.GardenSmartFox.SmartFox.Send(new ExtensionRequest("0", sfsObject));
  186. //ManaPlayer.Player.PlayAnim("newAnimation1");
  187. //ManaReso.Get("C_Notify").TweenForCG();
  188. ManaMiniGame.Score += 400;
  189. //ManaSign.SignTime = new DateTime(2007, 1, 1);
  190. }
  191. if (Input.GetKeyDown(KeyCode.V))
  192. {
  193. //ManaData.PlayerDoc.SelectSingleNode("PlayerConfig").SelectSingleNode("Version").Attributes[0].Value = 6.ToString();
  194. //ManaData.PlayerNode.RemoveChild(ManaData.PlayerNode.SelectSingleNode("FlowerAmtList"));
  195. Debug.Log(ManaData.GetPlayerString("FlowerList"));
  196. Debug.Log(ManaData.GetPlayerString("FlowerAmtList"));
  197. //ManaPlayer.Player.PlayAnim("newAnimation2");
  198. //ManaPlayer.Player.Flip(PlayerDirection.Right);
  199. //ManaServer.MailReward mailReward = new ManaServer.MailReward("1", "pack", "4");
  200. //ManaServer.MailReward mailReward1 = new ManaServer.MailReward("1", "close", "2");
  201. //ManaServer.GetMainReward(mailReward);
  202. //ManaServer.GetMainReward(mailReward1);
  203. //ManaGarden.ElfTimer = 0;
  204. //ManaServer.Time = new DateTime(2007, 1, 1);
  205. }
  206. if (Input.GetKeyDown(KeyCode.B))
  207. {
  208. //ManaPlayer.Player.PlayAnim("newAnimation3");
  209. //ManaPlayer.Player.Flip(PlayerDirection.Left);
  210. //foreach (var VARIABLE in ManaPlayer.CloseUnitDic)
  211. //{
  212. // VARIABLE.Value.Unlock();
  213. //}
  214. }
  215. //if (Input.GetKeyDown(KeyCode.M))
  216. //{
  217. // ManaReso.Get("G_Flower").SetActive(false);
  218. // Debug.Log(ManaGarden.Slot);
  219. //}
  220. //if (Input.GetKeyDown(KeyCode.N))
  221. //{
  222. // ManaCenter.Coin = 0;
  223. // ManaCenter.Diamond = 0;
  224. // foreach (var VARIABLE in ManaGarden.FlowerInfoDic)
  225. // {
  226. // VARIABLE.Value.Unlock = true;
  227. // }
  228. // foreach (var VARIABLE in ManaGarden.FlowerInfoDic)
  229. // {
  230. // VARIABLE.Value.Unlock = false;
  231. // }
  232. // ManaGarden.FlowerInfoDic.First().Value.Unlock = true;
  233. //}
  234. //if (Input.GetKeyDown(KeyCode.P))
  235. //{
  236. // ManaData.Level += 20;
  237. //}
  238. //if (Input.GetKeyDown(KeyCode.O))
  239. //{
  240. // for (int i = 0; i < ManaCenter.CoolList.Count; i++)
  241. // {
  242. // ManaCenter.CoolList[i].CoolTimer = 0;
  243. // }
  244. //}
  245. //if (Input.GetKeyDown(KeyCode.I))
  246. //{
  247. // ManaCenter.Coin += 1000;
  248. // ManaCenter.Diamond += 1000;
  249. //}
  250. //if (Input.GetKeyDown(KeyCode.U))
  251. //{
  252. // Data.SavePlayerConfig();
  253. // Data.SaveXml();
  254. //}
  255. //if (Input.GetKeyDown(KeyCode.Y))
  256. //{
  257. // Data.ResetPlayerConfig();
  258. // Data.SaveXml();
  259. //}
  260. //if (Input.GetKeyDown(KeyCode.T))
  261. //{
  262. // ManaData.Pause = !ManaData.Pause;
  263. //}
  264. #endregion
  265. #region 输入检测
  266. if (Input.GetKeyDown(KeyCode.Escape))
  267. {
  268. ManaMiniGame.Pause = true;
  269. Bubble.Show(Language.GetStr("Common", "QuitGame"), null, null, null, Application.Quit, () => { ManaMiniGame.Pause = false; });
  270. }
  271. if (AnyKeyUp)
  272. {
  273. if (Input.anyKey == false)
  274. {
  275. AnyKeyUp = false;
  276. }
  277. }
  278. if (Input.anyKeyDown)
  279. {
  280. AnyKeyDown = true;
  281. }
  282. if (AnyKeyDown)
  283. {
  284. if (Input.anyKey == false)
  285. {
  286. AnyKeyUp = true;
  287. AnyKeyDown = false;
  288. }
  289. }
  290. #endregion
  291. }
  292. private static void ResetAllCd()
  293. {
  294. for (int i = 0; i < ManaCenter.CoolList.Count; i++)
  295. {
  296. ManaCenter.CoolList[i].CoolTimer = 0;
  297. }
  298. }
  299. public static byte[] GetMD5(object obj)
  300. {
  301. MemoryStream memoryStream = new MemoryStream();
  302. BinaryFormatter binaryFormatter = new BinaryFormatter();
  303. binaryFormatter.Serialize(memoryStream, obj);
  304. byte[] bytes = memoryStream.GetBuffer();
  305. memoryStream.Dispose();
  306. return MD5.ComputeHash(bytes);
  307. }
  308. public static void EncryptXml(XmlDocument doc)
  309. {
  310. EncryptedXml encryptedXml = new EncryptedXml();
  311. XmlElement xmlElement = doc.DocumentElement;
  312. byte[] bytes = encryptedXml.EncryptData(xmlElement, Des, false);
  313. EncryptedData encryptedData = new EncryptedData();
  314. encryptedData.Type = EncryptedXml.XmlEncElementUrl;
  315. encryptedData.EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncDESUrl);
  316. encryptedData.CipherData.CipherValue = bytes;
  317. EncryptedXml.ReplaceElement(xmlElement, encryptedData, false);
  318. }
  319. public static void DecryptXml(XmlDocument doc)
  320. {
  321. EncryptedXml encryptedXml = new EncryptedXml();
  322. XmlElement encryptXmlElement = (XmlElement)doc.GetElementsByTagName("EncryptedData")[0];
  323. EncryptedData encryptedData = new EncryptedData();
  324. encryptedData.LoadXml(encryptXmlElement);
  325. byte[] bytes = encryptedXml.DecryptData(encryptedData, Des);
  326. encryptedXml.ReplaceData(encryptXmlElement, bytes);
  327. }
  328. public static byte[] Encrypt(string str)
  329. {
  330. byte[] bytes = Encoding.UTF8.GetBytes(str);
  331. byte[] encryptBytes = Des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
  332. return encryptBytes;
  333. }
  334. public static byte[] ToBytes(string str)
  335. {
  336. string[] strings = str.Split(' ');
  337. byte[] bytes = new byte[strings.Length];
  338. for (int i = 0; i < bytes.Length; i++)
  339. {
  340. bytes[i] = byte.Parse(strings[i]);
  341. }
  342. return bytes;
  343. }
  344. public static string Decrypt(string str)
  345. {
  346. byte[] encryptBytes = ToBytes(str);
  347. byte[] decryptBytes = Des.CreateDecryptor().TransformFinalBlock(encryptBytes, 0, encryptBytes.Length);
  348. return Encoding.UTF8.GetString(decryptBytes);
  349. }
  350. public static string ToString(byte[] bytes)
  351. {
  352. StringBuilder strB = new StringBuilder();
  353. for (int i = 0; i < bytes.Length; i++)
  354. {
  355. if (i == bytes.Length - 1)
  356. {
  357. strB.Append(bytes[i]);
  358. }
  359. else
  360. {
  361. strB.Append(bytes[i] + " ");
  362. }
  363. }
  364. return strB.ToString();
  365. }
  366. public static void CompileDic(Transform tra, Dictionary<string, Transform> dic, bool enableIgnore = true)
  367. {
  368. Transform[] transforms = tra.GetComponentsInChildren<Transform>(true);
  369. for (int i = 0; i < transforms.Length; i++)
  370. {
  371. if (enableIgnore)
  372. {
  373. if (transforms[i].GetComponent<IgnoreIndexing>())
  374. {
  375. continue;
  376. }
  377. }
  378. if (dic.ContainsKey(transforms[i].name))
  379. {
  380. throw new Exception(transforms[i].name);
  381. }
  382. else
  383. {
  384. dic.Add(transforms[i].name, transforms[i]);
  385. }
  386. }
  387. }
  388. public static string GetUnit(int value, Unit unit)
  389. {
  390. if (unit == Unit.Second)
  391. {
  392. if (ManaLan.CurrentLan == Lan.English)
  393. {
  394. if (value == 0 || value == 1)
  395. {
  396. return " Second";
  397. }
  398. else
  399. {
  400. return " Seconds";
  401. }
  402. }
  403. else if (ManaLan.CurrentLan == Lan.ChineseSimplified)
  404. {
  405. return "秒";
  406. }
  407. else if (ManaLan.CurrentLan == Lan.ChineseTraditional)
  408. {
  409. return "秒";
  410. }
  411. else
  412. {
  413. throw new Exception();
  414. }
  415. }
  416. else
  417. {
  418. throw new Exception();
  419. }
  420. }
  421. public static string GetStreamPath()
  422. {
  423. if (Application.isEditor)
  424. {
  425. return "file://" + Application.streamingAssetsPath;
  426. }
  427. else if (Application.platform == RuntimePlatform.IPhonePlayer)
  428. {
  429. return "file://" + Application.streamingAssetsPath;
  430. }
  431. else if (Application.isMobilePlatform)
  432. {
  433. return Application.streamingAssetsPath;
  434. }
  435. else
  436. {
  437. throw new Exception();
  438. }
  439. }
  440. public Coroutine DelayCall(UnityAction function, int frame)
  441. {
  442. return StartCoroutine(IDelayCall(function, frame));
  443. }
  444. public Coroutine DelayCall(UnityAction function, float time)
  445. {
  446. return StartCoroutine(IDelayCall(function, time));
  447. }
  448. public static IEnumerator IDelayCall(UnityAction function, int frame)
  449. {
  450. int count = 0;
  451. while (count < frame)
  452. {
  453. count++;
  454. yield return null;
  455. }
  456. function.Invoke();
  457. }
  458. public static IEnumerator IDelayCall(UnityAction function, float time)
  459. {
  460. yield return new WaitForSeconds(time);
  461. function.Invoke();
  462. }
  463. public static string FmlParse1(string str)
  464. {
  465. int index = 0;
  466. int openIndex = 0;
  467. bool flag = false;
  468. bool group = false;
  469. for (int i = 0; i < str.Length; i++)
  470. {
  471. if (group)
  472. {
  473. if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/')
  474. {
  475. str = str.Replace(openIndex, i - 1, FmlParse2(str[index], str.Between(openIndex, index - 1), str.Between(index + 1, i - 1)));
  476. i = 0;
  477. group = false;
  478. }
  479. else if (i == str.Length - 1)
  480. {
  481. str = str.Replace(openIndex, i, FmlParse2(str[index], str.Between(openIndex, index - 1), str.Between(index + 1, i)));
  482. break;
  483. }
  484. }
  485. else
  486. {
  487. if (str[i] == '+' || str[i] == '-')
  488. {
  489. flag = true;
  490. openIndex = i + 1;
  491. }
  492. else if (str[i] == '*' || str[i] == '/')
  493. {
  494. index = i;
  495. group = true;
  496. if (!flag)
  497. {
  498. openIndex = 0;
  499. }
  500. }
  501. }
  502. }
  503. group = false;
  504. for (int i = 0; i < str.Length; i++)
  505. {
  506. if (group)
  507. {
  508. if (str[i] == '+' || str[i] == '-')
  509. {
  510. str = str.Replace(0, i - 1, FmlParse2(str[index], str.Between(0, index - 1), str.Between(index + 1, i - 1)));
  511. i = -1;
  512. group = false;
  513. }
  514. else if (i == str.Length - 1)
  515. {
  516. return FmlParse2(str[index], str.Between(0, index - 1), str.Between(index + 1, i));
  517. }
  518. }
  519. else
  520. {
  521. if (str[i] == '+' || str[i] == '-')
  522. {
  523. index = i;
  524. group = true;
  525. }
  526. }
  527. }
  528. return str;
  529. }
  530. public static string FmlParse2(char op, string str1, string str2)
  531. {
  532. double var1 = double.Parse(str1);
  533. double var2 = double.Parse(str2);
  534. if (op == '+')
  535. {
  536. return (var1 + var2).ToString();
  537. }
  538. else if (op == '-')
  539. {
  540. return (var1 - var2).ToString();
  541. }
  542. else if (op == '*')
  543. {
  544. return (var1 * var2).ToString();
  545. }
  546. else if (op == '/')
  547. {
  548. return (var1 / var2).ToString();
  549. }
  550. else
  551. {
  552. throw new Exception(op.ToString());
  553. }
  554. }
  555. public static double FmlParse(string str, params string[] strings)
  556. {
  557. for (int i = 0; i < strings.Length; i += 2)
  558. {
  559. if (str.Contains(strings[i]))
  560. {
  561. str = str.Replace(strings[i], strings[i + 1]);
  562. }
  563. else
  564. {
  565. //Debug.Log("No such var " + strings[i + 1]);
  566. }
  567. }
  568. int openIndex = 0;
  569. for (int i = 0; i < str.Length; i++)
  570. {
  571. if (str[i] == '(')
  572. {
  573. openIndex = i;
  574. }
  575. else if (str[i] == ')')
  576. {
  577. str = str.Replace(openIndex, i, FmlParse1(str.Between(openIndex + 1, i - 1)));
  578. i = -1;
  579. }
  580. }
  581. return double.Parse(FmlParse1(str));
  582. }
  583. public static string OmitNumberStr(int accuray, string str)
  584. {
  585. int index = str.IndexOf('.');
  586. if (index == -1)
  587. {
  588. return str;
  589. }
  590. if (accuray == 0)
  591. {
  592. return str.Substring(0, index);
  593. }
  594. else
  595. {
  596. for (int i = index + 1; i < index + accuray + 1; i++)
  597. {
  598. if (str[i] != '0')
  599. {
  600. return str.Substring(0, index + accuray + 1);
  601. }
  602. }
  603. return str.Substring(0, index);
  604. }
  605. }
  606. public static double ShrinkNumber(double value, int accuracy = 1)
  607. {
  608. if (ManaLan.CurrentLan == Lan.English)
  609. {
  610. if (value < Amount.千)
  611. {
  612. return value;
  613. }
  614. else if (value < Amount.百万)
  615. {
  616. string str = (value / Amount.千).ToString("F" + (accuracy + 1));
  617. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千;
  618. }
  619. else if (value < Amount.十亿)
  620. {
  621. string str = (value / Amount.百万).ToString("F" + (accuracy + 1));
  622. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.百万;
  623. }
  624. else if (value < Amount.兆)
  625. {
  626. string str = (value / Amount.十亿).ToString("F" + (accuracy + 1));
  627. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.十亿;
  628. }
  629. else if (value < Amount.千兆)
  630. {
  631. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  632. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.兆;
  633. }
  634. else
  635. {
  636. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  637. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千兆;
  638. }
  639. }
  640. else if (ManaLan.CurrentLan == Lan.ChineseSimplified || ManaLan.CurrentLan == Lan.ChineseTraditional)
  641. {
  642. if (value < Amount.万)
  643. {
  644. return value;
  645. }
  646. else if (value < Amount.千万)
  647. {
  648. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  649. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.万;
  650. }
  651. else if (value < Amount.亿)
  652. {
  653. string str = (value / Amount.千万).ToString("F" + (accuracy + 1));
  654. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千万;
  655. }
  656. else if (value < Amount.千亿)
  657. {
  658. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  659. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.亿;
  660. }
  661. else if (value < Amount.兆)
  662. {
  663. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  664. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千亿;
  665. }
  666. else if (value < Amount.千兆)
  667. {
  668. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  669. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.兆;
  670. }
  671. else if (value < Amount.京)
  672. {
  673. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  674. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千兆;
  675. }
  676. else if (value < Amount.千京)
  677. {
  678. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  679. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.京;
  680. }
  681. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  682. {
  683. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  684. return double.Parse(OmitNumberStr(accuracy, str)) * Amount.千京;
  685. }
  686. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  687. {
  688. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  689. return double.Parse(OmitNumberStr(0, str)) * Amount.千京 * 10;
  690. }
  691. else
  692. {
  693. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  694. return double.Parse(OmitNumberStr(0, str)) * Amount.千京 * 10000;
  695. }
  696. }
  697. else
  698. {
  699. throw new Exception();
  700. }
  701. }
  702. public static string ShrinkNumberStr(double value, int accuracy = 1)
  703. {
  704. if (ManaLan.CurrentLan == Lan.English)
  705. {
  706. if (value < Amount.千)
  707. {
  708. return value.ToString("0");
  709. }
  710. else if (value < Amount.百万)
  711. {
  712. string str = (value / Amount.千).ToString("F" + (accuracy + 1));
  713. return OmitNumberStr(accuracy, str) + "K";
  714. }
  715. else if (value < Amount.十亿)
  716. {
  717. string str = (value / Amount.百万).ToString("F" + (accuracy + 1));
  718. return OmitNumberStr(accuracy, str) + "M";
  719. }
  720. else if (value < Amount.兆)
  721. {
  722. string str = (value / Amount.十亿).ToString("F" + (accuracy + 1));
  723. return OmitNumberStr(accuracy, str) + "B";
  724. }
  725. else if (value < Amount.千兆)
  726. {
  727. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  728. return OmitNumberStr(accuracy, str) + "T";
  729. }
  730. else
  731. {
  732. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  733. return OmitNumberStr(accuracy, str) + "T";
  734. }
  735. }
  736. else if (ManaLan.CurrentLan == Lan.ChineseSimplified)
  737. {
  738. if (value < Amount.万)
  739. {
  740. return value.ToString("0");
  741. }
  742. else if (value < Amount.千万)
  743. {
  744. string str = (value / Amount.万).ToString("F" + (accuracy + 1));
  745. return OmitNumberStr(accuracy, str) + "万";
  746. }
  747. else if (value < Amount.亿)
  748. {
  749. string str = (value/Amount.千万).ToString("F" + (accuracy + 1));
  750. return OmitNumberStr(accuracy, str) + "千万";
  751. }
  752. else if (value < Amount.千亿)
  753. {
  754. string str = (value / Amount.亿).ToString("F" + (accuracy + 1));
  755. return OmitNumberStr(accuracy, str) + "亿";
  756. }
  757. else if (value < Amount.兆)
  758. {
  759. string str = (value / Amount.千亿).ToString("F" + (accuracy + 1));
  760. return OmitNumberStr(accuracy, str) + "千亿";
  761. }
  762. else if (value < Amount.千兆)
  763. {
  764. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  765. return OmitNumberStr(accuracy, str) + "兆";
  766. }
  767. else if (value < Amount.京)
  768. {
  769. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  770. return OmitNumberStr(accuracy, str) + "千兆";
  771. }
  772. else if (value < Amount.千京)
  773. {
  774. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  775. return OmitNumberStr(accuracy, str) + "京";
  776. }
  777. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  778. {
  779. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  780. return OmitNumberStr(accuracy, str) + "千京";
  781. }
  782. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  783. {
  784. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  785. return OmitNumberStr(0, str) + "垓";
  786. }
  787. else
  788. {
  789. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  790. return OmitNumberStr(0, str) + "千垓";
  791. }
  792. }
  793. else if (ManaLan.CurrentLan == Lan.ChineseTraditional)
  794. {
  795. if (value < Amount.万)
  796. {
  797. return value.ToString("0");
  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 (value < Amount.千兆)
  820. {
  821. string str = (value / Amount.兆).ToString("F" + (accuracy + 1));
  822. return OmitNumberStr(accuracy, str) + "兆";
  823. }
  824. else if (value < Amount.京)
  825. {
  826. string str = (value / Amount.千兆).ToString("F" + (accuracy + 1));
  827. return OmitNumberStr(accuracy, str) + "千兆";
  828. }
  829. else if (value < Amount.千京)
  830. {
  831. string str = (value / Amount.京).ToString("F" + (accuracy + 1));
  832. return OmitNumberStr(accuracy, str) + "京";
  833. }
  834. else if (new BigInteger(value.ToString("0")) < Amount.垓)
  835. {
  836. string str = (value / Amount.千京).ToString("F" + (accuracy + 1));
  837. return OmitNumberStr(accuracy, str) + "千京";
  838. }
  839. else if (new BigInteger(value.ToString("0")) < Amount.千垓)
  840. {
  841. string str = (new BigInteger(value.ToString("0")) / Amount.垓).ToString();
  842. return OmitNumberStr(0, str) + "垓";
  843. }
  844. else
  845. {
  846. string str = (new BigInteger(value.ToString("0")) / Amount.千垓).ToString();
  847. return OmitNumberStr(0, str) + "千垓";
  848. }
  849. }
  850. else
  851. {
  852. throw new Exception();
  853. }
  854. }
  855. public static string ImageParse(Current current)
  856. {
  857. if (current == Current.Coin)
  858. {
  859. return "<(金币)>";
  860. }
  861. else if (current == Current.Diamond)
  862. {
  863. return "<(钻石)>";
  864. }
  865. else if (current == Current.Cash)
  866. {
  867. return Language.GetStr("Common", "Cash");
  868. }
  869. else
  870. {
  871. throw new Exception(current.ToString());
  872. }
  873. }
  874. public static Current CurrentParse(string str)
  875. {
  876. if (string.IsNullOrEmpty(str))
  877. {
  878. return Current.Free;
  879. }
  880. else
  881. {
  882. int number = int.Parse(str);
  883. if (number == 1)
  884. {
  885. return Current.Coin;
  886. }
  887. else if (number == 2)
  888. {
  889. return Current.Diamond;
  890. }
  891. else if (number == 3)
  892. {
  893. return Current.Cash;
  894. }
  895. else if (number == 4)
  896. {
  897. return Current.Other;
  898. }
  899. else if (number == 5)
  900. {
  901. return Current.AD;
  902. }
  903. else
  904. {
  905. throw new Exception(number.ToString());
  906. }
  907. }
  908. }
  909. public static int IntParse(string str, int defaultValue)
  910. {
  911. if (string.IsNullOrEmpty(str))
  912. {
  913. return defaultValue;
  914. }
  915. else
  916. {
  917. return int.Parse(str);
  918. }
  919. }
  920. public static long LongParse(string str, long defaultValue)
  921. {
  922. if (string.IsNullOrEmpty(str))
  923. {
  924. return defaultValue;
  925. }
  926. else
  927. {
  928. return long.Parse(str);
  929. }
  930. }
  931. public static bool BoolParse(string str, bool defaultValue)
  932. {
  933. if (string.IsNullOrEmpty(str))
  934. {
  935. return defaultValue;
  936. }
  937. else
  938. {
  939. return Convert.ToBoolean(int.Parse(str));
  940. }
  941. }
  942. public static float FloatParse(string str, float defaultValue)
  943. {
  944. if (string.IsNullOrEmpty(str))
  945. {
  946. return defaultValue;
  947. }
  948. else
  949. {
  950. return float.Parse(str);
  951. }
  952. }
  953. public static double DoubleParse(string str, double defaultValue)
  954. {
  955. if (string.IsNullOrEmpty(str))
  956. {
  957. return defaultValue;
  958. }
  959. else
  960. {
  961. return float.Parse(str);
  962. }
  963. }
  964. public static Vector3 VectorParse(char cah, string str, Vector3 defaultValue)
  965. {
  966. if (string.IsNullOrEmpty(str))
  967. {
  968. return defaultValue;
  969. }
  970. else
  971. {
  972. string[] strings = str.Split(',');
  973. if (strings.Length == 2)
  974. {
  975. Vector2 result = new Vector2();
  976. result.x = float.Parse(strings[0]);
  977. result.y = float.Parse(strings[1]);
  978. return result;
  979. }
  980. else if (strings.Length == 3)
  981. {
  982. Vector3 result = new Vector3();
  983. result.x = float.Parse(strings[0]);
  984. result.y = float.Parse(strings[1]);
  985. result.z = float.Parse(strings[2]);
  986. return result;
  987. }
  988. else
  989. {
  990. Debug.Log(str);
  991. throw new Exception();
  992. }
  993. }
  994. }
  995. public static List<int> IntListParse(char cah, string str, List<int> defaultValue)
  996. {
  997. if (string.IsNullOrEmpty(str))
  998. {
  999. return defaultValue;
  1000. }
  1001. else
  1002. {
  1003. string[] strings = str.Split(cah);
  1004. List<int> list = new List<int>();
  1005. for (int i = 0; i < strings.Length; i++)
  1006. {
  1007. list.Add(int.Parse(strings[i]));
  1008. }
  1009. return list;
  1010. }
  1011. }
  1012. public static List<string> StringListParse(char cah, string str, List<string> defaultValue)
  1013. {
  1014. if (string.IsNullOrEmpty(str))
  1015. {
  1016. return defaultValue;
  1017. }
  1018. else
  1019. {
  1020. string[] strings = str.Split(cah);
  1021. List<string> list = new List<string>();
  1022. for (int i = 0; i < strings.Length; i++)
  1023. {
  1024. list.Add(strings[i]);
  1025. }
  1026. return list;
  1027. }
  1028. }
  1029. public static List<double> DoubleListParse(char cah, string str, List<double> defaultValue)
  1030. {
  1031. if (string.IsNullOrEmpty(str))
  1032. {
  1033. return defaultValue;
  1034. }
  1035. else
  1036. {
  1037. string[] strings = str.Split(cah);
  1038. List<double> list = new List<double>();
  1039. for (int i = 0; i < strings.Length; i++)
  1040. {
  1041. list.Add(double.Parse(strings[i]));
  1042. }
  1043. return list;
  1044. }
  1045. }
  1046. }