PlazaRoom.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using DragonBones;
  6. using UnityEngine;
  7. using UnityEngine.EventSystems;
  8. using Debug = UnityEngine.Debug;
  9. using Transform = UnityEngine.Transform;
  10. public class PlazaRoom : MonoBehaviour, IPointerClickHandler
  11. {
  12. private class StarCreater
  13. {
  14. public float StarSpawnTime = 0;
  15. public float StarSpawnTimer = 0;
  16. public float MinStarSpawnTime = 0.1f;
  17. public float MaxStarSpawnTime = 0.3f;
  18. public float LeftStarBorder = 0;
  19. public float RightStarBorder = 16;
  20. public float UpStarBorder = 4.6f;
  21. public float DownStarBorder = 0;
  22. public Vector3 MinStarScale = new Vector3(0.5f, 0.5f, 0.5f);
  23. public Vector3 MaxStarScale = new Vector3(1, 1, 1);
  24. public void Update()
  25. {
  26. StarSpawnTimer += Time.deltaTime;
  27. if (StarSpawnTimer >= StarSpawnTime)
  28. {
  29. StarSpawnTime = Random.Range(MinStarSpawnTime, MaxStarSpawnTime);
  30. StarSpawnTimer = 0;
  31. Transform star = ManaReso.Get("PlazaRoomStar", Folder.Scene, false, ManaReso.Get("PlazaRoom"), false, ObjType.PlazaRoomStar, typeof(PlazaRoomStar));
  32. star.GetComponent<PlazaRoomStar>().Show();
  33. star.localScale = Vector3.Lerp(MinStarScale, MaxStarScale, Random.Range(0f, 1f));
  34. star.SetX(Random.Range(LeftStarBorder, RightStarBorder));
  35. star.SetY(Random.Range(DownStarBorder, UpStarBorder));
  36. }
  37. }
  38. }
  39. #region Config
  40. public static bool Initialized;
  41. private static StarCreater StarCreaterA;
  42. private static StarCreater StarCreaterB;
  43. #endregion
  44. public static void Initialize()
  45. {
  46. if (Initialized)
  47. return;
  48. else
  49. Initialized = true;
  50. LoadScene();
  51. SetCloud();
  52. LoadChest();
  53. }
  54. private static void LoadScene()
  55. {
  56. StarCreaterA = new StarCreater();
  57. StarCreaterB = new StarCreater();
  58. Transform tra = ManaReso.Get("PlazaRoom", Folder.Scene, true, null, true);
  59. tra.AddComponent<PlazaRoom>();
  60. UnityFactory.factory.LoadDragonBonesData(ManaReso.Load<TextAsset>("PhonoGraph_ske", Folder.Config));
  61. UnityFactory.factory.LoadTextureAtlasData(ManaReso.Load<TextAsset>("PhonoGraph_tex", Folder.Config), "PhonoGraph_texture");
  62. UnityArmatureComponent uac = UnityFactory.factory.BuildArmatureComponent("PhonoGraph");
  63. uac.transform.parent = ManaReso.Get("PhonoGraph");
  64. uac.anim.Play("newAnimation");
  65. uac.transform.localPosition = new Vector3();
  66. }
  67. private static void SetCloud()
  68. {
  69. #region Cloud1
  70. Transform tra = ManaReso.Get("PlazaRoomCloud1");
  71. tra.GetComponent<SpriteRenderer>().sprite = ManaReso.LoadSprite("云朵", Folder.Scene);
  72. TweenRoot tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 115f, true, false, true, Curve.Linear);
  73. tween.Repeat = true;
  74. tween.StartForward();
  75. #endregion
  76. #region Cloud2
  77. tra = ManaReso.Get("PlazaRoomCloud2");
  78. tra.GetComponent<SpriteRenderer>().sprite = ManaReso.LoadSprite("云朵", Folder.Scene);
  79. tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 157.5f, true, false, true, Curve.Linear);
  80. tween.Repeat = true;
  81. tween.StartForward();
  82. #endregion
  83. #region Cloud3
  84. tra = ManaReso.Get("PlazaRoomCloud3");
  85. tra.GetComponent<SpriteRenderer>().sprite = ManaReso.LoadSprite("云朵", Folder.Scene);
  86. tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 200f, true, false, true, Curve.Linear);
  87. tween.Repeat = true;
  88. tween.StartForward();
  89. #endregion
  90. }
  91. private static void LoadChest()
  92. {
  93. if (PlazaRoomChest.CurrentChest != null)
  94. return;
  95. PlazaRoomChest chest = ManaReso.GetPlazaRoomChest(ManaReso.Get("PlazaRoomChestPos").position);
  96. PlazaRoomChest.CurrentChest = chest;
  97. float random = Random.Range(0f, 1f);
  98. if (random <= 0.3333f)
  99. chest.SetReward(ChestRewardType.Coin, "100");
  100. else if (random <= 0.6666f)
  101. chest.SetReward(ChestRewardType.Diamond, "100");
  102. else
  103. chest.SetReward(ChestRewardType.Flower, "1");
  104. }
  105. public void Update()
  106. {
  107. StarThread();
  108. DepthThread();
  109. }
  110. public void StarThread()
  111. {
  112. StarCreaterA.Update();
  113. StarCreaterB.Update();
  114. }
  115. public void DepthThread()
  116. {
  117. foreach (var v in GardenSmartFoxManager.GardenSmartFox.PlazaRoomManager.UserInstanceDictionary.Values)
  118. {
  119. if (v.Player.transform.hasChanged)
  120. {
  121. ResetDepth();
  122. break;
  123. }
  124. }
  125. }
  126. public void ResetDepth()
  127. {
  128. List<PlazaRoomManager.PlazaRoomPlayer> plazaRoomPlayers = GardenSmartFoxManager.GardenSmartFox.PlazaRoomManager.UserInstanceDictionary.Values.ToList();
  129. plazaRoomPlayers.MySort((player1, player2) => player1.Player.transform.position.z > player2.Player.transform.position.z);
  130. foreach (var plazaRoomPlayer in plazaRoomPlayers)
  131. {
  132. plazaRoomPlayer.Player.transform.hasChanged = false;
  133. plazaRoomPlayer.NickNameTransform.SetAsLastSibling();
  134. plazaRoomPlayer.MessageBox.SetAsLastSibling();
  135. }
  136. }
  137. public void OnPointerClick(PointerEventData eventData)
  138. {
  139. GardenSmartFoxManager.GardenSmartFox.PlazaRoomManager.MoveTo(eventData.pointerCurrentRaycast.worldPosition + new Vector3(0, 0, -3));
  140. }
  141. }