using asap.core; using GameCore; using System; using System.Collections; using UnityEngine; using UniRx; using TMPro; using UnityEngine.UI; using cfg; using UnityEngine.AddressableAssets; public class AquariumCloudPanel : MonoBehaviour { Animation ani; IDisposable disposable; Image image_map; TMP_Text text_map; TMP_Text text_level; AquariumManagerData data; int type = 0; AudioClip doorvault_gear; Sound sound_doorvault_gear; private void Awake() { ani = GetComponent(); disposable = GContext.OnEvent().Subscribe(EndTransition); image_map = transform.Find("RandomMapPanel/Item/img_map").GetComponent(); text_map = transform.Find("RandomMapPanel/result/text_map").GetComponent(); text_level = transform.Find("RandomMapPanel/result/fishcard/text_level").GetComponent(); type = FishingAquariumAct.CloudType; StartCoroutine(OnStart()); Synchrodata(); } void Synchrodata() { //从服务器拿数据 var dataSever = AquariumManager.GetAquariumManagerData(); if (dataSever != null) { data = dataSever; if (data != null) { Tables _tables = GContext.container.Resolve(); var mapData = _tables.TbMapData.DataMap[data.mapId]; GContext.container.Resolve().SetImageSprite(image_map, mapData.Bg); text_map.text = LocalizationMgr.GetText(mapData.Name_l10n_key); string levelLV = LocalizationMgr.GetText("UI_FishingMapPanel_101006"); int fishCardLevel = GContext.container.Resolve().GetFishLevelByMap(data.mapId); text_level.text = levelLV + fishCardLevel.ToString(); } } } IEnumerator OnStart() { string cloud_in = "aquarium_cloud_in_2"; float time = 0.75f; switch (type) { case 2: cloud_in = "aquarium_cloud_in_3"; time = 1.25f; break; default: break; } if (disposable != null) { ani.Play(cloud_in); } yield return new WaitForSeconds(time);//入场动画播完 PlayRodAudio("audio_ui_aquarium_doorvault_gear"); if (disposable != null) { ani.Play("aquarium_cloud_loop_2"); } } void StopRodAudio() { if (doorvault_gear) { Addressables.Release(doorvault_gear); doorvault_gear = null; } if (sound_doorvault_gear) { sound_doorvault_gear.audioSource.Stop(); sound_doorvault_gear.ReturnPool(); sound_doorvault_gear = null; } } async void PlayRodAudio(string audioName) { StopRodAudio(); doorvault_gear = await Addressables.LoadAssetAsync(audioName).Task; if (disposable == null) { if (doorvault_gear) { Addressables.Release(doorvault_gear); doorvault_gear = null; } return; } sound_doorvault_gear = GContext.container.Resolve().GetNewUISound(doorvault_gear); sound_doorvault_gear.audioSource.Play(); sound_doorvault_gear.audioSource.loop = true; } public void EndTransition(EndTransition endTransition) { StartCoroutine(End()); StopRodAudio(); } private void OnDisable() { Dispose(); } IEnumerator End() { string cloud_out = "aquarium_cloud_out_2"; float time = 1.25f; switch (type) { case 1: case 5: cloud_out = "aquarium_cloud_out_3"; time = 0.866f; break; default: break; } image_map.gameObject.SetActive(false); ani.Play(cloud_out); Dispose(); yield return new WaitForSeconds(time);//退场动画播完 UIManager.Instance.DestroyUI(UITypes.AquariumCloudPanel); } void Dispose() { disposable?.Dispose(); disposable = null; } }