142 lines
4.0 KiB
C#
142 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Animancer;
|
|
using Logic;
|
|
using Logic.Action;
|
|
using Logic.AI;
|
|
using Logic.Audio;
|
|
using Logic.Config;
|
|
using Logic.Multilingual;
|
|
using ParadoxNotion;
|
|
using RuntimeData;
|
|
using Steamworks;
|
|
using TH1_Core.Events;
|
|
using TH1_Core.Managers;
|
|
using TH1_Logic.Action;
|
|
using TH1_Logic.Config;
|
|
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;
|
|
using ConfigManager = TH1_Logic.Config.ConfigManager;
|
|
|
|
namespace TH1_UI.View.Outside
|
|
{
|
|
|
|
|
|
public class UIOutsideLibraryGridItemMono : MonoBehaviour
|
|
{
|
|
public Button Button;
|
|
public Image HeroAvatar;
|
|
public Image WonderAvatar;
|
|
public TextMeshProUGUI Name;
|
|
public Transform StarGroup;
|
|
public List<Image> Stars;
|
|
|
|
public Sprite StarImg;
|
|
public Sprite StarImgGray;
|
|
|
|
|
|
//关闭时执行的委托
|
|
public ViDelegateAssisstant.Dele OnBtnCloseClick;
|
|
|
|
//开始游戏时执行的委托(目前委托内容就是执行controller的Close())
|
|
public ViDelegateAssisstant.Dele OnStartGame;
|
|
|
|
|
|
public void SetHeroContent(GiantType giantType,Action<GiantType> onClick)
|
|
{
|
|
|
|
//if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(new UnitFullType(UnitType.Giant, giantType, 0), out var unitInfo)) return;
|
|
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByGiant(giantType, out var info)) return;
|
|
HeroAvatar.gameObject.SetActive(true);
|
|
WonderAvatar.gameObject.SetActive(false);
|
|
HeroAvatar.sprite = info.Illust;
|
|
SetUITextOrRaw(Name,info.Name);
|
|
var showAchievements = UIOutsideLibraryAchievementVisibility.ShouldShowHeroAchievements(giantType);
|
|
if (StarGroup != null) StarGroup.gameObject.SetActive(showAchievements);
|
|
if (showAchievements)
|
|
{
|
|
var hasAchievement = AchievementDataManager.Instance.GetSmallIdByGiantType(giantType, out var smallid);
|
|
for (uint k = 1;k <= 3;k++)
|
|
{
|
|
if(Stars.Count < k)continue;
|
|
bool isFinished = hasAchievement && AchievementDataManager.Instance.IsFinished(2, smallid, k);
|
|
Stars[(int)k - 1].sprite = isFinished ? StarImg : StarImgGray;
|
|
}
|
|
}
|
|
|
|
var giantTypeCopy = giantType;
|
|
Button.onClick.RemoveAllListeners();
|
|
Button.onClick.AddListener(()=>onClick.Invoke(giantTypeCopy));
|
|
|
|
}
|
|
|
|
public void SetWonderContent(Empire empire,WonderTypeEnum wonderType,Action<Empire,WonderTypeEnum> onClick)
|
|
{
|
|
Table.Instance.GridAndResourceDataAssets.GetWonderInfoByType(wonderType, empire, out var wonderInfo);
|
|
|
|
HeroAvatar.gameObject.SetActive(false);
|
|
WonderAvatar.gameObject.SetActive(true);
|
|
WonderAvatar.sprite = wonderInfo.Sprite;
|
|
MultilingualManager.Instance.SetUIText(Name,wonderInfo.Name);
|
|
if (StarGroup != null) StarGroup.gameObject.SetActive(true);
|
|
var hasAchievement = AchievementDataManager.Instance.GetSmallIdByWonderAndEmpire(empire,wonderType, out var smallid);
|
|
for (uint k = 1;k <= 3;k++)
|
|
{
|
|
if(Stars.Count < k)continue;
|
|
bool isFinished = hasAchievement && AchievementDataManager.Instance.IsFinished(3, smallid, k);
|
|
Stars[(int)k - 1].sprite = isFinished ? StarImg : StarImgGray;
|
|
}
|
|
|
|
var empireCopy = empire;
|
|
var wonderTypeCopy = wonderType;
|
|
Button.onClick.RemoveAllListeners();
|
|
Button.onClick.AddListener(()=>onClick.Invoke(empireCopy,wonderTypeCopy));
|
|
}
|
|
|
|
private static void SetUITextOrRaw(TextMeshProUGUI text, string value)
|
|
{
|
|
if (text == null) return;
|
|
|
|
var multilingual = text.gameObject.GetComponent<MultilingualTextMono>();
|
|
if (string.IsNullOrEmpty(value))
|
|
{
|
|
if (multilingual != null)
|
|
{
|
|
multilingual.ID = 0;
|
|
multilingual.Ban = true;
|
|
}
|
|
|
|
text.text = string.Empty;
|
|
return;
|
|
}
|
|
|
|
if (uint.TryParse(value, out _))
|
|
{
|
|
if (multilingual != null) multilingual.Ban = false;
|
|
MultilingualManager.Instance.SetUIText(text, value);
|
|
}
|
|
else
|
|
{
|
|
if (multilingual != null)
|
|
{
|
|
multilingual.ID = 0;
|
|
multilingual.Ban = true;
|
|
}
|
|
|
|
text.text = value;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|