using UnityEngine; using UnityEngine.UI; using static AxibugEmuOnline.Client.InGameUI_SaveStateMenu; namespace AxibugEmuOnline.Client { public class OptionUI_SavSlotItem : OptionUI_MenuItem<SaveSlotMenu> { public RawImage UI_ScreenShot; public Image UI_Empty; public Text UI_SavTime; Texture2D m_screenTex; protected override void OnSetData(InternalOptionMenu menuData) { base.OnSetData(menuData); RefreshUI(); } private void RefreshUI() { bool isEmpty = MenuData.SavFile.IsEmpty; UI_ScreenShot.gameObject.SetActiveEx(!isEmpty); UI_Empty.gameObject.SetActiveEx(isEmpty); UI_SavTime.gameObject.SetActiveEx(true); if (isEmpty) { UI_SavTime.text = "没有数据"; if (m_screenTex) { Destroy(m_screenTex); m_screenTex = null; } } else { var savTime = MenuData.SavFile.GetSavTimeUTC().ToLocalTime(); UI_SavTime.text = $"{savTime.Year}/{savTime.Month:00}/{savTime.Day:00}\n{savTime.Hour}:{savTime.Minute}:{savTime.Second}"; MenuData.SavFile.GetSavData(out byte[] _, out byte[] screenShotData); if (!m_screenTex) m_screenTex = new Texture2D(1, 1); m_screenTex.LoadImage(screenShotData); UI_ScreenShot.texture = m_screenTex; } } public override void OnHide() { base.OnHide(); if (m_screenTex) { Destroy(m_screenTex); m_screenTex = null; } } public override void OnExecute(OptionUI optionUI, ref bool cancelHide) { MenuData.OnExcute(optionUI, ref cancelHide); RefreshUI(); } } }