ManaCenter.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191
  1. using LitJson;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.Events;
  5. using UnityEngine.Analytics;
  6. using UnityEngine.EventSystems;
  7. using System;
  8. using System.Xml;
  9. using System.Collections;
  10. using System.Collections.Generic;
  11. public class ManaCenter : Regist
  12. {
  13. #region 变量
  14. #region 成就
  15. public static double AdAmt
  16. {
  17. get { return AdAmt_; }
  18. set
  19. {
  20. AdAmt_ = value;
  21. ManaAchieve.UpdateStatus(AchieveType.AdAmt, AdAmt_);
  22. }
  23. }
  24. public static double SkillAmt
  25. {
  26. get { return SkillAmt_; }
  27. set
  28. {
  29. SkillAmt_ = value;
  30. ManaAchieve.UpdateStatus(AchieveType.SkillAmt, SkillAmt_);
  31. }
  32. }
  33. public static double SignAmt
  34. {
  35. get { return SignAmt_; }
  36. set
  37. {
  38. SignAmt_ = value;
  39. ManaAchieve.UpdateStatus(AchieveType.SignAmt, SignAmt_);
  40. }
  41. }
  42. public static double CloseAmt
  43. {
  44. get { return CloseAmt_; }
  45. set
  46. {
  47. CloseAmt_ = value;
  48. ManaAchieve.UpdateStatus(AchieveType.CloseAmt, CloseAmt_);
  49. }
  50. }
  51. public static double ShareAmt
  52. {
  53. get { return ShareAmt_; }
  54. set
  55. {
  56. ShareAmt_ = value;
  57. ManaAchieve.UpdateStatus(AchieveType.ShareAmt, ShareAmt_);
  58. }
  59. }
  60. public static double MiniGameAmt
  61. {
  62. get { return MiniGameAmt_; }
  63. set
  64. {
  65. MiniGameAmt_ = value;
  66. ManaAchieve.UpdateStatus(AchieveType.MiniGameAmt, MiniGameAmt_);
  67. }
  68. }
  69. public static double ElfLevel
  70. {
  71. get { return ElfLevel_; }
  72. set
  73. {
  74. ElfLevel_ = value;
  75. ManaAchieve.UpdateStatus(AchieveType.ElfLevel, ElfLevel_);
  76. }
  77. }
  78. public static double TotalCoin
  79. {
  80. get { return TotalCoin_; }
  81. set
  82. {
  83. TotalCoin_ = value;
  84. ManaAchieve.UpdateStatus(AchieveType.TotalCoin, TotalCoin_);
  85. }
  86. }
  87. public static double FlowerCoin
  88. {
  89. get { return FlowerCoin_; }
  90. set
  91. {
  92. FlowerCoin_ = value;
  93. ManaAchieve.UpdateStatus(AchieveType.FlowerCoin, FlowerCoin_);
  94. }
  95. }
  96. public static double TotalPerson
  97. {
  98. get { return TotalPerson_; }
  99. set
  100. {
  101. TotalPerson_ = value;
  102. ManaAchieve.UpdateStatus(AchieveType.TotalPerson, TotalPerson_);
  103. }
  104. }
  105. public static double CostDiamond
  106. {
  107. get { return CostDiamond_; }
  108. set
  109. {
  110. CostDiamond_ = value;
  111. ManaAchieve.UpdateStatus(AchieveType.CostDiamond, CostDiamond_);
  112. }
  113. }
  114. private static double AdAmt_;
  115. private static double SkillAmt_;
  116. private static double SignAmt_;
  117. private static double CloseAmt_;
  118. private static double ShareAmt_;
  119. private static double MiniGameAmt_;
  120. private static double ElfLevel_;
  121. private static double TotalCoin_;
  122. private static double FlowerCoin_;
  123. private static double TotalPerson_;
  124. private static double CostDiamond_;
  125. #endregion
  126. public static Action OnLevelChange;
  127. public static int Level
  128. {
  129. get { return Level_; }
  130. set
  131. {
  132. Level_ = value;
  133. if (!Complete)
  134. {
  135. return;
  136. }
  137. ManaVisit.UpdateCost();
  138. if (OnLevelChange != null)
  139. {
  140. OnLevelChange.Invoke();
  141. }
  142. ManaAchieve.UpdateStatus(AchieveType.GardenLevel, Level_);
  143. for (int i = 0; i < SkillList.Count; i++)
  144. {
  145. SkillList[i].UpdateStatus();
  146. }
  147. foreach (var kv in ManaPlayer.CloseUnitDic)
  148. {
  149. kv.Value.OnLevelChange();
  150. }
  151. if (Level_ >= 18) //小游戏B
  152. {
  153. if (ManaTutorial.TutorialB_)
  154. {
  155. ManaTutorial.TutorialB = true;
  156. }
  157. }
  158. if (Level < 13)
  159. {
  160. ManaReso.Get<Image>("C_DressRoom").material = Lib.GrayMat;
  161. }
  162. else
  163. {
  164. ManaReso.Get<Image>("C_DressRoom").material = null;
  165. }
  166. if (ManaGarden.MyFlower >= 2 && Level_ >= 22) //小游戏C
  167. {
  168. if (ManaTutorial.TutorialE_)
  169. {
  170. ManaTutorial.EnterE1();
  171. }
  172. }
  173. if (Level_ >= 8)
  174. {
  175. if (ManaTutorial.TutorialC_)
  176. {
  177. ManaTutorial.EnterC1();
  178. return;
  179. }
  180. else
  181. {
  182. ManaReso.SetActive("C_Visit", true);
  183. }
  184. }
  185. if (Level_ >= 13)
  186. {
  187. if (ManaTutorial.TutorialD_)
  188. {
  189. ManaTutorial.EnterD1();
  190. return;
  191. }
  192. }
  193. if (Level_ >= 28)
  194. {
  195. if (ManaTutorial.TutorialPlazaRoom_)
  196. {
  197. ManaTutorial.EnterPlazaRoom();
  198. return;
  199. }
  200. else
  201. {
  202. ManaReso.SetActive("C_EnterPlazaRoom", true);
  203. }
  204. }
  205. }
  206. }
  207. public static float Person
  208. {
  209. get { return Person_; }
  210. set
  211. {
  212. Person_ = value;
  213. ManaReso.SetText("F_PersonLab", (60*(Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0"));
  214. }
  215. }
  216. public static float SkillPerson
  217. {
  218. get { return SkillPerson_; }
  219. set
  220. {
  221. SkillPerson_ = value;
  222. TweenOutline tween = ManaReso.Get("F_PersonLab").GetTweenOutline();
  223. if (SkillPerson_.Equal(0))
  224. {
  225. tween.Pause();
  226. tween.Target.enabled = false;
  227. }
  228. else
  229. {
  230. if (tween.InPause)
  231. {
  232. tween.Resume();
  233. tween.Target.enabled = true;
  234. }
  235. else
  236. {
  237. tween.StartForward();
  238. }
  239. }
  240. ManaReso.SetText("F_PersonLab", (60*(Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0"));
  241. }
  242. }
  243. public static float CoinPerson
  244. {
  245. get { return CoinPerson_; }
  246. set
  247. {
  248. CoinPerson_ = value;
  249. ManaReso.SetText("F_CoinPersonLab", (CoinPerson_ + SkillCoinPerson_).ToString("0"));
  250. }
  251. }
  252. public static float SkillPersonBuff
  253. {
  254. get { return SkillPersonBuff_; }
  255. set
  256. {
  257. SkillPersonBuff_ = value;
  258. ManaReso.SetText("F_PersonLab", (60 * (Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0"));
  259. }
  260. }
  261. public static float SkillCoinPerson
  262. {
  263. get { return SkillCoinPerson_; }
  264. set
  265. {
  266. SkillCoinPerson_ = value;
  267. TweenOutline tween = ManaReso.Get("F_CoinPersonLab").GetTweenOutline();
  268. if (SkillCoinPerson_.Equal(0))
  269. {
  270. tween.Pause();
  271. tween.Target.enabled = false;
  272. }
  273. else
  274. {
  275. if (tween.InPause)
  276. {
  277. tween.Resume();
  278. tween.Target.enabled = true;
  279. }
  280. else
  281. {
  282. tween.StartForward();
  283. }
  284. }
  285. ManaReso.SetText("F_CoinPersonLab", (CoinPerson_ + SkillCoinPerson_).ToString("0"));
  286. }
  287. }
  288. private static int Level_;
  289. private static bool Pause_;
  290. private static float Person_;
  291. private static float CoinPerson_;
  292. public static double Coin
  293. {
  294. get { return Coin_; }
  295. set
  296. {
  297. Coin_ = value;
  298. ManaReso.SetText("F_CoinLab", Auxiliary.ShrinkNumberStr(Coin_));
  299. ManaReso.SetText("C_CoinLab", Auxiliary.ShrinkNumberStr(Coin_));
  300. ManaReso.SetText("P_CoinLab", Auxiliary.ShrinkNumberStr(Coin_));
  301. ManaAchieve.UpdateStatus(AchieveType.CurrentCoin, Coin_);
  302. }
  303. }
  304. public static double Diamond
  305. {
  306. get { return Diamond_; }
  307. set
  308. {
  309. Diamond_ = value;
  310. ManaReso.SetText("F_DiamondLab", Auxiliary.ShrinkNumberStr(Diamond_));
  311. ManaReso.SetText("P_DiamondLab", Auxiliary.ShrinkNumberStr(Diamond_));
  312. }
  313. }
  314. public static double Coin_;
  315. public static double Diamond_;
  316. public static bool MiniLock;
  317. public static bool SaveLock;
  318. public static bool LoginLock;
  319. public static bool OfflineLock;
  320. public static bool ReactiveLock;
  321. public static bool DownloadLock;
  322. public static bool SceneSwitchLock;
  323. public static bool Complete;
  324. public static bool FirstFrame = true;
  325. public static bool Background;
  326. public static float Elapse;
  327. public static float CircleTime = 10;
  328. public static float OpTimer;
  329. public static float MiniTimer;
  330. public static float SaveTimer;
  331. public static float LoginTimer;
  332. public static float CircleTimer;
  333. public static float NewPerson;
  334. public static float NewCoinPerson;
  335. public static string OfflineFml;
  336. public static double MaxCoin;
  337. public static double MaxTime;
  338. public static float SkillPlus;
  339. public static float SkillPerson_;
  340. public static float SkillPersonBuff_;
  341. public static float SkillCoinPerson_;
  342. public static DateTime QuitTime;
  343. public static ManaCenter Instance;
  344. public static List<Skill> UseList = new List<Skill>();
  345. public static List<Skill> CoolList = new List<Skill>();
  346. public static List<Skill> TempCoolList = new List<Skill>();
  347. public static List<List<Skill>> TempUseList = new List<List<Skill>>();
  348. public static List<SkillRoot> SkillList = new List<SkillRoot>();
  349. public static Dictionary<string, SkillRoot> SkillDic = new Dictionary<string, SkillRoot>();
  350. #endregion
  351. private void Update()
  352. {
  353. LoginThread();
  354. if (ManaTutorial.TutorialA)
  355. {
  356. return;
  357. }
  358. OpThread();
  359. SkillThread();
  360. MiniThread();
  361. SaveThread();
  362. CircleThread();
  363. }
  364. public static void AddCoin(double amt, StaticsManager.ItemID itemId, StaticsManager.ConsumeModule consumeModule)
  365. {
  366. Coin += amt;
  367. if (amt > 0)
  368. {
  369. TotalCoin += amt;
  370. StaticsManager.GetInstance().RewardItem(itemId, StaticsManager.ItemType.金币, amt.ToString("0"), consumeModule);
  371. }
  372. }
  373. public static void AddDiamond(double amt, StaticsManager.ItemID itemId, StaticsManager.ConsumeModule consumeModule)
  374. {
  375. Diamond += amt;
  376. if (amt > 0)
  377. {
  378. StaticsManager.GetInstance().RewardItem(itemId, StaticsManager.ItemType.钻石, amt.ToString("0"), consumeModule);
  379. }
  380. }
  381. private void OpThread()
  382. {
  383. if (Auxiliary.AnyKeyUp)
  384. {
  385. OpTimer = 0;
  386. ManaReso.Get("C_Group").TweenForCG();
  387. }
  388. else
  389. {
  390. OpTimer += Time.deltaTime;
  391. if (OpTimer >= 60)
  392. {
  393. OpTimer = 0;
  394. ManaReso.Get("C_Group").TweenBacCG();
  395. }
  396. }
  397. }
  398. private void SkillThread()
  399. {
  400. for (int i = 0; i < UseList.Count; i++)
  401. {
  402. if (UseList[i].DoUse())
  403. {
  404. UseList.RemoveAt(i--);
  405. }
  406. }
  407. for (int i = 0; i < CoolList.Count; i++)
  408. {
  409. if (CoolList[i].DoCool())
  410. {
  411. CoolList.RemoveAt(i--);
  412. }
  413. }
  414. }
  415. private void MiniThread()
  416. {
  417. if (!MiniLock)
  418. {
  419. MiniTimer -= Time.deltaTime;
  420. ManaReso.SetText("C_MiniGameLab", Mathf.CeilToInt(MiniTimer).ToString());
  421. if (MiniTimer < 0)
  422. {
  423. MiniLock = true;
  424. ManaReso.Get("C_MiniGame").TweenBacRect();
  425. ManaReso.SetText("C_MiniGameLab", "");
  426. StaticsManager.GetInstance().RewardItem(StaticsManager.ItemID.获得小游戏, StaticsManager.ItemType.小游戏, "1", StaticsManager.ConsumeModule.None);
  427. }
  428. }
  429. }
  430. private void SaveThread()
  431. {
  432. if (DownloadLock)
  433. {
  434. return;
  435. }
  436. SaveTimer += Time.deltaTime;
  437. if (SaveTimer >= 60)
  438. {
  439. SaveTimer = 0;
  440. ManaServer.Save();
  441. }
  442. }
  443. private void LoginThread()
  444. {
  445. LoginTimer += Time.deltaTime;
  446. if (LoginTimer >= 10)
  447. {
  448. LoginTimer = 0;
  449. ManaServer.Login();
  450. StaticsManager.GetInstance().Online();
  451. }
  452. }
  453. private void CircleThread()
  454. {
  455. CircleTimer -= Time.deltaTime;
  456. if (CircleTimer < 0)
  457. {
  458. CircleTimer = CircleTime;
  459. NewPerson = Person * (1 + SkillPersonBuff) + SkillPerson;
  460. NewCoinPerson = CoinPerson + SkillCoinPerson;
  461. TotalPerson += NewPerson * CircleTime;
  462. float temp = (NewPerson * NewCoinPerson * CircleTime) * (1 + SkillPlus);
  463. AddCoin(temp, StaticsManager.ItemID.获得金币, StaticsManager.ConsumeModule.Income);
  464. ManaReso.Get("C_IncomeLab").TweenReForGra();
  465. ManaReso.Get("C_IncomeLab").TweenReForVec();
  466. ManaReso.SetText("C_IncomeLab", "+" + Auxiliary.ShrinkNumberStr(temp, 0));
  467. ManaDebug.Log(string.Format("参观收益<color=red>{0:0.0}</color> = <color=red>{1}</color> * <color=red>{2}</color> * <color=red>{3}</color> * <color=red>{4}</color> (人次*金币*时间*加成)", temp, NewPerson, NewCoinPerson, CircleTime, 1 + SkillPlus));
  468. }
  469. }
  470. public override void Reactive()
  471. {
  472. foreach (var kv in SkillDic)
  473. {
  474. kv.Value.Reactive();
  475. }
  476. RegistSkill(false);
  477. RegistIncome();
  478. ManaSign.ShowOfflinePanel();
  479. }
  480. public override void Instantiate()
  481. {
  482. #region 生成技能条
  483. #region 读技能配置
  484. List<XmlAttributeCollection> attributeList = ManaData.GetSkillConfig();
  485. for (int i = 0; i < attributeList.Count; i++)
  486. {
  487. SkillRoot skillRoot;
  488. #region MyRegion
  489. if (attributeList[i].Count == 18)
  490. {
  491. skillRoot = new Pack(attributeList[i]);
  492. }
  493. else if (attributeList[i].Count == 24)
  494. {
  495. skillRoot = new Ability(attributeList[i]);
  496. }
  497. else if (attributeList[i].Count == 34)
  498. {
  499. if (string.IsNullOrEmpty(attributeList[i][4].Value))
  500. {
  501. skillRoot = new Skill(attributeList[i]);
  502. }
  503. else
  504. {
  505. skillRoot = new BigSkill(attributeList[i]);
  506. }
  507. }
  508. else
  509. {
  510. throw new Exception(attributeList[i].Count.ToString());
  511. }
  512. #endregion
  513. SkillDic.Add(skillRoot.ID, skillRoot);
  514. SkillList.Add(skillRoot);
  515. }
  516. SkillList.Sort(SkillRoot.Sort);
  517. #endregion
  518. for (int i = 0; i < SkillList.Count; i++)
  519. {
  520. if (SkillList[i].SkillTab != SkillTab.Null)
  521. {
  522. ManaReso.GetSkillItem(SkillList[i]);
  523. }
  524. }
  525. #endregion
  526. }
  527. public override void RegistValueA()
  528. {
  529. ManaReso.Get<Graphic>("F_Elf").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  530. ManaReso.Get<Graphic>("F_Store").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  531. ManaReso.Get<Graphic>("F_Magic").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  532. ManaReso.Get<Graphic>("F_ElfLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  533. ManaReso.Get<Graphic>("F_StoreLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  534. ManaReso.Get<Graphic>("F_MagicLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  535. ManaReso.Get<Button>("F_Elf").interactable = false;
  536. ManaReso.Get<Button>("F_Store").interactable = false;
  537. ManaReso.Get<Button>("F_Magic").interactable = false;
  538. List<XmlAttributeCollection> attributeList = ManaData.GetSkillList();
  539. for (int i = 0; i < attributeList.Count; i++)
  540. {
  541. SkillRoot skillRoot = SkillDic[attributeList[i][0].Value];
  542. if (!(skillRoot is Skill))
  543. {
  544. skillRoot.RegistReference();
  545. skillRoot.RegistValue(true, Elapse, TempUseList, attributeList[i]);
  546. }
  547. }
  548. }
  549. public override void RegistValueB()
  550. {
  551. Instance = this;
  552. Coin = ManaData.GetPlayerDouble("Coin");
  553. Diamond = ManaData.GetPlayerDouble("Diamond");
  554. MiniTimer = ManaData.GetPlayerFloat("MiniTimer");
  555. CircleTimer = ManaData.GetPlayerFloat("CircleTimer");
  556. if (MiniTimer > 0)
  557. {
  558. ManaReso.Get("C_MiniGame").TweenForRect();
  559. }
  560. else
  561. {
  562. MiniLock = true;
  563. }
  564. ManaServer.ID = ManaData.GetPlayerString("ID");
  565. ManaServer.SerialNumber = ManaData.GetPlayerString("SerialNumber");
  566. List<string> offlineList = ManaData.GetOfflineConfig();
  567. MaxCoin = Auxiliary.LongParse(offlineList[1], 999999999999999999);
  568. MaxTime = Auxiliary.LongParse(offlineList[2], 999999999999999999);
  569. OfflineFml = offlineList[0];
  570. List<double> dataList = ManaData.GetAchieveData();
  571. AdAmt = dataList[0];
  572. ElfLevel = dataList[4];
  573. SkillAmt = dataList[1];
  574. SignAmt = dataList[2];
  575. ShareAmt = dataList[3];
  576. FlowerCoin = dataList[6];
  577. TotalPerson = dataList[7];
  578. CostDiamond = dataList[8];
  579. MiniGameAmt = dataList[5];
  580. }
  581. public static void RegistSkill(bool firstRegist)
  582. {
  583. OfflineLock = false;
  584. ManaReso.SetActive("Ba_Lab2", false);
  585. if (ManaServer.Connect && ManaData.GetPlayerBool("QuitFlag"))
  586. {
  587. QuitTime = DateTime.Parse(ManaData.GetPlayerString("QuitTime"));
  588. Elapse = (float)ManaServer.Time.Subtract(QuitTime).TotalSeconds;
  589. MiniTimer -= Elapse;
  590. ManaDebug.Log(string.Format("离线时间<color=red>{0}</color>", Elapse));
  591. if (Elapse <= 120)
  592. {
  593. Elapse = 0;
  594. }
  595. else
  596. {
  597. OfflineLock = true;
  598. }
  599. if (Elapse > MaxTime)
  600. {
  601. Elapse = (long)MaxTime;
  602. ManaReso.SetText("Ba_Lab2", Language.GetStr("UI", "Ba_Lab2"));
  603. ManaReso.SetActive("Ba_Lab2", true);
  604. }
  605. }
  606. TempUseList = new List<List<Skill>>();
  607. TempCoolList = new List<Skill>();
  608. if (Elapse > CircleTimer)
  609. {
  610. int circle = 1 + Mathf.FloorToInt((Elapse - CircleTimer) / CircleTime);
  611. for (int i = 0; i < circle; i++)
  612. {
  613. TempUseList.Add(new List<Skill>());
  614. }
  615. ManaDebug.Log(string.Format("离线周期<color=red>{0}</color>", circle));
  616. }
  617. List<XmlAttributeCollection> attributeList = ManaData.GetSkillList();
  618. for (int i = 0; i < attributeList.Count; i++)
  619. {
  620. SkillRoot skillRoot = SkillDic[attributeList[i][0].Value];
  621. if (skillRoot is Skill)
  622. {
  623. skillRoot.RegistReference();
  624. skillRoot.RegistValue(firstRegist, Elapse, TempUseList, attributeList[i]);
  625. }
  626. }
  627. }
  628. public static void RegistIncome()
  629. {
  630. double coin = 0;
  631. for (int i = 0; i < TempUseList.Count; i++)
  632. {
  633. for (int j = 0; j < TempCoolList.Count; j++)
  634. {
  635. TempCoolList[j].CoolTimer -= CircleTime;
  636. }
  637. for (int j = 0; j < TempUseList[i].Count; j++)
  638. {
  639. TempUseList[i][j].AnnulA();
  640. TempCoolList.Add(TempUseList[i][j]);
  641. }
  642. NewPerson = Person*(1 + SkillPersonBuff_) + SkillPerson;
  643. NewCoinPerson = CoinPerson + SkillCoinPerson;
  644. TotalPerson += NewPerson*CircleTime;
  645. coin += (NewPerson*NewCoinPerson*CircleTime)*(1 + SkillPlus);
  646. }
  647. CircleTimer = (Elapse - CircleTimer)%CircleTime;
  648. for (int j = 0; j < TempCoolList.Count; j++)
  649. {
  650. TempCoolList[j].CoolTimer -= CircleTime - CircleTimer;
  651. }
  652. coin = (long) Auxiliary.FmlParse(OfflineFml, "c", coin.ToString());
  653. if (coin > MaxCoin)
  654. {
  655. coin = MaxCoin;
  656. ManaReso.SetText("Ba_Lab2", Language.GetStr("UI", "Ba_Lab2"));
  657. ManaReso.SetActive("Ba_Lab2", true);
  658. }
  659. AddCoin(coin, StaticsManager.ItemID.获得金币, StaticsManager.ConsumeModule.Income);
  660. ManaReso.SetText("Ba_IconLab", Auxiliary.ShrinkNumberStr(coin));
  661. }
  662. public static void SwitchLanguage()
  663. {
  664. Coin = Coin;
  665. AddDiamond(0, StaticsManager.ItemID.None, StaticsManager.ConsumeModule.None);
  666. }
  667. public static void Pay(string id, double amt, Current current, UnityAction succeedCallback, StaticsManager.ItemID itemId, StaticsManager.ConsumeModule consumeModule, bool navigate = true, bool useBubbleTweenNavigate = true, UnityAction navigateCall = null)
  668. {
  669. if (ManaTutorial.PayExempt)
  670. {
  671. succeedCallback.Invoke();
  672. return;
  673. }
  674. amt = Auxiliary.ShrinkNumber(amt);
  675. if (current == Current.Free)
  676. {
  677. succeedCallback.Invoke();
  678. }
  679. else if (current == Current.AD)
  680. {
  681. ManaIAP.PlayAD(succeedCallback);
  682. }
  683. else if (current == Current.Cash)
  684. {
  685. ManaIAP.Purchase(id);
  686. }
  687. else if (current == Current.Coin)
  688. {
  689. #region MyRegion
  690. if (Coin >= amt)
  691. {
  692. Coin -= amt;
  693. succeedCallback.Invoke();
  694. StaticsManager.GetInstance().UseItem(itemId, StaticsManager.ItemType.金币, "1", consumeModule);
  695. }
  696. else
  697. {
  698. ManaReso.Get("Fe_Info").TweenBacCG();
  699. if (navigate)
  700. {
  701. Bubble.Show
  702. (
  703. Language.GetStr("Common", "ShortCoin"),
  704. Language.GetStr("Common", "NavigateCoin"),
  705. null,
  706. ManaReso.LoadSprite("金币", Folder.UI),
  707. () =>
  708. {
  709. navigateCall.SafeInvoke();
  710. if (useBubbleTweenNavigate)
  711. {
  712. TweenRoot tween = ManaReso.Get("K_Bubble0").GetTweenScale();
  713. tween.AddEventOnetime
  714. (
  715. EventType.BackwardFinish,
  716. () =>
  717. {
  718. ManaUI.NavigateBuyCoin();
  719. }
  720. );
  721. }
  722. else
  723. {
  724. TweenRoot tween = ManaReso.Get("F_Manage0").GetTweenVec();
  725. tween.AddEventOnetime
  726. (
  727. EventType.ForwardFinish,
  728. () =>
  729. {
  730. ManaUI.NavigateBuyCoin();
  731. }
  732. );
  733. }
  734. }
  735. );
  736. }
  737. else
  738. {
  739. Bubble.Show
  740. (
  741. Language.GetStr("Common", "ShortCoin"),
  742. null,
  743. null,
  744. ManaReso.LoadSprite("金币", Folder.UI)
  745. );
  746. }
  747. }
  748. #endregion
  749. }
  750. else if (current == Current.Diamond)
  751. {
  752. #region MyRegion
  753. if (Diamond >= amt)
  754. {
  755. Diamond -= amt;
  756. CostDiamond += amt;
  757. succeedCallback.Invoke();
  758. StaticsManager.GetInstance().PurchaseItem(itemId, StaticsManager.ItemType.钻石, "1", amt.ToString("0"), consumeModule);
  759. }
  760. else
  761. {
  762. ManaReso.Get("Fe_Info").TweenBacCG();
  763. if (navigate)
  764. {
  765. Bubble.Show
  766. (
  767. Language.GetStr("Common", "ShortDiamond"),
  768. Language.GetStr("Common", "NavigateDiamond"),
  769. null,
  770. ManaReso.LoadSprite("钻石", Folder.UI),
  771. () =>
  772. {
  773. navigateCall.SafeInvoke();
  774. if (useBubbleTweenNavigate)
  775. {
  776. TweenRoot tween = ManaReso.Get("K_Bubble0").GetTweenScale();
  777. tween.AddEventOnetime
  778. (
  779. EventType.BackwardFinish,
  780. () =>
  781. {
  782. ManaUI.NavigateBuyDiamond();
  783. }
  784. );
  785. }
  786. else
  787. {
  788. TweenRoot tween = ManaReso.Get("F_Manage0").GetTweenVec();
  789. tween.AddEventOnetime
  790. (
  791. EventType.ForwardFinish,
  792. () =>
  793. {
  794. ManaUI.NavigateBuyDiamond();
  795. }
  796. );
  797. }
  798. }
  799. );
  800. }
  801. else
  802. {
  803. Bubble.Show
  804. (
  805. Language.GetStr("Common", "ShortDiamond"),
  806. null,
  807. null,
  808. ManaReso.LoadSprite("钻石", Folder.UI)
  809. );
  810. }
  811. }
  812. #endregion
  813. }
  814. else
  815. {
  816. throw new Exception(current.ToString());
  817. }
  818. }
  819. public static void LoginCallbackInitial(JsonData jsonData)
  820. {
  821. if (!Initializer.Complete || !ManaServer.Complete || Complete)
  822. {
  823. return;
  824. }
  825. ManaServer.PackTypeRequest();
  826. if (ManaServer.Connect)
  827. {
  828. if (ManaData.GetPlayerString("ID") == "Default")
  829. {
  830. ManaServer.ID = ManaServer.JsonData["o"].ToString();
  831. ManaReso.SetText("L_UserLab", ManaServer.ID);
  832. }
  833. if (ManaData.GetPlayerString("SerialNumber") == "Default")
  834. {
  835. ManaServer.SerialNumber = ManaServer.JsonData["i"].ToString();
  836. }
  837. }
  838. ManaSocial.UpdatePage(true);
  839. RegistSkill(true);
  840. RegistIncome();
  841. ManaSign.ShowOfflinePanel();
  842. Analytics.SetUserId(ManaServer.ID);
  843. Complete = true;
  844. Level = Level;
  845. }
  846. public static void LoginCallbackReactive(JsonData jsonData)
  847. {
  848. LoginLock = false;
  849. for (int i = 0; i < Initializer.RegistList.Count; i++)
  850. {
  851. Initializer.RegistList[i].Reactive();
  852. }
  853. }
  854. public static void Download(string id)
  855. {
  856. ManaReso.SetText("La_Lab", "连接中");
  857. ManaReso.SetActive("La_Lab", true);
  858. ManaReso.SetActive("La_Mask", true);
  859. ManaServer.DownloadByID(id, DownloadCallback);
  860. }
  861. public static void DownloadCallback(JsonData jsonData)
  862. {
  863. if (jsonData.Inst_Object.Keys.Contains("l"))
  864. {
  865. ManaReso.Get("La_Info").TweenBacCG();
  866. ManaReso.SetText("La_Lab", Language.GetStr("UI", "La_Lab0"));
  867. ManaData.PlayerDoc.LoadXml(jsonData["l"].ToString());
  868. ManaData.PlayerNode = ManaData.PlayerDoc.SelectSingleNode("PlayerConfig");
  869. ManaReso.SetText("L_UserLab", ManaData.GetPlayerString("ID"));
  870. ManaServer.ID = ManaData.GetPlayerString("ID");
  871. ManaServer.SerialNumber = ManaData.GetPlayerString("SerialNumber");
  872. Bubble.Show(null, Language.GetStr("UI", "La_Lab0"), null, null, () => { Application.Quit(); }, null, false);
  873. SaveLock = true;
  874. DownloadLock = true;
  875. ManaData.SaveXml();
  876. }
  877. else
  878. {
  879. ManaReso.SetText("La_Lab", Language.GetStr("UI", "La_Lab1"));
  880. ManaReso.SetActive("La_Mask", false);
  881. }
  882. }
  883. public void OnApplicationQuit()
  884. {
  885. if (!SaveLock)
  886. {
  887. ManaVisit.DataReverse();
  888. ManaData.SavePlayerConfig();
  889. ManaData.SaveXml();
  890. }
  891. }
  892. public void OnApplicationPause(bool pause)
  893. {
  894. if (pause)
  895. {
  896. Background = true;
  897. if (DownloadLock)
  898. {
  899. return;
  900. }
  901. ManaVisit.DataReverse();
  902. ManaData.SavePlayerConfig();
  903. ManaData.SaveXml();
  904. }
  905. else
  906. {
  907. StaticsManager.GetInstance().StartSession();
  908. Background = false;
  909. if (FirstFrame)
  910. {
  911. FirstFrame = false;
  912. }
  913. else
  914. {
  915. if (ManaTutorial.TutorialA)
  916. {
  917. return;
  918. }
  919. if (!Initializer.Complete)
  920. {
  921. return;
  922. }
  923. if (DownloadLock)
  924. {
  925. return;
  926. }
  927. ManaVisit.DataRecover();
  928. if (LoginLock)
  929. {
  930. return;
  931. }
  932. if (ReactiveLock)
  933. {
  934. ReactiveLock = false;
  935. return;
  936. }
  937. LoginLock = true;
  938. ManaServer.Login(LoginCallbackReactive);
  939. ManaServer.MailRequest();
  940. }
  941. }
  942. }
  943. }