ManaMiniGame.cs 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.Serialization;
  4. using System;
  5. using System.Xml;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. using Random = UnityEngine.Random;
  9. public class Award
  10. {
  11. #region 变量
  12. public static int BonusCoin;
  13. public static int BonusDiamond;
  14. public int DiamondMin;
  15. public int DiamondMax;
  16. public string CoinFml;
  17. public string FlowerFml;
  18. public string DiamondFml;
  19. public List<float> Odds;
  20. public List<float> Standard;
  21. #endregion
  22. public Award(XmlAttributeCollection attribute)
  23. {
  24. CoinFml = attribute[1].Value;
  25. FlowerFml = attribute[4].Value;
  26. DiamondFml = attribute[3].Value;
  27. string[] strings = attribute[2].Value.Split(',');
  28. DiamondMin = int.Parse(strings[0]);
  29. DiamondMax = int.Parse(strings[1]);
  30. strings = attribute[5].Value.Split(',');
  31. Odds = new List<float>()
  32. {
  33. float.Parse(strings[0]),
  34. float.Parse(strings[1]),
  35. float.Parse(strings[2]),
  36. };
  37. strings = attribute[6].Value.Split(',');
  38. Standard = new List<float>()
  39. {
  40. float.Parse(strings[0]),
  41. float.Parse(strings[1]),
  42. float.Parse(strings[2]),
  43. };
  44. }
  45. public void GetAward(int score)
  46. {
  47. if (Initializer.Tutorial)
  48. {
  49. TutorialAward(score);
  50. }
  51. else
  52. {
  53. RegularAward(score);
  54. }
  55. }
  56. private void TutorialAward(int score)
  57. {
  58. ManaReso.Get("Da_Info").TweenForCG();
  59. ManaReso.SetActive("Da_Lab", false);
  60. ManaReso.SetActive("Da_Quit", false);
  61. ManaReso.SetActive("Da_Cancel", false);
  62. ManaReso.SetActive("Da_VGroup", false);
  63. ManaReso.SetActive("Da_HGroup", false);
  64. ManaReso.SetActive("Da_ScoreTit", false);
  65. ManaReso.SetActive("Da_GetAward", false);
  66. ManaReso.SetActive("Da_FlowerGroup", false);
  67. ManaReso.SetActive("Da_DiamondGroup", false);
  68. bool diamondFlag = false;
  69. int coin = (int)Auxiliary.FmlParse(CoinFml, "s", score.ToString());
  70. coin = Mathf.FloorToInt(coin * (1 + ManaData.SkillPlus)) + BonusCoin;
  71. ManaData.Coin += coin;
  72. int diamond = 0;
  73. float diamondRate = (float)Auxiliary.FmlParse(DiamondFml, "l", Mathf.Clamp(ManaData.Level, 1, 1000).ToString());
  74. if (Random.Range(0, 1f) <= diamondRate)
  75. {
  76. diamondFlag = true;
  77. ManaReso.SetActive("Da_Diamond", true);
  78. diamond = Mathf.FloorToInt(Mathf.Lerp(DiamondMin, DiamondMax, Random.Range(0, 1f)) + BonusDiamond);
  79. ManaData.Diamond += diamond;
  80. }
  81. else
  82. {
  83. if (BonusDiamond > 0)
  84. {
  85. diamondFlag = true;
  86. ManaReso.SetActive("Da_Diamond", true);
  87. ManaData.Diamond += BonusDiamond;
  88. }
  89. }
  90. int standard;
  91. if (score < Standard[1])
  92. {
  93. standard = 0;
  94. }
  95. else if (score < Standard[2])
  96. {
  97. standard = 1;
  98. }
  99. else
  100. {
  101. standard = 2;
  102. }
  103. FlowerInfo flowerInfo = ManaGarden.FlowerInfoList[0];
  104. Vector2 newSize = flowerInfo.Sprite.rect.size;
  105. newSize.x *= 0.2f;
  106. newSize.y *= 0.2f;
  107. ManaReso.Get<Image>("Da_FlowerIcon").sprite = flowerInfo.Sprite;
  108. ManaReso.Get<Image>("Da_FlowerIcon").rectTransform.sizeDelta = newSize;
  109. ManaReso.SetText("Da_FlowerLab", Language.GetStr("FlowerName", "Flower" + flowerInfo.ID));
  110. BonusCoin = 0;
  111. BonusDiamond = 0;
  112. ManaReso.SetActive("Da_VGroup", true);
  113. ManaReso.SetActive("Da_CoinGroup", true);
  114. if (diamondFlag)
  115. {
  116. ManaReso.SetActive("Da_DiamondGroup", true);
  117. }
  118. ManaReso.SetActive("Da_FlowerGroup", true);
  119. Auxiliary.Instance.DelayCall
  120. (
  121. () =>
  122. {
  123. ManaReso.SetActive("Da_FlowerGroup", false);
  124. ManaReso.SetActive("Da_DiamondGroup", false);
  125. ManaReso.Get("Da_VGroup").GetComponent<VerticalLayoutGroup>().enabled = false;
  126. },
  127. 1
  128. );
  129. Tween tween = ManaReso.Get("Da_Info").GetTweenCG();
  130. tween.OnForwardFinish = () =>
  131. {
  132. ManaReso.SetActive("Da_HGroup", true);
  133. ManaReso.Get("Da_Star1").TweenForScale();
  134. };
  135. ManaReso.SetText("Da_CoinLab", "");
  136. ManaReso.SetText("Da_ScoreLab", "");
  137. ManaReso.SetText("Da_DiamondLab", "");
  138. ManaReso.Get("Da_CoinLab").CreateTweenNumber(0, coin, 1.5f, true, true, Curve.EaseOutQuad);
  139. ManaReso.Get("Da_ScoreLab").CreateTweenNumber(0, score, 1.5f, true, true, Curve.EaseOutQuad);
  140. ManaReso.Get("Da_DiamondLab").CreateTweenNumber(0, diamond, 1.5f, true, true, Curve.EaseOutQuad);
  141. tween = ManaReso.Get("Da_ScoreTit").GetTweenText();
  142. tween.InOrigin = true;
  143. tween = ManaReso.Get("Da_Star3").GetTweenScale();
  144. tween.InOrigin = true;
  145. tween.OnForwardFinish = null;
  146. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  147. tween.InOrigin = true;
  148. tween.OnForwardFinish = null;
  149. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  150. tween.InOrigin = true;
  151. tween.OnForwardFinish = null;
  152. if (standard == 0)
  153. {
  154. ManaReso.SetActive("Da_Star2", false);
  155. ManaReso.SetActive("Da_Star3", false);
  156. }
  157. else if (standard == 1)
  158. {
  159. ManaReso.SetActive("Da_Star2", true);
  160. ManaReso.SetActive("Da_Star3", false);
  161. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  162. tween.OnForwardFinish += () =>
  163. {
  164. ManaReso.Get("Da_Star2").TweenForScale();
  165. };
  166. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  167. }
  168. else if (standard == 2)
  169. {
  170. ManaReso.SetActive("Da_Star2", true);
  171. ManaReso.SetActive("Da_Star3", true);
  172. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  173. tween.OnForwardFinish += () =>
  174. {
  175. ManaReso.Get("Da_Star2").TweenForScale();
  176. };
  177. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  178. tween.OnForwardFinish += () =>
  179. {
  180. ManaReso.Get("Da_Star3").TweenForScale();
  181. };
  182. tween = ManaReso.Get("Da_Star3").GetTweenScale();
  183. }
  184. tween.OnForwardFinish = () =>
  185. {
  186. ManaReso.Get("Da_ScoreTit").TweenForText();
  187. };
  188. tween = ManaReso.Get("Da_ScoreTit").GetTweenText();
  189. tween.OnForwardFinish = () =>
  190. {
  191. ManaReso.Get("Da_ScoreLab").TweenForNumber();
  192. };
  193. tween = ManaReso.Get("Da_ScoreLab").GetTweenNumber();
  194. tween.OnForwardFinish = () =>
  195. {
  196. ManaReso.Get<CanvasGroup>("Da_VGroup").alpha = 1;
  197. ManaReso.SetActive("Da_VGroup", true);
  198. ManaReso.Get("Da_CoinGroup").TweenForScale();
  199. if (diamondFlag)
  200. {
  201. ManaReso.Get("Da_DiamondGroup").TweenForScale();
  202. }
  203. };
  204. tween = ManaReso.Get("Da_CoinGroup").GetTweenScale();
  205. tween.OnForwardFinish = () =>
  206. {
  207. ManaReso.Get("Da_CoinLab").TweenForNumber();
  208. };
  209. tween = ManaReso.Get("Da_CoinLab").GetTweenNumber();
  210. if (diamondFlag)
  211. {
  212. tween = ManaReso.Get("Da_DiamondGroup").GetTweenScale();
  213. tween.OnForwardFinish = () =>
  214. {
  215. ManaReso.Get("Da_DiamondLab").TweenForNumber();
  216. };
  217. tween = ManaReso.Get("Da_DiamondLab").GetTweenNumber();
  218. }
  219. else
  220. {
  221. ManaReso.Get("Da_DiamondGroup").GetTweenScale().OnForwardFinish = () =>
  222. {
  223. };
  224. }
  225. tween = ManaReso.Get("Da_CoinLab").GetTweenNumber();
  226. tween.OnForwardFinish = () =>
  227. {
  228. ManaReso.SetActive("Da_FlowerGroup", true);
  229. ManaReso.Get("Da_FlowerGroup").TweenForScale();
  230. };
  231. tween = ManaReso.Get("Da_FlowerGroup").GetTweenScale();
  232. tween.OnForwardFinish = () =>
  233. {
  234. ManaReso.Get("Da_GetAward").TweenForCG();
  235. };
  236. }
  237. private void RegularAward(int score)
  238. {
  239. ManaReso.Get("Da_Info").TweenForCG();
  240. ManaReso.SetActive("Da_Lab", false);
  241. ManaReso.SetActive("Da_Quit", false);
  242. ManaReso.SetActive("Da_Cancel", false);
  243. ManaReso.SetActive("Da_VGroup", false);
  244. ManaReso.SetActive("Da_HGroup", false);
  245. ManaReso.SetActive("Da_ScoreTit", false);
  246. ManaReso.SetActive("Da_GetAward", false);
  247. ManaReso.SetActive("Da_FlowerGroup", false);
  248. ManaReso.SetActive("Da_DiamondGroup", false);
  249. bool flowerFlag = false;
  250. bool diamondFlag = false;
  251. int coin = (int)Auxiliary.FmlParse(CoinFml, "s", score.ToString());
  252. coin = (int)(coin * (1 + ManaData.SkillPlus)) + BonusCoin;
  253. ManaData.Coin += coin;
  254. int diamond = 0;
  255. float diamondRate = (float)Auxiliary.FmlParse(DiamondFml, "l", Mathf.Clamp(ManaData.Level, 1, 1000).ToString());
  256. if (Random.Range(0, 1f) <= diamondRate)
  257. {
  258. diamondFlag = true;
  259. ManaReso.SetActive("Da_Diamond", true);
  260. diamond = (int)Mathf.Lerp(DiamondMin, DiamondMax, Random.Range(0, 1f)) + BonusDiamond;
  261. ManaData.Diamond += diamond;
  262. }
  263. else
  264. {
  265. if (BonusDiamond > 0)
  266. {
  267. diamondFlag = true;
  268. ManaReso.SetActive("Da_Diamond", true);
  269. ManaData.Diamond += BonusDiamond;
  270. }
  271. }
  272. int standard;
  273. if (score < Standard[1])
  274. {
  275. standard = 0;
  276. }
  277. else if (score < Standard[2])
  278. {
  279. standard = 1;
  280. }
  281. else
  282. {
  283. standard = 2;
  284. }
  285. float flowerRate = (float)Auxiliary.FmlParse(DiamondFml, "l", ManaData.Level.ToString(), "f", ManaGarden.MyFlower.ToString());
  286. if (Random.Range(0, 1f) <= flowerRate)
  287. {
  288. if (Random.Range(0, 1f) <= Odds[standard])
  289. {
  290. int Anti = 0;
  291. FlowerInfo flowerInfo;
  292. while (true)
  293. {
  294. Anti++;
  295. if (Anti > 1000)
  296. {
  297. throw new Exception();
  298. }
  299. flowerInfo = ManaGarden.FlowerInfoList.Random();
  300. if (flowerInfo.Unlock)
  301. {
  302. flowerFlag = true;
  303. Vector2 newSize = flowerInfo.Sprite.rect.size;
  304. newSize.x *= 0.2f;
  305. newSize.y *= 0.2f;
  306. ManaReso.Get<Image>("Da_FlowerIcon").sprite = flowerInfo.Sprite;
  307. ManaReso.Get<Image>("Da_FlowerIcon").rectTransform.sizeDelta = newSize;
  308. ManaReso.SetText("Da_FlowerLab", Language.GetStr("FlowerName", "Flower" + flowerInfo.ID));
  309. break;
  310. }
  311. }
  312. }
  313. }
  314. BonusCoin = 0;
  315. BonusDiamond = 0;
  316. ManaReso.SetActive("Da_VGroup", true);
  317. ManaReso.SetActive("Da_CoinGroup", true);
  318. if (diamondFlag)
  319. {
  320. ManaReso.SetActive("Da_DiamondGroup", true);
  321. }
  322. if (flowerFlag)
  323. {
  324. ManaReso.SetActive("Da_FlowerGroup", true);
  325. }
  326. Auxiliary.Instance.DelayCall
  327. (
  328. () =>
  329. {
  330. ManaReso.SetActive("Da_FlowerGroup", false);
  331. ManaReso.SetActive("Da_DiamondGroup", false);
  332. ManaReso.Get("Da_VGroup").GetComponent<VerticalLayoutGroup>().enabled = false;
  333. },
  334. 1
  335. );
  336. Tween tween = ManaReso.Get("Da_Info").GetTweenCG();
  337. tween.OnForwardFinish = () =>
  338. {
  339. ManaReso.SetActive("Da_HGroup", true);
  340. ManaReso.Get("Da_Star1").TweenForScale();
  341. };
  342. ManaReso.SetText("Da_CoinLab", "");
  343. ManaReso.SetText("Da_ScoreLab", "");
  344. ManaReso.SetText("Da_DiamondLab", "");
  345. ManaReso.Get("Da_CoinLab").CreateTweenNumber(0, coin, 1.5f, true, true, Curve.EaseOutQuad);
  346. ManaReso.Get("Da_ScoreLab").CreateTweenNumber(0, score, 1.5f, true, true, Curve.EaseOutQuad);
  347. ManaReso.Get("Da_DiamondLab").CreateTweenNumber(0, diamond, 1.5f, true, true, Curve.EaseOutQuad);
  348. tween = ManaReso.Get("Da_ScoreTit").GetTweenText();
  349. tween.InOrigin = true;
  350. tween = ManaReso.Get("Da_Star3").GetTweenScale();
  351. tween.InOrigin = true;
  352. tween.OnForwardFinish = null;
  353. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  354. tween.InOrigin = true;
  355. tween.OnForwardFinish = null;
  356. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  357. tween.InOrigin = true;
  358. tween.OnForwardFinish = null;
  359. if (standard == 0)
  360. {
  361. ManaReso.SetActive("Da_Star2", false);
  362. ManaReso.SetActive("Da_Star3", false);
  363. }
  364. else if (standard == 1)
  365. {
  366. ManaReso.SetActive("Da_Star2", true);
  367. ManaReso.SetActive("Da_Star3", false);
  368. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  369. tween.OnForwardFinish += () =>
  370. {
  371. ManaReso.Get("Da_Star2").TweenForScale();
  372. };
  373. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  374. }
  375. else if (standard == 2)
  376. {
  377. ManaReso.SetActive("Da_Star2", true);
  378. ManaReso.SetActive("Da_Star3", true);
  379. tween = ManaReso.Get("Da_Star1").GetTweenScale();
  380. tween.OnForwardFinish += () =>
  381. {
  382. ManaReso.Get("Da_Star2").TweenForScale();
  383. };
  384. tween = ManaReso.Get("Da_Star2").GetTweenScale();
  385. tween.OnForwardFinish += () =>
  386. {
  387. ManaReso.Get("Da_Star3").TweenForScale();
  388. };
  389. tween = ManaReso.Get("Da_Star3").GetTweenScale();
  390. }
  391. tween.OnForwardFinish = () =>
  392. {
  393. ManaReso.Get("Da_ScoreTit").TweenForText();
  394. };
  395. tween = ManaReso.Get("Da_ScoreTit").GetTweenText();
  396. tween.OnForwardFinish = () =>
  397. {
  398. ManaReso.Get("Da_ScoreLab").TweenForNumber();
  399. };
  400. tween = ManaReso.Get("Da_ScoreLab").GetTweenNumber();
  401. tween.OnForwardFinish = () =>
  402. {
  403. ManaReso.Get<CanvasGroup>("Da_VGroup").alpha = 1;
  404. ManaReso.SetActive("Da_VGroup", true);
  405. ManaReso.Get("Da_CoinGroup").TweenForScale();
  406. if (diamondFlag)
  407. {
  408. ManaReso.Get("Da_DiamondGroup").TweenForScale();
  409. }
  410. };
  411. tween = ManaReso.Get("Da_CoinGroup").GetTweenScale();
  412. tween.OnForwardFinish = () =>
  413. {
  414. ManaReso.Get("Da_CoinLab").TweenForNumber();
  415. };
  416. tween = ManaReso.Get("Da_CoinLab").GetTweenNumber();
  417. if (diamondFlag)
  418. {
  419. tween = ManaReso.Get("Da_DiamondGroup").GetTweenScale();
  420. tween.OnForwardFinish = () =>
  421. {
  422. ManaReso.Get("Da_DiamondLab").TweenForNumber();
  423. };
  424. tween = ManaReso.Get("Da_DiamondLab").GetTweenNumber();
  425. }
  426. else
  427. {
  428. ManaReso.Get("Da_DiamondGroup").GetTweenScale().OnForwardFinish = () =>
  429. {
  430. };
  431. }
  432. if (flowerFlag)
  433. {
  434. tween = ManaReso.Get("Da_CoinLab").GetTweenNumber();
  435. tween.OnForwardFinish = () =>
  436. {
  437. ManaReso.SetActive("Da_FlowerGroup", true);
  438. ManaReso.Get("Da_FlowerGroup").TweenForScale();
  439. };
  440. tween = ManaReso.Get("Da_FlowerGroup").GetTweenScale();
  441. }
  442. else
  443. {
  444. ManaReso.Get("Da_CoinLab").GetTweenNumber().OnForwardFinish = () =>
  445. {
  446. };
  447. }
  448. tween.OnForwardFinish = () =>
  449. {
  450. ManaReso.Get("Da_GetAward").TweenForCG();
  451. };
  452. }
  453. }
  454. public class ManaMiniGame : Regist
  455. {
  456. #region 变量
  457. public static int Score
  458. {
  459. get { return _Score; }
  460. set
  461. {
  462. _Score = value;
  463. ManaReso.SetText("D_ScoreLab", _Score.ToString());
  464. }
  465. }
  466. public static bool Game
  467. {
  468. get { return _Game; }
  469. set
  470. {
  471. _Game = value;
  472. if (_Game)
  473. {
  474. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab1"));
  475. }
  476. else
  477. {
  478. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab0"));
  479. }
  480. }
  481. }
  482. public static bool Pause
  483. {
  484. get { return _Pause; }
  485. set
  486. {
  487. _Pause = value;
  488. if (Game)
  489. {
  490. if (_Pause)
  491. {
  492. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab2"));
  493. }
  494. else
  495. {
  496. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab1"));
  497. }
  498. }
  499. }
  500. }
  501. public static bool Panalty
  502. {
  503. get { return _Panalty; }
  504. set
  505. {
  506. _Panalty = value;
  507. if (_Panalty)
  508. {
  509. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab3"));
  510. }
  511. else
  512. {
  513. ManaReso.SetText("D_StatusLab", Language.GetStr("UI", "D_StatusLab1"));
  514. }
  515. }
  516. }
  517. public static bool Prepare
  518. {
  519. get { return _Prepare; }
  520. set
  521. {
  522. _Prepare = value;
  523. if (Prepare)
  524. {
  525. PrepareTimer = 3;
  526. ManaReso.Get("D_Rip1").SetActive(true);
  527. ManaReso.Get("D_Water1").SetActive(true);
  528. ManaReso.Get("D_Fertilize1").SetActive(true);
  529. ManaReso.Get("D_Begin").SetActive(false);
  530. PrepareLab.SetActive(true);
  531. }
  532. }
  533. }
  534. public static float GameTimer
  535. {
  536. get { return _GameTimer; }
  537. set
  538. {
  539. _GameTimer = value;
  540. TimerIcon.fillAmount = _GameTimer / GameTime;
  541. TimerLab.text = _GameTimer.ToString("0.0");
  542. }
  543. }
  544. public static float PrepareTimer
  545. {
  546. get { return _PrepareTimer; }
  547. set
  548. {
  549. _PrepareTimer = value;
  550. PrepareLab.text = Mathf.CeilToInt(_PrepareTimer).ToString();
  551. }
  552. }
  553. private static int _Score;
  554. private static bool _Game;
  555. private static bool _Pause;
  556. private static bool _Panalty;
  557. private static bool _Prepare;
  558. private static float _GameTimer;
  559. private static float _PrepareTimer;
  560. public static int MiniGameIndex;
  561. public static bool TutorialValid = true;
  562. public static bool DropDiamond;
  563. public static List<DropGold> GoldList;
  564. public static List<DropDiamond> DiamondList;
  565. public static Text BtnLab;
  566. public static Text TimerLab;
  567. public static Text PrepareLab;
  568. public static Image TimerIcon;
  569. public static Award Award;
  570. public static List<Flower> OpList;
  571. public static List<Flower> IdleList;
  572. private static float OpTime;
  573. private static float OpTimer;
  574. private static float GoldTimer;
  575. private static float GameTime;
  576. private static float PanaltyTime;
  577. private static float PanaltyTimer;
  578. private static float DIamondTimer;
  579. #endregion
  580. private void FixedUpdate()
  581. {
  582. if (Initializer.Tutorial)
  583. {
  584. TutorialFixedUpdate();
  585. }
  586. else
  587. {
  588. RegularFixedUpdate();
  589. }
  590. }
  591. private void TutorialFixedUpdate()
  592. {
  593. if (Pause)
  594. {
  595. return;
  596. }
  597. if (Prepare)
  598. {
  599. PrepareTimer -= Time.fixedDeltaTime;
  600. if (PrepareTimer <= 0)
  601. {
  602. GameBegin();
  603. PrepareLab.text = Language.GetStr("UI", "D_PrepareLab");
  604. PrepareLab.TweenForGra();
  605. PrepareLab.TweenForText();
  606. }
  607. }
  608. if (Game == false)
  609. {
  610. return;
  611. }
  612. GoldTimer -= Time.fixedDeltaTime;
  613. if (GoldTimer < 0)
  614. {
  615. GoldTimer = Random.Range(3f, 6f);
  616. GoldList.Add(ManaReso.GetGold());
  617. }
  618. if (DropDiamond)
  619. {
  620. DIamondTimer -= Time.fixedDeltaTime;
  621. if (DIamondTimer < 0)
  622. {
  623. DropDiamond = false;
  624. DiamondList.Add(ManaReso.GetDiamond());
  625. }
  626. }
  627. GameTimer -= Time.fixedDeltaTime;
  628. if (GameTimer <= 0)
  629. {
  630. GameOver();
  631. return;
  632. }
  633. if (Panalty)
  634. {
  635. PanaltyTimer -= Time.fixedDeltaTime;
  636. if (PanaltyTimer <= 0)
  637. {
  638. Panalty = false;
  639. }
  640. }
  641. if (IdleList.Count > 0)
  642. {
  643. OpTimer -= Time.fixedDeltaTime;
  644. if (OpTimer <= 0)
  645. {
  646. OpTime -= OpTime * 0.03f;
  647. OpTimer = OpTime;
  648. Flower flower = IdleList[Random.Range(0, IdleList.Count)];
  649. flower.CreateOp(OpList.Count);
  650. OpList.Add(flower);
  651. IdleList.Remove(flower);
  652. if (TutorialValid)
  653. {
  654. Pause = true;
  655. TutorialValid = false;
  656. if (OpList[0].OpType == OpType.Rip)
  657. {
  658. Tutorial.HightScreen(ManaReso.Get("D_RipArrow0"), ManaReso.Get("D_RipArrow1"), ManaReso.Get("D_Rip1"));
  659. ManaReso.AddButtonEvent
  660. (
  661. "D_Rip2",
  662. () =>
  663. {
  664. Pause = false;
  665. Tutorial.HightDisable();
  666. }
  667. );
  668. }
  669. else if (OpList[0].OpType == OpType.Water)
  670. {
  671. Tutorial.HightScreen(ManaReso.Get("D_WaterArrow0"), ManaReso.Get("D_WaterArrow1"), ManaReso.Get("D_Water1"));
  672. ManaReso.AddButtonEvent
  673. (
  674. "D_Water2",
  675. () =>
  676. {
  677. Pause = false;
  678. Tutorial.HightDisable();
  679. }
  680. );
  681. }
  682. else if (OpList[0].OpType == OpType.Fertilize)
  683. {
  684. Tutorial.HightScreen(ManaReso.Get("D_FertilizeArrow0"), ManaReso.Get("D_Fertilize2"), ManaReso.Get("D_Fertilize1"));
  685. ManaReso.AddButtonEvent
  686. (
  687. "D_Fertilize2",
  688. () =>
  689. {
  690. Pause = false;
  691. Tutorial.HightDisable();
  692. }
  693. );
  694. }
  695. SceneMask.SetArea(OpList[0].OperateIcon.transform, 0.1f, 0.125f);
  696. }
  697. }
  698. }
  699. }
  700. private void RegularFixedUpdate()
  701. {
  702. if (Pause)
  703. {
  704. return;
  705. }
  706. if (Prepare)
  707. {
  708. PrepareTimer -= Time.fixedDeltaTime;
  709. if (PrepareTimer <= 0)
  710. {
  711. GameBegin();
  712. PrepareLab.text = Language.GetStr("UI", "D_PrepareLab");
  713. PrepareLab.TweenForGra();
  714. PrepareLab.TweenForText();
  715. }
  716. }
  717. if (Game == false)
  718. {
  719. return;
  720. }
  721. GoldTimer -= Time.fixedDeltaTime;
  722. if (GoldTimer < 0)
  723. {
  724. GoldTimer = Random.Range(3f, 6f);
  725. GoldList.Add(ManaReso.GetGold());
  726. }
  727. if (DropDiamond)
  728. {
  729. DIamondTimer -= Time.fixedDeltaTime;
  730. if (DIamondTimer < 0)
  731. {
  732. DropDiamond = false;
  733. DiamondList.Add(ManaReso.GetDiamond());
  734. }
  735. }
  736. GameTimer -= Time.fixedDeltaTime;
  737. if (GameTimer <= 0)
  738. {
  739. GameOver();
  740. return;
  741. }
  742. if (Panalty)
  743. {
  744. PanaltyTimer -= Time.fixedDeltaTime;
  745. if (PanaltyTimer <= 0)
  746. {
  747. Panalty = false;
  748. }
  749. }
  750. if (IdleList.Count > 0)
  751. {
  752. OpTimer -= Time.fixedDeltaTime;
  753. if (OpTimer <= 0)
  754. {
  755. OpTime -= OpTime * 0.03f;
  756. OpTimer = OpTime;
  757. Flower flower = IdleList[Random.Range(0, IdleList.Count)];
  758. flower.CreateOp(OpList.Count);
  759. OpList.Add(flower);
  760. IdleList.Remove(flower);
  761. }
  762. }
  763. }
  764. public override void RegistValueA()
  765. {
  766. OpTime = 1.5f;
  767. GameTime = 5;
  768. PanaltyTime = 1;
  769. OpTimer = OpTime;
  770. GameTimer = GameTime;
  771. MiniGameIndex = Data.PlayerInt("MiniGameIndex");
  772. Award = new Award(Data.GetAwardConfig());
  773. PrepareLab.color = ManaColor.Orange;
  774. PrepareLab.CreateTweenGra(1, 0, 0.25f, true, false, Curve.EaseOutQuad);
  775. Tween tween = PrepareLab.CreateTweenText(90, 100, 0.25f, true, false, Curve.EaseOutQuad);
  776. tween.OnForwardFinish += () =>
  777. {
  778. PrepareLab.SetAlpha(1);
  779. PrepareLab.fontSize = 90;
  780. };
  781. }
  782. public override void TutorialRegistValue()
  783. {
  784. RegistValueA();
  785. }
  786. public override void RegistReference()
  787. {
  788. TimerIcon = ManaReso.Get<Image>("D_TimerIcon");
  789. BtnLab = ManaReso.Get<Text>("D_BeginLab");
  790. TimerLab = ManaReso.Get<Text>("D_TimerLab");
  791. PrepareLab = ManaReso.Get<Text>("D_PrepareLab");
  792. }
  793. public override void TutorialRegistReference()
  794. {
  795. RegistReference();
  796. }
  797. #region MiniGame
  798. public static void Rip()
  799. {
  800. if (Panalty)
  801. {
  802. return;
  803. }
  804. if (OpList.Count == 0)
  805. {
  806. return;
  807. }
  808. if (OpList[0].Operate(OpType.Rip))
  809. {
  810. IdleList.Add(OpList[0]);
  811. OpList.Remove(OpList[0]);
  812. ResetOperate();
  813. }
  814. else
  815. {
  816. Panalty = true;
  817. PanaltyTimer = PanaltyTime;
  818. }
  819. }
  820. public static void Water()
  821. {
  822. if (Panalty)
  823. {
  824. return;
  825. }
  826. if (OpList.Count == 0)
  827. {
  828. return;
  829. }
  830. if (OpList[0].Operate(OpType.Water))
  831. {
  832. IdleList.Add(OpList[0]);
  833. OpList.Remove(OpList[0]);
  834. ResetOperate();
  835. }
  836. else
  837. {
  838. Panalty = true;
  839. PanaltyTimer = PanaltyTime;
  840. }
  841. }
  842. public static void Fertilize()
  843. {
  844. if (Panalty)
  845. {
  846. return;
  847. }
  848. if (OpList.Count == 0)
  849. {
  850. return;
  851. }
  852. if (OpList[0].Operate(OpType.Fertilize))
  853. {
  854. IdleList.Add(OpList[0]);
  855. OpList.Remove(OpList[0]);
  856. ResetOperate();
  857. }
  858. else
  859. {
  860. Panalty = true;
  861. PanaltyTimer = PanaltyTime;
  862. }
  863. }
  864. public static void GameOver()
  865. {
  866. ManaData.MiniGame++;
  867. Award.GetAward(Score);
  868. GameAbort();
  869. }
  870. public static void GameBegin()
  871. {
  872. MiniGameIndex++;
  873. GoldTimer = Random.Range(3f, 6f);
  874. DIamondTimer = Random.Range(0f, 40f);
  875. ManaDebug.Log(string.Format("第<color=red>{0}</color>次小游戏", MiniGameIndex));
  876. if (Random.Range(5, 9) <= MiniGameIndex)
  877. {
  878. MiniGameIndex = 0;
  879. DropDiamond = true;
  880. }
  881. else
  882. {
  883. if (Random.Range(0, 1f) <= 0.01f)
  884. {
  885. DropDiamond = true;
  886. }
  887. else
  888. {
  889. DropDiamond = false;
  890. }
  891. }
  892. Score = 0;
  893. Game = true;
  894. Pause = false;
  895. Panalty = false;
  896. Prepare = false;
  897. OpTimer = OpTime;
  898. GameTimer = GameTime;
  899. PanaltyTimer = 0;
  900. for (int i = 0; i < IdleList.Count; i++)
  901. {
  902. IdleList[i].GameBegin();
  903. }
  904. }
  905. public static void GameAbort()
  906. {
  907. PrepareLab.SetActive(false);
  908. ManaGarden.AwardLock = false;
  909. for (int i = 0; i < GoldList.Count; i++)
  910. {
  911. GoldList[i].Retrieve();
  912. }
  913. for (int i = 0; i < DiamondList.Count; i++)
  914. {
  915. DiamondList[i].Retrieve();
  916. }
  917. if (Game)
  918. {
  919. ManaData.Mini = false;
  920. ManaData.MiniTimer = Mathf.Lerp(180, 300, Random.Range(0, 1f));
  921. ManaReso.Get("C_MiniGame").TweenBacCG();
  922. ManaDebug.Log(string.Format("<color=red>{0:0}</color>秒后激活小游戏", ManaData.MiniTimer));
  923. }
  924. ManaReso.SetActive("D_Rip1", false);
  925. ManaReso.SetActive("D_Water1", false);
  926. ManaReso.SetActive("D_Fertilize1", false);
  927. ManaReso.SetActive("D_Begin", true);
  928. ManaReso.SetText("Da_Tit", string.Format(Language.GetStr("UI", "Da_Tit1")));
  929. Score = 0;
  930. Game = false;
  931. Pause = false;
  932. Panalty = false;
  933. Prepare = false;
  934. OpTimer = OpTime;
  935. GameTimer = GameTime;
  936. PanaltyTimer = 0;
  937. for (int i = 0; i < IdleList.Count; i++)
  938. {
  939. IdleList[i].GameOver();
  940. }
  941. for (int i = 0; i < OpList.Count; i++)
  942. {
  943. OpList[i].GameOver();
  944. }
  945. }
  946. public static void GamePrepare()
  947. {
  948. if (Initializer.Tutorial)
  949. {
  950. TutorialPrepare();
  951. }
  952. else
  953. {
  954. RegularPrepare();
  955. }
  956. }
  957. public static void ResetOperate()
  958. {
  959. if (OpList.Count >= 2)
  960. {
  961. OpList[0].SetFirstOp();
  962. OpList[1].SetSecondOp();
  963. }
  964. else if (OpList.Count >= 1)
  965. {
  966. OpList[0].SetFirstOp();
  967. }
  968. }
  969. private static void TutorialPrepare()
  970. {
  971. GoldList = new List<DropGold>();
  972. DiamondList = new List<DropDiamond>();
  973. ManaReso.SetText("Da_CoinLab", "");
  974. ManaReso.SetText("Da_FlowerLab", "");
  975. ManaReso.SetText("Da_DiamondLab", "");
  976. ManaReso.SetActive("Da_Coin", true);
  977. ManaReso.SetActive("Da_Flower", true);
  978. ManaReso.SetActive("Da_Diamond", true);
  979. ManaGarden.AwardLock = true;
  980. OpList = new List<Flower>();
  981. IdleList = new List<Flower>();
  982. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini1")));
  983. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini2")));
  984. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini3")));
  985. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini4")));
  986. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini5")));
  987. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini6")));
  988. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini7")));
  989. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini8")));
  990. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini9")));
  991. }
  992. private static void RegularPrepare()
  993. {
  994. GoldList = new List<DropGold>();
  995. DiamondList = new List<DropDiamond>();
  996. ManaReso.SetText("Da_CoinLab", "");
  997. ManaReso.SetText("Da_FlowerLab", "");
  998. ManaReso.SetText("Da_DiamondLab", "");
  999. ManaReso.SetActive("Da_Coin", true);
  1000. ManaReso.SetActive("Da_Flower", true);
  1001. ManaReso.SetActive("Da_Diamond", true);
  1002. ManaGarden.AwardLock = true;
  1003. OpList = new List<Flower>();
  1004. IdleList = new List<Flower>();
  1005. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[0], ManaReso.Get("SlotMini1")));
  1006. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[1], ManaReso.Get("SlotMini2")));
  1007. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[2], ManaReso.Get("SlotMini3")));
  1008. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[3], ManaReso.Get("SlotMini4")));
  1009. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[4], ManaReso.Get("SlotMini5")));
  1010. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[5], ManaReso.Get("SlotMini6")));
  1011. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[6], ManaReso.Get("SlotMini7")));
  1012. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[7], ManaReso.Get("SlotMini8")));
  1013. IdleList.Add(ManaReso.GetFlower(ManaGarden.FlowerInfoList[8], ManaReso.Get("SlotMini9")));
  1014. }
  1015. #endregion
  1016. }