using System;
using System.Collections.Generic;
using Animancer;
using Logic;
using Logic.Action;
using Logic.AI;
using Logic.Multilingual;
using ParadoxNotion;
using RuntimeData;
using Steamworks;
using TH1_Core.Events;
using TH1_Core.Managers;
using TH1_Logic.Action;
using TH1_Logic.Core;
using TH1_Logic.Net;
using TH1_Logic.Steam;
using TH1_UI.View.Announce;
using TH1Resource;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
namespace TH1_UI.View.Outside
{
public class UIOutsideLoadingView : Base.View
{
//public AnimancerComponent Animancer;
//加载图:在 Inspector 中拖入;调用 SetEmpire 时会根据 PlayerDataAssets 的 LoadingPic 替换
public Image LoadingPic;
//保留 prefab 默认 Sprite,找不到目标阵营 LoadingPic 时回退
private Sprite _defaultLoadingSprite;
private bool _defaultLoadingSpriteCached;
//关闭时执行的委托
public ViDelegateAssisstant.Dele OnBtnCloseClick;
//开始游戏时执行的委托(目前委托内容就是执行controller的Close())
public ViDelegateAssisstant.Dele OnStartGame;
///
/// 根据传入的 Empire 查 PlayerDataAssets.PlayerDataList,找到则替换 LoadingPic.sprite,找不到保留原图。
///
public void SetEmpire(Empire empire)
{
if (LoadingPic == null) return;
if (!_defaultLoadingSpriteCached)
{
_defaultLoadingSprite = LoadingPic.sprite;
_defaultLoadingSpriteCached = true;
}
var assets = Table.Instance != null ? Table.Instance.PlayerDataAssets : null;
if (assets == null) return;
if (!assets.GetPlayerInfo(empire, out var info) || info == null) return;
if (info.LoadingPic == null) return;
LoadingPic.sprite = info.LoadingPic;
}
///
/// 还原为 prefab 上的默认 LoadingPic(若曾经被替换过)。
///
public void ResetLoadingPic()
{
if (LoadingPic == null) return;
if (_defaultLoadingSpriteCached)
LoadingPic.sprite = _defaultLoadingSprite;
}
/*public override void Show()
{
gameObject.SetActive(true);
if(Animancer!=null)Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeIn);
}
public override void Hide()
{
if (Animancer != null)
{
var state = Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeIn);
state.Events.OnEnd = () => { gameObject.SetActive(false); };
}
else
gameObject.SetActive(false);
}*/
}
}