Garden.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.EventSystems;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. public enum Direction
  7. {
  8. Left,
  9. Null,
  10. Right,
  11. }
  12. public class Garden : Regist, IDragHandler, IPointerClickHandler, IEndDragHandler, IBeginDragHandler
  13. {
  14. #region 变量
  15. public static int ValidPage;
  16. private static int Page;
  17. private static bool Flag1;
  18. private static bool Flag2;
  19. private static float RatioBk2;
  20. private static float RatioBk3;
  21. private static float RatioBk4;
  22. private static float RatioPlayer;
  23. private static float SlideSpeed;
  24. private static Direction Direction;
  25. private static Transform Player;
  26. private static Transform GardenA;
  27. private static Transform GardenBk2;
  28. private static Transform GardenBk3;
  29. private static Transform GardenBk4;
  30. private static List<Vector3> PlayerPos;
  31. private static List<Vector3> GardenPosA;
  32. private static List<Vector3> GardenPosBk2;
  33. private static List<Vector3> GardenPosBk3;
  34. private static List<Vector3> GardenPosBk4;
  35. #endregion
  36. public override void RegistValueA()
  37. {
  38. Flag1 = true;
  39. Flag2 = true;
  40. Page = 0;
  41. SlideSpeed = 0.1f;
  42. RatioBk2 = 0.25f;
  43. RatioBk3 = 0.5f;
  44. RatioBk4 = 0.75f;
  45. RatioPlayer = 0.75f;
  46. #region Garden
  47. #region Cloud1
  48. Transform tra0 = ManaReso.Get("Cloud1");
  49. Tween tween = tra0.CreateTweenVec2D(new Vector3(-12, tra0.position.y, tra0.position.z), 50f, false, false, true, Curve.Linear);
  50. var tra1 = tra0;
  51. tween.OnForwardFinish += () =>
  52. {
  53. tra1.TweenForVec();
  54. };
  55. tra1.TweenForVec();
  56. #endregion
  57. #region Cloud2
  58. tra0 = ManaReso.Get("Cloud2");
  59. tween = tra0.CreateTweenVec2D(new Vector3(-12, tra1.position.y, tra1.position.z), 75f, false, false, true, Curve.Linear);
  60. Transform tra2 = tra0;
  61. tween.OnForwardFinish += () =>
  62. {
  63. tra2.TweenForVec();
  64. };
  65. tra2.TweenForVec();
  66. #endregion
  67. #region Cloud3
  68. tra0 = ManaReso.Get("Cloud3");
  69. tween = tra0.CreateTweenVec2D(new Vector3(-12, tra1.position.y, tra1.position.z), 100, false, false, true, Curve.Linear);
  70. tween.OnForwardFinish += () =>
  71. {
  72. tra0.TweenForVec();
  73. };
  74. tra0.TweenForVec();
  75. #endregion
  76. #region GardenA
  77. Move move = GardenA.CreateMove();
  78. move.OnStart += () =>
  79. {
  80. Flag2 = false;
  81. };
  82. move.OnFinish += () =>
  83. {
  84. Flag2 = true;
  85. };
  86. #endregion
  87. #region GardenMini
  88. tween = ManaReso.Get("GardenMini").CreateTweenVec2D
  89. (
  90. ManaReso.Get("PageTraMini").position,
  91. 0.5f,
  92. false,
  93. false,
  94. true,
  95. Curve.EaseOutQuad
  96. );
  97. tween.OnForwardStart += () =>
  98. {
  99. ManaMiniGame.GamePrepare();
  100. };
  101. tween.OnForwardFinish += () =>
  102. {
  103. ManaReso.SetActive("Player", false);
  104. ManaReso.SetActive("Cloud1", false);
  105. ManaReso.SetActive("Cloud2", false);
  106. ManaReso.SetActive("Cloud3", false);
  107. ManaReso.SetActive("GardenA", false);
  108. ManaReso.SetActive("GardenBk1", false);
  109. ManaReso.SetActive("GardenBk2", false);
  110. ManaReso.SetActive("GardenBk3", false);
  111. ManaReso.SetActive("GardenBk4", false);
  112. };
  113. tween.OnBackwardStart += () =>
  114. {
  115. ManaReso.SetActive("Player", true);
  116. ManaReso.SetActive("Cloud1", true);
  117. ManaReso.SetActive("Cloud2", true);
  118. ManaReso.SetActive("Cloud3", true);
  119. ManaReso.SetActive("GardenA", true);
  120. ManaReso.SetActive("GardenBk1", true);
  121. ManaReso.SetActive("GardenBk2", true);
  122. ManaReso.SetActive("GardenBk3", true);
  123. ManaReso.SetActive("GardenBk4", true);
  124. };
  125. tween.OnBackwardFinish += () =>
  126. {
  127. for (int i = 0; i < ManaMiniGame.IdleList.Count; i++)
  128. {
  129. ManaReso.Save(ManaMiniGame.IdleList[i]);
  130. }
  131. for (int i = 0; i < ManaMiniGame.OpList.Count; i++)
  132. {
  133. ManaReso.Save(ManaMiniGame.OpList[i]);
  134. }
  135. };
  136. #endregion
  137. #endregion
  138. }
  139. public override void RegistReference()
  140. {
  141. GardenBk2 = ManaReso.Get("GardenBk2");
  142. GardenBk3 = ManaReso.Get("GardenBk3");
  143. GardenBk4 = ManaReso.Get("GardenBk4");
  144. Player = ManaReso.Get("Player");
  145. GardenA = ManaReso.Get("GardenA");
  146. GardenPosBk2 = new List<Vector3>()
  147. {
  148. ManaReso.Get("PageTra21").position,
  149. ManaReso.Get("PageTra22").position,
  150. };
  151. GardenPosBk3 = new List<Vector3>()
  152. {
  153. ManaReso.Get("PageTra31").position,
  154. ManaReso.Get("PageTra32").position,
  155. };
  156. GardenPosBk4 = new List<Vector3>()
  157. {
  158. ManaReso.Get("PageTra41").position,
  159. ManaReso.Get("PageTra42").position,
  160. };
  161. GardenPosA = new List<Vector3>()
  162. {
  163. ManaReso.Get("PageTraA").position,
  164. ManaReso.Get("PageTraB").position,
  165. };
  166. PlayerPos = new List<Vector3>()
  167. {
  168. global::Player.ChildDic["PlayerTra1"].position,
  169. global::Player.ChildDic["PlayerTra2"].position,
  170. };
  171. }
  172. public override void TutorialRegistValue()
  173. {
  174. }
  175. public override void TutorialRegistReference()
  176. {
  177. }
  178. public static void LateRegist()
  179. {
  180. #region RegistReference
  181. GardenBk2 = ManaReso.Get("GardenBk2");
  182. GardenBk3 = ManaReso.Get("GardenBk3");
  183. GardenBk4 = ManaReso.Get("GardenBk4");
  184. Player = ManaReso.Get("Player");
  185. GardenA = ManaReso.Get("GardenA");
  186. GardenPosBk2 = new List<Vector3>()
  187. {
  188. ManaReso.Get("PageTra21").position,
  189. ManaReso.Get("PageTra22").position,
  190. };
  191. GardenPosBk3 = new List<Vector3>()
  192. {
  193. ManaReso.Get("PageTra31").position,
  194. ManaReso.Get("PageTra32").position,
  195. };
  196. GardenPosBk4 = new List<Vector3>()
  197. {
  198. ManaReso.Get("PageTra41").position,
  199. ManaReso.Get("PageTra42").position,
  200. };
  201. GardenPosA = new List<Vector3>()
  202. {
  203. ManaReso.Get("PageTraA").position,
  204. ManaReso.Get("PageTraB").position,
  205. };
  206. PlayerPos = new List<Vector3>()
  207. {
  208. global::Player.ChildDic["PlayerTra1"].position,
  209. global::Player.ChildDic["PlayerTra2"].position,
  210. };
  211. #endregion
  212. #region RegistValue
  213. Flag1 = true;
  214. Flag2 = true;
  215. Page = 0;
  216. SlideSpeed = 0.1f;
  217. RatioBk2 = 0.25f;
  218. RatioBk3 = 0.5f;
  219. RatioBk4 = 0.75f;
  220. RatioPlayer = 0.75f;
  221. #region Garden
  222. #region Cloud1
  223. Transform tra0 = ManaReso.Get("Cloud1");
  224. Tween tween = tra0.CreateTweenVec2D(new Vector3(-12, tra0.position.y, tra0.position.z), 50f, false, false, true, Curve.Linear);
  225. var tra1 = tra0;
  226. tween.OnForwardFinish += () =>
  227. {
  228. tra1.TweenForVec();
  229. };
  230. tra1.TweenForVec();
  231. #endregion
  232. #region Cloud2
  233. tra0 = ManaReso.Get("Cloud2");
  234. tween = tra0.CreateTweenVec2D(new Vector3(-12, tra1.position.y, tra1.position.z), 75f, false, false, true, Curve.Linear);
  235. Transform tra2 = tra0;
  236. tween.OnForwardFinish += () =>
  237. {
  238. tra2.TweenForVec();
  239. };
  240. tra2.TweenForVec();
  241. #endregion
  242. #region Cloud3
  243. tra0 = ManaReso.Get("Cloud3");
  244. tween = tra0.CreateTweenVec2D(new Vector3(-12, tra1.position.y, tra1.position.z), 100, false, false, true, Curve.Linear);
  245. tween.OnForwardFinish += () =>
  246. {
  247. tra0.TweenForVec();
  248. };
  249. tra0.TweenForVec();
  250. #endregion
  251. #region GardenA
  252. Move move = GardenA.CreateMove();
  253. move.OnStart += () =>
  254. {
  255. Flag2 = false;
  256. };
  257. move.OnFinish += () =>
  258. {
  259. Flag2 = true;
  260. };
  261. #endregion
  262. #region GardenMini
  263. tween = ManaReso.Get("GardenMini").CreateTweenVec2D
  264. (
  265. ManaReso.Get("PageTraMini").position,
  266. 0.5f,
  267. false,
  268. false,
  269. true,
  270. Curve.EaseOutQuad
  271. );
  272. tween.OnForwardStart += () =>
  273. {
  274. ManaMiniGame.GamePrepare();
  275. };
  276. tween.OnForwardFinish += () =>
  277. {
  278. ManaReso.SetActive("Player", false);
  279. ManaReso.SetActive("Cloud1", false);
  280. ManaReso.SetActive("Cloud2", false);
  281. ManaReso.SetActive("Cloud3", false);
  282. ManaReso.SetActive("GardenA", false);
  283. ManaReso.SetActive("GardenBk1", false);
  284. ManaReso.SetActive("GardenBk2", false);
  285. ManaReso.SetActive("GardenBk3", false);
  286. ManaReso.SetActive("GardenBk4", false);
  287. };
  288. tween.OnBackwardStart += () =>
  289. {
  290. ManaReso.SetActive("Player", true);
  291. ManaReso.SetActive("Cloud1", true);
  292. ManaReso.SetActive("Cloud2", true);
  293. ManaReso.SetActive("Cloud3", true);
  294. ManaReso.SetActive("GardenA", true);
  295. ManaReso.SetActive("GardenBk1", true);
  296. ManaReso.SetActive("GardenBk2", true);
  297. ManaReso.SetActive("GardenBk3", true);
  298. ManaReso.SetActive("GardenBk4", true);
  299. };
  300. tween.OnBackwardFinish += () =>
  301. {
  302. for (int i = 0; i < ManaMiniGame.IdleList.Count; i++)
  303. {
  304. ManaReso.Save(ManaMiniGame.IdleList[i]);
  305. }
  306. for (int i = 0; i < ManaMiniGame.OpList.Count; i++)
  307. {
  308. ManaReso.Save(ManaMiniGame.OpList[i]);
  309. }
  310. };
  311. #endregion
  312. #endregion
  313. #endregion
  314. }
  315. public void OnDrag(PointerEventData eventData)
  316. {
  317. if (Flag1 && Flag2)
  318. {
  319. if (Direction == Direction.Null)
  320. {
  321. if (eventData.delta.x > 0)
  322. {
  323. Direction = Direction.Right;
  324. }
  325. else
  326. {
  327. Direction = Direction.Left;
  328. }
  329. }
  330. if (Direction == Direction.Left)
  331. {
  332. if (eventData.delta.x > 0)
  333. {
  334. Return();
  335. }
  336. else
  337. {
  338. #region MyRegion
  339. float rawDeltaX = eventData.position.x - eventData.pressPosition.x;
  340. if (Page < ValidPage - 1)
  341. {
  342. float tempX = Mathf.Clamp(eventData.delta.x / 10, -2, 2) * SlideSpeed;
  343. Player.Translate(Player.right * tempX * RatioPlayer, Space.World);
  344. GardenA.Translate(GardenA.right * tempX, Space.World);
  345. GardenBk2.Translate(GardenBk2.right * tempX * RatioBk2, Space.World);
  346. GardenBk3.Translate(GardenBk3.right * tempX * RatioBk3, Space.World);
  347. GardenBk4.Translate(GardenBk4.right * tempX * RatioBk4, Space.World);
  348. if (rawDeltaX < -300)
  349. {
  350. NextPage();
  351. }
  352. }
  353. else
  354. {
  355. float ratio = Mathf.Abs(GardenA.position.x - GardenPosA[ValidPage - 1].x)/0.7f;
  356. float speed = Mathf.Lerp(SlideSpeed, 0, ratio);
  357. float tempX = Mathf.Clamp(eventData.delta.x / 10, -2, 2) * speed;
  358. GardenA.Translate(GardenA.right * tempX, Space.World);
  359. //if (GardenA.position.x - GardenPosA[ValidPage - 1].x < -0.7f)
  360. //{
  361. // GardenA.SetX(GardenPosA[ValidPage - 1].x - 0.7f);
  362. // Return();
  363. //}
  364. }
  365. #endregion
  366. }
  367. }
  368. else if (Direction == Direction.Right)
  369. {
  370. if (eventData.delta.x < 0)
  371. {
  372. Return();
  373. }
  374. else
  375. {
  376. #region MyRegion
  377. float rawDeltaX = eventData.position.x - eventData.pressPosition.x;
  378. if (Page > 0)
  379. {
  380. float tempX = Mathf.Clamp(eventData.delta.x / 10, -2, 2) * SlideSpeed;
  381. Player.Translate(Player.right * tempX * RatioPlayer, Space.World);
  382. GardenA.Translate(GardenA.right * tempX, Space.World);
  383. GardenBk2.Translate(GardenBk2.right * tempX * RatioBk2, Space.World);
  384. GardenBk3.Translate(GardenBk3.right * tempX * RatioBk3, Space.World);
  385. GardenBk4.Translate(GardenBk4.right * tempX * RatioBk4, Space.World);
  386. if (rawDeltaX > 300)
  387. {
  388. PrevPage();
  389. }
  390. }
  391. else
  392. {
  393. float ratio = Mathf.Abs(GardenA.position.x - GardenPosA[0].x) / 0.7f;
  394. float speed = Mathf.Lerp(SlideSpeed, 0, ratio);
  395. float tempX = Mathf.Clamp(eventData.delta.x / 10, -2, 2) * speed;
  396. GardenA.Translate(GardenA.right * tempX, Space.World);
  397. //if (GardenA.position.x - GardenPosA[0].x > 0.7f)
  398. //{
  399. // GardenA.SetX(GardenPosA[0].x + 0.7f);
  400. // Return();
  401. //}
  402. }
  403. #endregion
  404. }
  405. }
  406. }
  407. }
  408. public void OnEndDrag(PointerEventData eventData)
  409. {
  410. if (Flag1 && Flag2)
  411. {
  412. Return();
  413. }
  414. Flag1 = true;
  415. Direction = Direction.Null;
  416. }
  417. public void OnBeginDrag(PointerEventData eventData)
  418. {
  419. Direction = Direction.Null;
  420. }
  421. public void OnPointerClick(PointerEventData eventData)
  422. {
  423. if (!eventData.hovered.Contains(eventData.rawPointerPress))
  424. {
  425. return;
  426. }
  427. if (eventData.rawPointerPress.transform.name.Contains("Slot"))
  428. {
  429. Slot slot = eventData.rawPointerPress.GetComponent<Slot>();
  430. if (slot.Valid == false)
  431. {
  432. return;
  433. }
  434. ManaReso.Get("G_Flower").TweenForCG();
  435. //FlowerInfo flowerInfo = null;
  436. //FlowerCard flowerCard = ManaReso.Get<FlowerCard>("H_FlowerCard");
  437. //for (int i = 0; i < ManaGarden.FlowerInfoList.Count; i++)
  438. //{
  439. // FlowerInfo temp = ManaGarden.FlowerInfoList[i];
  440. // if (temp.Plant == false && temp.Unlock)
  441. // {
  442. // flowerInfo = temp;
  443. // flowerCard.Add(temp);
  444. // }
  445. //}
  446. //if (flowerInfo == null)
  447. //{
  448. // ManaReso.Get("G_Flower").TweenForCG();
  449. //}
  450. //else
  451. //{
  452. // ManaGarden.ShowPlantCard(slot, flowerInfo);
  453. // Auxiliary.Instance.DelayCall
  454. // (
  455. // () =>
  456. // {
  457. // flowerCard.Select(0);
  458. // flowerCard.LeftBorder = ManaReso.Get("H_Grid").position.x - Mathf.Abs(flowerCard.ItemList.Last(0).position.x - ManaReso.Get("H_Scrr").position.x);
  459. // flowerCard.RightBorder = ManaReso.Get("H_Grid").position.x + Mathf.Abs(flowerCard.ItemList[0].position.x - ManaReso.Get("H_Scrr").position.x);
  460. // ManaReso.Get<ContentSizeFitter>("H_Grid").enabled = false;
  461. // ManaReso.Get<HorizontalLayoutGroup>("H_Grid").enabled = false;
  462. // },
  463. // 1
  464. // );
  465. //}
  466. }
  467. }
  468. private void Return()
  469. {
  470. Flag1 = false;
  471. Player.Move(PlayerPos[Page], 0.25f, false, Curve.EaseOutQuad);
  472. GardenA.Move(GardenPosA[Page], 0.25f, false, Curve.EaseOutQuad);
  473. GardenBk2.Move(GardenPosBk2[Page], 0.25f, false, Curve.EaseOutQuad);
  474. GardenBk3.Move(GardenPosBk3[Page], 0.25f, false, Curve.EaseOutQuad);
  475. GardenBk4.Move(GardenPosBk4[Page], 0.25f, false, Curve.EaseOutQuad);
  476. }
  477. private void PrevPage()
  478. {
  479. Page--;
  480. Flag1 = false;
  481. Player.Move(PlayerPos[Page], 0.5f, false, Curve.EaseOutQuad);
  482. GardenA.Move(GardenPosA[Page], 0.5f, false, Curve.EaseOutQuad);
  483. GardenBk2.Move(GardenPosBk2[Page], 0.5f, false, Curve.EaseOutQuad);
  484. GardenBk3.Move(GardenPosBk3[Page], 0.5f, false, Curve.EaseOutQuad);
  485. GardenBk4.Move(GardenPosBk4[Page], 0.5f, false, Curve.EaseOutQuad);
  486. }
  487. private void NextPage()
  488. {
  489. Page++;
  490. Flag1 = false;
  491. Player.Move(PlayerPos[Page], 0.5f, false, Curve.EaseOutQuad);
  492. GardenA.Move(GardenPosA[Page], 0.5f, false, Curve.EaseOutQuad);
  493. GardenBk2.Move(GardenPosBk2[Page], 0.5f, false, Curve.EaseOutQuad);
  494. GardenBk3.Move(GardenPosBk3[Page], 0.5f, false, Curve.EaseOutQuad);
  495. GardenBk4.Move(GardenPosBk4[Page], 0.5f, false, Curve.EaseOutQuad);
  496. }
  497. }