125 lines
5.6 KiB
C#
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|