using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using DragonBones; using UnityEngine; using UnityEngine.EventSystems; using Debug = UnityEngine.Debug; using Transform = UnityEngine.Transform; public class PlazaRoom : MonoBehaviour, IPointerClickHandler { private class StarCreater { public float StarSpawnTime = 0; public float StarSpawnTimer = 0; public float MinStarSpawnTime = 0.1f; public float MaxStarSpawnTime = 0.3f; public float LeftStarBorder = 0; public float RightStarBorder = 16; public float UpStarBorder = 4.6f; public float DownStarBorder = 0; public Vector3 MinStarScale = new Vector3(0.5f, 0.5f, 0.5f); public Vector3 MaxStarScale = new Vector3(1, 1, 1); public void Update() { StarSpawnTimer += Time.deltaTime; if (StarSpawnTimer >= StarSpawnTime) { StarSpawnTime = Random.Range(MinStarSpawnTime, MaxStarSpawnTime); StarSpawnTimer = 0; Transform star = ManaReso.Get("PlazaRoomStar", Folder.Scene, false, ManaReso.Get("PlazaRoom"), false, ObjType.PlazaRoomStar, typeof(PlazaRoomStar)); star.GetComponent().Show(); star.localScale = Vector3.Lerp(MinStarScale, MaxStarScale, Random.Range(0f, 1f)); star.SetX(Random.Range(LeftStarBorder, RightStarBorder)); star.SetY(Random.Range(DownStarBorder, UpStarBorder)); } } } #region Config public static bool Initialized; private static StarCreater StarCreaterA; private static StarCreater StarCreaterB; #endregion public static void Initialize() { if (Initialized) return; else Initialized = true; LoadScene(); SetCloud(); LoadChest(); } private static void LoadScene() { StarCreaterA = new StarCreater(); StarCreaterB = new StarCreater(); Transform tra = ManaReso.Get("PlazaRoom", Folder.Scene, true, null, true); tra.AddComponent(); UnityFactory.factory.LoadDragonBonesData(ManaReso.Load("PhonoGraph_ske", Folder.Config)); UnityFactory.factory.LoadTextureAtlasData(ManaReso.Load("PhonoGraph_tex", Folder.Config), "PhonoGraph_texture"); UnityArmatureComponent uac = UnityFactory.factory.BuildArmatureComponent("PhonoGraph"); uac.transform.parent = ManaReso.Get("PhonoGraph"); uac.anim.Play("newAnimation"); uac.transform.localPosition = new Vector3(); } private static void SetCloud() { #region Cloud1 Transform tra = ManaReso.Get("PlazaRoomCloud1"); tra.GetComponent().sprite = ManaReso.LoadSprite("云朵", Folder.Scene); TweenRoot tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 115f, true, false, true, Curve.Linear); tween.Repeat = true; tween.StartForward(); #endregion #region Cloud2 tra = ManaReso.Get("PlazaRoomCloud2"); tra.GetComponent().sprite = ManaReso.LoadSprite("云朵", Folder.Scene); tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 157.5f, true, false, true, Curve.Linear); tween.Repeat = true; tween.StartForward(); #endregion #region Cloud3 tra = ManaReso.Get("PlazaRoomCloud3"); tra.GetComponent().sprite = ManaReso.LoadSprite("云朵", Folder.Scene); tween = tra.CreateTweenVec2D(new Vector3(-21, tra.localPosition.y, tra.localPosition.z), 200f, true, false, true, Curve.Linear); tween.Repeat = true; tween.StartForward(); #endregion } private static void LoadChest() { if (PlazaRoomChest.CurrentChest != null) return; PlazaRoomChest chest = ManaReso.GetPlazaRoomChest(ManaReso.Get("PlazaRoomChestPos").position); PlazaRoomChest.CurrentChest = chest; float random = Random.Range(0f, 1f); if (random <= 0.3333f) chest.SetReward(ChestRewardType.Coin, "100"); else if (random <= 0.6666f) chest.SetReward(ChestRewardType.Diamond, "100"); else chest.SetReward(ChestRewardType.Flower, "1"); } public void Update() { StarThread(); DepthThread(); } public void StarThread() { StarCreaterA.Update(); StarCreaterB.Update(); } public void DepthThread() { foreach (var v in GardenSmartFoxManager.GardenSmartFox.SFSPlazaRoomManager.UserInstanceDictionary.Values) { if (v.Player.transform.hasChanged) { ResetDepth(); break; } } } public void ResetDepth() { List plazaRoomPlayers = GardenSmartFoxManager.GardenSmartFox.SFSPlazaRoomManager.UserInstanceDictionary.Values.ToList(); plazaRoomPlayers.MySort((player1, player2) => player1.Player.transform.position.z > player2.Player.transform.position.z); foreach (var plazaRoomPlayer in plazaRoomPlayers) { plazaRoomPlayer.Player.transform.hasChanged = false; plazaRoomPlayer.NickNameTransform.SetAsLastSibling(); plazaRoomPlayer.MessageBox.SetAsLastSibling(); } } public void OnPointerClick(PointerEventData eventData) { GardenSmartFoxManager.GardenSmartFox.SFSPlazaRoomManager.MoveTo(eventData.pointerCurrentRaycast.worldPosition + new Vector3(0, 0, -3)); } }