备份CatanBuilding瘦身独立工程
This commit is contained in:
149
Assets/Scripts/Aquarium/UI/AquariumCloudPanel.cs
Normal file
149
Assets/Scripts/Aquarium/UI/AquariumCloudPanel.cs
Normal file
@@ -0,0 +1,149 @@
|
||||
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<Animation>();
|
||||
disposable = GContext.OnEvent<EndTransition>().Subscribe(EndTransition);
|
||||
image_map = transform.Find("RandomMapPanel/Item/img_map").GetComponent<Image>();
|
||||
text_map = transform.Find("RandomMapPanel/result/text_map").GetComponent<TMP_Text>();
|
||||
text_level = transform.Find("RandomMapPanel/result/fishcard/text_level").GetComponent<TMP_Text>();
|
||||
|
||||
type = FishingAquariumAct.CloudType;
|
||||
StartCoroutine(OnStart());
|
||||
Synchrodata();
|
||||
}
|
||||
void Synchrodata()
|
||||
{
|
||||
//从服务器拿数据
|
||||
string dataStr = PlayFabMgr.Instance.GetLocalData(AquariumManager.AquariumEventDataKey);
|
||||
if (!string.IsNullOrEmpty(dataStr))
|
||||
{
|
||||
data = Newtonsoft.Json.JsonConvert.DeserializeObject<AquariumManagerData>(dataStr);
|
||||
if (data != null)
|
||||
{
|
||||
Tables _tables = GContext.container.Resolve<Tables>();
|
||||
var mapData = _tables.TbMapData.DataMap[data.mapId];
|
||||
GContext.container.Resolve<IUIService>().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<PlayerFishData>().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<AudioClip>(audioName).Task;
|
||||
if (disposable == null)
|
||||
{
|
||||
if (doorvault_gear)
|
||||
{
|
||||
Addressables.Release(doorvault_gear);
|
||||
doorvault_gear = null;
|
||||
}
|
||||
return;
|
||||
}
|
||||
sound_doorvault_gear = GContext.container.Resolve<ISoundService>().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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user