ManaCenter.cs 27 KB

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