备份CatanBuilding瘦身独立工程
This commit is contained in:
275
Assets/Scripts/Aquarium/UI/AquariumDetectPanel.cs
Normal file
275
Assets/Scripts/Aquarium/UI/AquariumDetectPanel.cs
Normal file
@@ -0,0 +1,275 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using game;
|
||||
using Game;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using TMPro;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class AquariumDetectPanel : BasePanel
|
||||
{
|
||||
AquariumManager AM;
|
||||
Animation anim;
|
||||
Button btn_close;
|
||||
Button btn_enter;
|
||||
Button btn_enter_gray;
|
||||
TMP_Text text_info;
|
||||
TMP_Text text_time;
|
||||
Button btn_event;
|
||||
GameObject event_redpoint;
|
||||
Button btn_slot;
|
||||
TMP_Text text_num_slot;
|
||||
GameObject slot_redpoint;
|
||||
GameObject slot_tips;
|
||||
TMP_Text text_title_tips;
|
||||
TMP_Text text_title_info;
|
||||
Button btn_questionmark;
|
||||
|
||||
AquariumRandomMapPanel randomMapPanel;
|
||||
int maxSlot = 6;
|
||||
DateTime refreshTime;
|
||||
bool isCutTo = false;
|
||||
|
||||
AudioClip doorvault_gear;
|
||||
Sound sound_doorvault_gear;
|
||||
AudioClip searchingroll_single;
|
||||
Sound sound_searchingroll_single;
|
||||
string audioName;
|
||||
int refreshTimeInt;
|
||||
private void Awake()
|
||||
{
|
||||
AM = GContext.container.Resolve<AquariumManager>();
|
||||
anim = GetComponent<Animation>();
|
||||
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
||||
btn_enter = transform.Find("root_main/btn_enter/btn_green").GetComponent<Button>();
|
||||
btn_enter_gray = transform.Find("root_main/btn_enter_gray/btn_green").GetComponent<Button>();
|
||||
text_info = transform.Find("root_main/btn_enter_gray/text_info").GetComponent<TMP_Text>();
|
||||
text_time = transform.Find("root_main/text_time").GetComponent<TMP_Text>();
|
||||
btn_event = transform.Find("root_main/btn_event").GetComponent<Button>();
|
||||
event_redpoint = transform.Find("root_main/btn_event/redpoint").gameObject;
|
||||
btn_slot = transform.Find("root_main/btn_slot").GetComponent<Button>();
|
||||
text_num_slot = transform.Find("root_main/btn_slot/text_num").GetComponent<TMP_Text>();
|
||||
slot_redpoint = transform.Find("root_main/btn_slot/redpoint").gameObject;
|
||||
slot_tips = transform.Find("root_main/slot_tips").gameObject;
|
||||
text_title_tips = transform.Find("root_main/slot_tips/text_title").GetComponent<TMP_Text>();
|
||||
text_title_info = transform.Find("root_main/slot_tips/text_info").GetComponent<TMP_Text>();
|
||||
btn_questionmark = transform.Find("root_main/title/btn_questionmark").GetComponent<Button>();
|
||||
|
||||
randomMapPanel = transform.Find("RandomMapPanel").GetComponent<AquariumRandomMapPanel>();
|
||||
event_redpoint.SetActive(false);
|
||||
|
||||
}
|
||||
protected override void Start()
|
||||
{
|
||||
GContext.container.Resolve<GuideDataCenter>().InspectTriggerGuide("AquariumDetectPanel");
|
||||
|
||||
//randomMapPanel.gameObject.SetActive(false);
|
||||
base.Start();
|
||||
btn_event.onClick.AddListener(OnClickEvent);
|
||||
btn_enter.onClick.AddListener(OnClickMaching);
|
||||
btn_close.onClick.AddListener(OnClickClose);
|
||||
btn_questionmark.onClick.AddListener(async () =>
|
||||
await UIManager.Instance.ShowUI(UITypes.AquariumInfoPopupPanel));
|
||||
btn_slot.onClick.AddListener(() => slot_tips.SetActive(!slot_tips.activeSelf));
|
||||
int Slot = GContext.container.Resolve<PlayerData>().benefitsAquariumLimit;
|
||||
text_num_slot.text = $"{Slot}/{maxSlot}";
|
||||
text_title_tips.text = LocalizationMgr.GetFormatTextValue("UI_AquariumPanel_2", $"{Slot}/{maxSlot}");
|
||||
if (Slot == maxSlot)
|
||||
{
|
||||
text_title_info.text = LocalizationMgr.GetText("UI_AquariumPanel_4");
|
||||
}
|
||||
else
|
||||
{
|
||||
int level = GContext.container.Resolve<PlayerData>().benefitsLevel[6];
|
||||
var Benefits = GContext.container.Resolve<Tables>().TBBenefits.GetOrDefault(7);
|
||||
if (Benefits == null || level + 1 >= Benefits.AccountLevel.Count)
|
||||
{
|
||||
Debug.LogError("No account data AquariumLimit up");
|
||||
}
|
||||
else
|
||||
{
|
||||
text_title_info.text = LocalizationMgr.GetFormatTextValue("UI_AquariumPanel_3", Benefits.AccountLevel[level + 1]);
|
||||
}
|
||||
}
|
||||
|
||||
var nowTime = ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
refreshTime = nowTime.Date.AddDays(1);
|
||||
if (nowTime.Date.DayOfYear != AM.data.refreshDay)
|
||||
{
|
||||
AM.data.refreshCount = 0;
|
||||
AM.data.adCount = 0;
|
||||
AM.data.refreshDay = nowTime.Date.DayOfYear;
|
||||
}
|
||||
|
||||
refreshTimeInt = GContext.container.Resolve<Tables>().TbAquariumConfig.RefreshTime;
|
||||
bool isRefresh = AM.data.refreshCount < refreshTimeInt;
|
||||
if (!isRefresh)
|
||||
{
|
||||
ShowInfo();
|
||||
}
|
||||
btn_enter.transform.parent.gameObject.SetActive(isRefresh);
|
||||
btn_enter_gray.transform.parent.gameObject.SetActive(!isRefresh);
|
||||
text_time.text = LocalizationMgr.GetFormatTextValue("UI_AquariumPanel_44", refreshTimeInt - AM.data.refreshCount, refreshTimeInt);
|
||||
}
|
||||
|
||||
void ShowInfo()
|
||||
{
|
||||
//剩余时间
|
||||
TimeSpan duration = refreshTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
string textValue = LocalizationMgr.GetText("UI_AquariumPanel_7");
|
||||
text_info.text = string.Format(textValue, ConvertTools.ConvertTime2(duration));
|
||||
var timer = Observable.Interval(TimeSpan.FromSeconds(1))
|
||||
.TakeWhile(seconds => seconds <= duration.TotalSeconds)
|
||||
.Subscribe(seconds => text_info.text =
|
||||
string.Format(textValue, ConvertTools.ConvertTime2(duration.Subtract(TimeSpan.FromSeconds(seconds))))
|
||||
, Refresh)
|
||||
.AddTo(disposables);
|
||||
}
|
||||
void Refresh()
|
||||
{
|
||||
AM.data.adCount = 0;
|
||||
AM.data.refreshCount = 0;
|
||||
AM.data.refreshDay = ZZTimeHelper.UtcNow().UtcNowOffset().Date.DayOfYear;
|
||||
text_time.text = LocalizationMgr.GetFormatTextValue("UI_AquariumPanel_44", refreshTimeInt, refreshTimeInt);
|
||||
btn_enter.transform.parent.gameObject.SetActive(true);
|
||||
btn_enter_gray.transform.parent.gameObject.SetActive(false);
|
||||
}
|
||||
void OnClickEvent()
|
||||
{
|
||||
_ = UIManager.Instance.ShowUI(UITypes.EventReportPopupPanel);
|
||||
}
|
||||
|
||||
async void GetSearchingrollSingle()
|
||||
{
|
||||
searchingroll_single = await Addressables.LoadAssetAsync<AudioClip>("audio_ui_aquarium_doorvault_searchingroll_single").Task;
|
||||
if (searchingroll_single != null && this != null)
|
||||
{
|
||||
sound_searchingroll_single = GContext.container.Resolve<ISoundService>().GetNewUISound(searchingroll_single);
|
||||
}
|
||||
}
|
||||
|
||||
IDisposable enterMap;
|
||||
void OnClickMaching()
|
||||
{
|
||||
StartCoroutine(StartClickMaching());
|
||||
}
|
||||
IEnumerator StartClickMaching()
|
||||
{
|
||||
//randomMapPanel.gameObject.SetActive(true);
|
||||
anim.Play("match_map_start");
|
||||
yield return new WaitForSeconds(1);
|
||||
PlayRodAudio("audio_ui_fishingduel_matchingloop");
|
||||
randomMapPanel.SetMap();
|
||||
enterMap = FishingAquariumAct.eventAggregator.GetEvent<EnterMaped>().Subscribe(EnterMaped);
|
||||
randomMapPanel.InitEgg();
|
||||
FishingAquariumAct.eventAggregator.Publish(new AquariumEnterMapScene());
|
||||
yield return new WaitForSeconds(3);
|
||||
StopRodAudio();
|
||||
GContext.Publish(new VibrationData(HapticTypes.HeavyImpact));
|
||||
anim.Play("match_egg_start");
|
||||
GetSearchingrollSingle();
|
||||
yield return new WaitForSeconds(1);
|
||||
PlayRodAudio("audio_ui_aquarium_doorvault_searchingroll_loop");
|
||||
randomMapPanel.PlayEgg();
|
||||
yield return new WaitForSeconds(1.5f);
|
||||
StopRodAudio();
|
||||
for (int i = 1; i < AM.Slot; i++)
|
||||
{
|
||||
yield return new WaitForSeconds(0.16f);
|
||||
if (sound_searchingroll_single != null)
|
||||
{
|
||||
sound_searchingroll_single.audioSource.Play();
|
||||
}
|
||||
}
|
||||
anim.Play("aquarium_cloud_in");
|
||||
yield return new WaitForSeconds(3.5f);
|
||||
PlayRodAudio("audio_ui_aquarium_doorvault_gear");
|
||||
anim.Play("aquarium_cloud_loop");
|
||||
randomMapPanel.HideMap();
|
||||
yield return new WaitForSeconds(1f);
|
||||
OnClose();
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
private void OnDisable()
|
||||
{
|
||||
this.audioName = "";
|
||||
StopRodAudio();
|
||||
|
||||
if (searchingroll_single)
|
||||
{
|
||||
Addressables.Release(searchingroll_single);
|
||||
searchingroll_single = null;
|
||||
}
|
||||
if (sound_searchingroll_single)
|
||||
{
|
||||
sound_searchingroll_single.audioSource.Stop();
|
||||
sound_searchingroll_single.ReturnPool();
|
||||
sound_searchingroll_single = null;
|
||||
}
|
||||
}
|
||||
async void PlayRodAudio(string audioName)
|
||||
{
|
||||
this.audioName = audioName;
|
||||
StopRodAudio();
|
||||
var local_doorvault_gear = await Addressables.LoadAssetAsync<AudioClip>(audioName).Task;
|
||||
if (local_doorvault_gear == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (this.audioName != audioName)
|
||||
{
|
||||
Addressables.Release(local_doorvault_gear);
|
||||
return;
|
||||
}
|
||||
doorvault_gear = local_doorvault_gear;
|
||||
sound_doorvault_gear = GContext.container.Resolve<ISoundService>().GetNewUISound(doorvault_gear);
|
||||
sound_doorvault_gear.audioSource.Play();
|
||||
sound_doorvault_gear.audioSource.loop = true;
|
||||
}
|
||||
void EnterMaped(EnterMaped enterMaped)
|
||||
{
|
||||
enterMap?.Dispose();
|
||||
enterMap = null;
|
||||
OnClose();
|
||||
}
|
||||
|
||||
async void OnClose()
|
||||
{
|
||||
if (isCutTo)
|
||||
{
|
||||
StopRodAudio();
|
||||
anim.Play("aquarium_cloud_out");
|
||||
FishingAquariumAct.eventAggregator.Publish(new AquariumEnterMapScene() { isShowUI = true });
|
||||
await Awaiters.Seconds(2.0f);
|
||||
UIManager.Instance.DestroyUI(UITypes.AquariumDetectPanel);
|
||||
}
|
||||
else
|
||||
{
|
||||
isCutTo = true;
|
||||
}
|
||||
}
|
||||
|
||||
void OnClickClose()
|
||||
{
|
||||
FishingAquariumAct.CloudType = 2;
|
||||
GContext.Publish(new UnloadActToNextAct(transitionPanel: UITypes.AquariumCloudPanel, time: 1.25f));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user