TH1/Unity/Assets/Scripts/TH1_UI/View/Announce/UIAnnounceDiplomacyView.cs
2026-02-14 22:57:12 +08:00

125 lines
5.6 KiB
C#

using System.Collections.Generic;
using Logic;
using Logic.CrashSight;
using Logic.Multilingual;
using RuntimeData;
using TH1_Core.Events;
using TH1_Logic.Action;
using TH1_Logic.Core;
using TH1Resource;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Debug = System.Diagnostics.Debug;
namespace TH1_UI.View.Announce
{
public class UIAnnounceDiplomacyView : Base.View
{
public Button closeButton;
public TextMeshProUGUI Title;
public TextMeshProUGUI Content;
public Image DiplomacyState;
public GameObject ArrowGroupLeft;
public GameObject ArrowGroupRight;
public RectTransform ChatBubble;
public TextMeshProUGUI ChatBubbleText;
public Image CharImage1;
public TextMeshProUGUI LeftForceName;
public TextMeshProUGUI RightForceName;
public Image CharImage2;
public Color AcceptColor;
public Color UnacceptColor;
public ViDelegateAssisstant.Dele OnBtnCloseClick;
public Sprite EmbassyIcon;
public Sprite BreakEmbassyIcon;
public Sprite AllyIcon;
public Sprite BreakAllyIcon;
protected override void OnInit()
{
base.OnInit();
closeButton.onClick.RemoveAllListeners();
closeButton.onClick.AddListener(() => { OnBtnCloseClick.Invoke(); });
}
public void SetContent(ShowUIAnnounceDiplomacy evt)
{
if (Title == null || ChatBubble == null || CharImage1 == null || CharImage2 == null || DiplomacyState == null)
{
LogSystem.LogError("UIAnnounceDiplomacyView.SetContent(): Title or ChatBubble or CharImage1 or CharImage2 or DiplomacyState is null");
return;
}
if (!Main.MapData.PlayerMap.GetPlayerDataByPlayerID(evt.PlayerId, out var player1)) return;
if (!Main.MapData.PlayerMap.GetPlayerDataByPlayerID(evt.TargetPlayerId, out var player2)) return;
bool passive = (player2.Id == Main.MapData.PlayerMap.SelfPlayerId);
Table.Instance.PlayerDataAssets.GetPlayerInfo(player1, out var info1);
Table.Instance.PlayerDataAssets.GetPlayerInfo(player2, out var info2);
CharImage1.sprite = passive ? info2.LeaderAvatar : info1.LeaderAvatar;
CharImage2.sprite = passive ? info1.LeaderAvatar : info2.LeaderAvatar;
string forceName = MultilingualManager.Instance.GetMultilingualTextSafe(passive ? info1.ForceName : info2.ForceName);
player1.GetCountryDiplomacyInfo(player2.Id,out var dipInfo);
player2.GetCountryDiplomacyInfo(player1.Id,out var dipInfo2);
ArrowGroupLeft.gameObject.SetActive(!passive);
ArrowGroupRight.gameObject.SetActive(passive);
LeftForceName.text = MultilingualManager.Instance.GetMultilingualTextSafe(passive ? info2.ForceName:info1.ForceName) + " (" + MultilingualManager.Instance.GetMultilingualTextSafe(Table.Instance.TextDataAssets.PresentationUIDiplomacyYouText) +")";
RightForceName.text = MultilingualManager.Instance.GetMultilingualTextSafe(passive ?info1.ForceName: info2.ForceName);
MultilingualManager.Instance.SetUIText(ChatBubbleText,Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),evt.PlayerActionType));
LayoutRebuilder.ForceRebuildLayoutImmediate(ChatBubble);
//如果是大使馆,特判
if (evt.PlayerActionType == PlayerActionType.Embassy)
{
if (dipInfo.IsEmbassy || dipInfo2.IsEmbassy )
{
DiplomacyState.sprite = EmbassyIcon;
DiplomacyState.color = AcceptColor;
MultilingualManager.Instance.SetUIText(Content,
passive ? Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceEmbassyPassive:
Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceEmbassy,
new List<string>(){forceName});
MultilingualManager.Instance.SetUIText(Title,
passive ? Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceEmbassyPassiveTitle:
Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceEmbassyTitle);
MultilingualManager.Instance.SetUIText(ChatBubbleText,Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),passive ? PlayerActionType.OfferAlly : PlayerActionType.AcceptAlly));
LayoutRebuilder.ForceRebuildLayoutImmediate(ChatBubble);
}
}
else if (evt.PlayerActionType == PlayerActionType.BreakEmbassy)
{
DiplomacyState.sprite = EmbassyIcon;
DiplomacyState.color = UnacceptColor;
DiplomacyState.sprite = BreakEmbassyIcon;
MultilingualManager.Instance.SetUIText(Content,
passive ? Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceBreakEmbassyPassive:
Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceBreakEmbassy,
new List<string>(){forceName});
MultilingualManager.Instance.SetUIText(Title,
passive ? Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceBreakEmbassyPassiveTitle:
Table.Instance.DiplomacyDataAssets.DiplomacyUIAnnounceBreakEmbassyTitle);
MultilingualManager.Instance.SetUIText(ChatBubbleText,Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),PlayerActionType.RefuseAlly));
LayoutRebuilder.ForceRebuildLayoutImmediate(ChatBubble);
}
//其他情况,直接改名字,改图片
else
{
DiplomacyState.sprite = AllyIcon;
DiplomacyState.color = evt.PlayerActionType == PlayerActionType.AcceptAlly ? AcceptColor : UnacceptColor;
MultilingualManager.Instance.SetUIText(Content,Table.Instance.DiplomacyDataAssets.GetDiplomacyAnnounceText(evt.PlayerActionType),new List<string>(){forceName});
MultilingualManager.Instance.SetUIText(Title,Table.Instance.DiplomacyDataAssets.GetDiplomacyAnnounceTextTitle(evt.PlayerActionType));
//DiplomacyState.sprite = Table.Instance.DiplomacyDataAssets.GetDiplomacyAnnounceStateSprite(evt.PlayerActionType);
}
}
}
}