ManaCenter.cs 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150
  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 static void Reload()
  391. {
  392. Complete = false;
  393. SaveTimer = 0;
  394. ManaTutorial.TutorialB_ = ManaData.GetPlayerBool("TutorialB");
  395. ManaTutorial.TutorialC_ = ManaData.GetPlayerBool("TutorialC");
  396. ManaTutorial.TutorialIndexB = ManaData.GetPlayerInt("TutorialIndexB");
  397. ManaTutorial.TutorialIndexC = ManaData.GetPlayerInt("TutorialIndexC");
  398. foreach (var kv in SkillDic)
  399. {
  400. kv.Value.Reactive();
  401. }
  402. ManaReso.Get("Tree1").GetTweenSr().InOrigin = true;
  403. ManaReso.Get("Tree2").GetTweenSr().InOrigin = true;
  404. ManaReso.Get("Rainbow").GetTweenSr().InOrigin = true;
  405. UseList = new List<Skill>();
  406. CoolList = new List<Skill>();
  407. Instance.RegistValueB();
  408. RegistSkill(false);
  409. RegistIncome();
  410. if (OfflineLock)
  411. {
  412. if (!ManaTutorial.TutorialA && !ManaTutorial.TutorialB)
  413. {
  414. ManaReso.Get("C_Group").TweenBacCG();
  415. ManaReso.Get("B_SignIn").TweenForCG();
  416. ManaReso.Get("Ba_Notice").TweenForCG();
  417. }
  418. }
  419. Complete = true;
  420. Level = Level;
  421. }
  422. public override void Reactive()
  423. {
  424. foreach (var kv in SkillDic)
  425. {
  426. kv.Value.Reactive();
  427. }
  428. RegistSkill(false);
  429. RegistIncome();
  430. if (OfflineLock)
  431. {
  432. if (!ManaTutorial.TutorialA && !ManaTutorial.TutorialB)
  433. {
  434. ManaReso.Get("C_Group").TweenBacCG();
  435. ManaReso.Get("B_SignIn").TweenForCG();
  436. ManaReso.Get("Ba_Notice").TweenForCG();
  437. }
  438. }
  439. }
  440. public override void Instantiate()
  441. {
  442. #region 生成技能条
  443. #region 读技能配置
  444. List<XmlAttributeCollection> attributeList = ManaData.GetSkillConfig();
  445. for (int i = 0; i < attributeList.Count; i++)
  446. {
  447. SkillRoot skillRoot;
  448. #region MyRegion
  449. if (attributeList[i].Count == 17)
  450. {
  451. skillRoot = new Pack(attributeList[i]);
  452. }
  453. else if (attributeList[i].Count == 23)
  454. {
  455. skillRoot = new Ability(attributeList[i]);
  456. }
  457. else if (attributeList[i].Count == 33)
  458. {
  459. if (string.IsNullOrEmpty(attributeList[i][4].Value))
  460. {
  461. skillRoot = new Skill(attributeList[i]);
  462. }
  463. else
  464. {
  465. skillRoot = new BigSkill(attributeList[i]);
  466. }
  467. }
  468. else
  469. {
  470. throw new Exception(attributeList[i].Count.ToString());
  471. }
  472. #endregion
  473. SkillDic.Add(skillRoot.ID, skillRoot);
  474. SkillList.Add(skillRoot);
  475. }
  476. SkillList.Sort(SkillRoot.Sort);
  477. #endregion
  478. for (int i = 0; i < SkillList.Count; i++)
  479. {
  480. if (SkillList[i].SkillTab != SkillTab.Null)
  481. {
  482. ManaReso.GetSkillItem(SkillList[i]);
  483. }
  484. }
  485. #endregion
  486. }
  487. public override void RegistValueB()
  488. {
  489. Instance = this;
  490. ManaReso.Get<Graphic>("F_Elf").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  491. ManaReso.Get<Graphic>("F_Store").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  492. ManaReso.Get<Graphic>("F_Magic").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  493. ManaReso.Get<Graphic>("F_ElfLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  494. ManaReso.Get<Graphic>("F_StoreLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  495. ManaReso.Get<Graphic>("F_MagicLab").material = ManaReso.Load<Material>("GrayMat", Folder.UI);
  496. ManaReso.Get<Button>("F_Elf").interactable = false;
  497. ManaReso.Get<Button>("F_Store").interactable = false;
  498. ManaReso.Get<Button>("F_Magic").interactable = false;
  499. Coin = ManaData.GetPlayerDouble("Coin");
  500. Diamond = ManaData.GetPlayerDouble("Diamond");
  501. MiniTimer = ManaData.GetPlayerFloat("MiniTimer");
  502. CircleTimer = ManaData.GetPlayerFloat("CircleTimer");
  503. if (MiniTimer > 0)
  504. {
  505. ManaReso.Get("C_MiniGame").TweenForRect();
  506. }
  507. else
  508. {
  509. MiniLock = true;
  510. }
  511. ManaServer.ID = ManaData.GetPlayerString("ID");
  512. List<string> offlineList = ManaData.GetOfflineConfig();
  513. MaxCoin = Auxiliary.LongParse(offlineList[1], 999999999999999999);
  514. MaxTime = Auxiliary.LongParse(offlineList[2], 999999999999999999);
  515. OfflineFml = offlineList[0];
  516. List<double> dataList = ManaData.GetAchieveData();
  517. AdAmt = dataList[0];
  518. ElfLevel = dataList[4];
  519. SkillAmt = dataList[1];
  520. SignAmt = dataList[2];
  521. ShareAmt = dataList[3];
  522. FlowerCoin = dataList[6];
  523. TotalPerson = dataList[7];
  524. MiniGameAmt = dataList[5];
  525. }
  526. public static void RegistSkill(bool firstRegist)
  527. {
  528. OfflineLock = false;
  529. if (ManaServer.Connect && ManaData.GetPlayerBool("QuitFlag"))
  530. {
  531. QuitTime = DateTime.Parse(ManaData.GetPlayerString("QuitTime"));
  532. Elapse = (float)ManaServer.Time.Subtract(QuitTime).TotalSeconds;
  533. MiniTimer -= Elapse;
  534. ManaDebug.Log(string.Format("离线时间<color=red>{0}</color>", Elapse));
  535. if (Elapse <= 120)
  536. {
  537. Elapse = 0;
  538. }
  539. else
  540. {
  541. OfflineLock = true;
  542. }
  543. if (Elapse > MaxTime)
  544. {
  545. Elapse = (long)MaxTime;
  546. }
  547. }
  548. TempUseList = new List<List<Skill>>();
  549. TempCoolList = new List<Skill>();
  550. if (Elapse > CircleTimer)
  551. {
  552. int circle = 1 + Mathf.FloorToInt((Elapse - CircleTimer) / CircleTime);
  553. for (int i = 0; i < circle; i++)
  554. {
  555. TempUseList.Add(new List<Skill>());
  556. }
  557. ManaDebug.Log(string.Format("离线周期<color=red>{0}</color>", circle));
  558. }
  559. List<XmlAttributeCollection> attributeList = ManaData.GetSkillList();
  560. for (int i = 0; i < attributeList.Count; i++)
  561. {
  562. SkillRoot skillRoot = SkillDic[attributeList[i][0].Value];
  563. skillRoot.RegistReference();
  564. skillRoot.RegistValue(firstRegist, Elapse, TempUseList, attributeList[i]);
  565. }
  566. }
  567. public static void RegistIncome()
  568. {
  569. double coin = 0;
  570. for (int i = 0; i < TempUseList.Count; i++)
  571. {
  572. for (int j = 0; j < TempCoolList.Count; j++)
  573. {
  574. TempCoolList[j].CoolTimer -= CircleTime;
  575. }
  576. for (int j = 0; j < TempUseList[i].Count; j++)
  577. {
  578. TempUseList[i][j].AnnulA();
  579. TempCoolList.Add(TempUseList[i][j]);
  580. }
  581. NewPerson = Person*(1 + SkillPersonBuff_) + SkillPerson;
  582. NewCoinPerson = CoinPerson + SkillCoinPerson;
  583. TotalPerson += NewPerson*CircleTime;
  584. coin += (NewPerson*NewCoinPerson*CircleTime)*(1 + SkillPlus);
  585. }
  586. CircleTimer = (Elapse - CircleTimer)%CircleTime;
  587. for (int j = 0; j < TempCoolList.Count; j++)
  588. {
  589. TempCoolList[j].CoolTimer -= CircleTime - CircleTimer;
  590. }
  591. coin = (long) Auxiliary.FmlParse(OfflineFml, "c", coin.ToString());
  592. if (coin > MaxCoin)
  593. {
  594. coin = MaxCoin;
  595. }
  596. Coin += coin;
  597. ManaReso.SetText("Ba_IconLab", Auxiliary.ShrinkNumberStr(coin));
  598. }
  599. public static void SwitchLanguage()
  600. {
  601. Coin = Coin;
  602. Diamond = Diamond;
  603. }
  604. public static void Pay(string id, double amt, Current current, UnityAction callback, bool navigate = true)
  605. {
  606. if (ManaTutorial.PayExempt)
  607. {
  608. callback.Invoke();
  609. return;
  610. }
  611. amt = Auxiliary.ShrinkNumber(amt);
  612. if (current == Current.Free)
  613. {
  614. callback.Invoke();
  615. }
  616. else if (current == Current.AD)
  617. {
  618. ManaIAP.PlayAD(callback);
  619. }
  620. else if (current == Current.Cash)
  621. {
  622. ManaIAP.Purchase(id);
  623. }
  624. else if (current == Current.Coin)
  625. {
  626. #region MyRegion
  627. if (Coin >= amt)
  628. {
  629. Coin -= amt;
  630. callback.Invoke();
  631. }
  632. else
  633. {
  634. ManaReso.Get("Fe_Info").TweenBacCG();
  635. if (navigate)
  636. {
  637. Bubble.Show
  638. (
  639. Language.GetStr("Common", "ShortCoin"),
  640. Language.GetStr("Common", "NavigateCoin"),
  641. ManaReso.LoadSprite("金币", Folder.UI),
  642. () =>
  643. {
  644. TweenRoot tween = ManaReso.Get("K_Bubble0").GetTweenScale();
  645. tween.AddEventOnetime
  646. (
  647. EventType.BackwardFinish,
  648. () =>
  649. {
  650. ManaReso.Get<Button>("F_Magic").onClick.Invoke();
  651. Auxiliary.Instance.DelayCall
  652. (
  653. () =>
  654. {
  655. int index = ManaReso.Get("Fb_Grid").childCount - 1;
  656. ManaReso.Get<ScrollRect>("Fb_Scrr").Locate(index, 0.25f, Curve.EaseOutQuad, LocatePos.Down);
  657. },
  658. 1
  659. );
  660. }
  661. );
  662. }
  663. );
  664. }
  665. else
  666. {
  667. Bubble.Show
  668. (
  669. Language.GetStr("Common", "ShortCoin"),
  670. null,
  671. ManaReso.LoadSprite("金币", Folder.UI)
  672. );
  673. }
  674. }
  675. #endregion
  676. }
  677. else if (current == Current.Diamond)
  678. {
  679. #region MyRegion
  680. if (Diamond >= amt)
  681. {
  682. Diamond -= amt;
  683. callback.Invoke();
  684. }
  685. else
  686. {
  687. ManaReso.Get("Fe_Info").TweenBacCG();
  688. if (navigate)
  689. {
  690. Bubble.Show
  691. (
  692. Language.GetStr("Common", "ShortDiamond"),
  693. Language.GetStr("Common", "NavigateDiamond"),
  694. ManaReso.LoadSprite("钻石", Folder.UI),
  695. () =>
  696. {
  697. TweenRoot tween = ManaReso.Get("K_Bubble0").GetTweenScale();
  698. tween.AddEventOnetime
  699. (
  700. EventType.BackwardFinish,
  701. () =>
  702. {
  703. ManaReso.Get<Button>("F_Store").onClick.Invoke();
  704. Auxiliary.Instance.DelayCall
  705. (
  706. () =>
  707. {
  708. int index = ManaReso.Get("Fc_Grid").childCount - 1;
  709. ManaReso.Get<ScrollRect>("Fc_Scrr").Locate(index, 0.25f, Curve.EaseOutQuad, LocatePos.Down);
  710. },
  711. 1
  712. );
  713. }
  714. );
  715. }
  716. );
  717. }
  718. else
  719. {
  720. Bubble.Show
  721. (
  722. Language.GetStr("Common", "ShortDiamond"),
  723. null,
  724. ManaReso.LoadSprite("钻石", Folder.UI)
  725. );
  726. }
  727. }
  728. #endregion
  729. }
  730. else
  731. {
  732. throw new Exception(current.ToString());
  733. }
  734. }
  735. public static void LoginCallbackInitial(JsonData jsonData)
  736. {
  737. if (!Initializer.Complete || !ManaServer.Complete || Complete)
  738. {
  739. return;
  740. }
  741. if (ManaServer.Connect)
  742. {
  743. if (ManaData.GetPlayerString("ID") == "Default")
  744. {
  745. ManaServer.ID = ManaServer.JsonData["o"].ToString();
  746. ManaReso.SetText("L_UserLab", ManaServer.ID);
  747. }
  748. }
  749. RegistSkill(true);
  750. RegistIncome();
  751. if (OfflineLock)
  752. {
  753. if (!ManaTutorial.TutorialA)
  754. {
  755. ManaReso.Get("B_SignIn").TweenForCG();
  756. ManaReso.Get("Ba_Notice").TweenForCG();
  757. }
  758. }
  759. else
  760. {
  761. if (!ManaTutorial.TutorialA && ManaData.GetPlayerBool("QuitFlag"))
  762. {
  763. int daySpan = ManaServer.Time.Day - ManaSign.SignTime.Day;
  764. int yearSpan = ManaServer.Time.Year - ManaSign.SignTime.Year;
  765. int monthSpan = ManaServer.Time.Month - ManaSign.SignTime.Month;
  766. if (daySpan >= 1 || yearSpan >= 1 || monthSpan >= 1)
  767. {
  768. ManaReso.Get("B_SignIn").TweenForCG();
  769. ManaReso.Get("Bb_SignIn").TweenForCG();
  770. }
  771. }
  772. }
  773. Analytics.SetUserId(ManaServer.ID);
  774. Complete = true;
  775. Level = Level;
  776. }
  777. public static void LoginCallbackReactive(JsonData jsonData)
  778. {
  779. LoginLock = false;
  780. for (int i = 0; i < Initializer.RegistList.Count; i++)
  781. {
  782. Initializer.RegistList[i].Reactive();
  783. }
  784. }
  785. public static void Download(string id)
  786. {
  787. ManaReso.SetText("La_Lab", "连接中");
  788. ManaReso.SetActive("La_Lab", true);
  789. ManaReso.SetActive("La_Mask", true);
  790. ManaServer.Download(id, DownloadCallback);
  791. }
  792. public static void DownloadCallback(JsonData jsonData)
  793. {
  794. if (jsonData.Inst_Object.Keys.Contains("l"))
  795. {
  796. ManaReso.Get("La_Info").TweenBacCG();
  797. ManaReso.SetText("La_Lab", Language.GetStr("UI", "La_Lab0"));
  798. //ManaReso.SetActive("La_Mask", false);
  799. int version = ManaData.GetPlayerInt("Version");
  800. ManaData.PlayerDoc.LoadXml(jsonData["l"].ToString());
  801. ManaData.PlayerNode = ManaData.PlayerDoc.SelectSingleNode("PlayerConfig");
  802. ManaData.SavePlayerInt("Version", version);
  803. ManaReso.SetText("L_UserLab", ManaData.GetPlayerString("ID"));
  804. ManaServer.ID = ManaData.GetPlayerString("ID");
  805. Bubble.Show(null, Language.GetStr("UI", "La_Lab0"), null, () => { Application.Quit(); }, null, false);
  806. SaveLock = true;
  807. DownloadLock = true;
  808. ManaData.SaveXml();
  809. //ManaMiniGame.MiniGameIndex = ManaData.GetPlayerInt("MiniGameIndex");
  810. //Garden.Reload();
  811. //ManaCenter.Reload();
  812. //ManaGarden.Reload();
  813. //ManaAchieve.Reload();
  814. //ManaPlayer.Reload();
  815. //ManaSign.Reload();
  816. }
  817. else
  818. {
  819. ManaReso.SetText("La_Lab", Language.GetStr("UI", "La_Lab1"));
  820. ManaReso.SetActive("La_Mask", false);
  821. }
  822. }
  823. public void OnApplicationQuit()
  824. {
  825. if (!SaveLock)
  826. {
  827. ManaVisit.DataReverse();
  828. ManaData.SavePlayerConfig();
  829. ManaData.SaveXml();
  830. }
  831. }
  832. public void OnApplicationPause(bool pause)
  833. {
  834. if (pause)
  835. {
  836. Background = true;
  837. if (DownloadLock)
  838. {
  839. return;
  840. }
  841. ManaVisit.DataReverse();
  842. ManaData.SavePlayerConfig();
  843. ManaData.SaveXml();
  844. }
  845. else
  846. {
  847. Background = false;
  848. if (FirstFrame)
  849. {
  850. FirstFrame = false;
  851. }
  852. else
  853. {
  854. if (!Initializer.Complete)
  855. {
  856. return;
  857. }
  858. if (DownloadLock)
  859. {
  860. return;
  861. }
  862. ManaVisit.DataRecover();
  863. if (LoginLock)
  864. {
  865. return;
  866. }
  867. if (ReactiveLock)
  868. {
  869. ReactiveLock = false;
  870. return;
  871. }
  872. LoginLock = true;
  873. ManaServer.Login(LoginCallbackReactive);
  874. }
  875. }
  876. }
  877. }
  878. #region DebugList
  879. //离线期间的收入
  880. //{
  881. // 技能等级大于1时
  882. // 有单个临时加成时
  883. // 有单个永久加成时
  884. // 有多个临时加成时
  885. // 有多个永久加成时
  886. //}
  887. //离线期间的使用时间
  888. //离线期间的冷却时间
  889. //离线期间从使用变为冷却
  890. //技能的存档
  891. //技能的效果
  892. //技能的Reactive
  893. //技能升级后的效果
  894. //技能结束后的效果
  895. //Reload之后的技能
  896. #endregion