152 lines
6.2 KiB
C#
152 lines
6.2 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 = Logic.PlayerLogic.GetDisplayForceName(Main.MapData, passive ? player1 : player2);
|
|
player1.GetCountryDiplomacyInfo(player2.Id,out var dipInfo);
|
|
player2.GetCountryDiplomacyInfo(player1.Id,out var dipInfo2);
|
|
ArrowGroupLeft.gameObject.SetActive(!passive);
|
|
ArrowGroupRight.gameObject.SetActive(passive);
|
|
LeftForceName.text = Logic.PlayerLogic.GetDisplayForceName(Main.MapData, passive ? player2 : player1) + " (" + MultilingualManager.Instance.GetMultilingualTextSafe(Table.Instance.TextDataAssets.PresentationUIDiplomacyYouText) +")";
|
|
RightForceName.text = Logic.PlayerLogic.GetDisplayForceName(Main.MapData, passive ? player1 : player2);
|
|
var chatText = Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),evt.PlayerActionType);
|
|
if (string.IsNullOrEmpty(chatText))
|
|
{
|
|
ChatBubble.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
ChatBubble.gameObject.SetActive(true);
|
|
MultilingualManager.Instance.SetUIText(ChatBubbleText, chatText);
|
|
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);
|
|
|
|
var embassyChatText = Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),passive ? PlayerActionType.OfferAlly : PlayerActionType.AcceptAlly);
|
|
if (string.IsNullOrEmpty(embassyChatText))
|
|
{
|
|
ChatBubble.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
ChatBubble.gameObject.SetActive(true);
|
|
MultilingualManager.Instance.SetUIText(ChatBubbleText, embassyChatText);
|
|
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);
|
|
var breakChatText = Table.Instance.DiplomacyDataAssets.GetDiplomacyTextByAction((Forces)(passive ? player1.PlayerForceId : player2.PlayerForceId),PlayerActionType.RefuseAlly);
|
|
if (string.IsNullOrEmpty(breakChatText))
|
|
{
|
|
ChatBubble.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
ChatBubble.gameObject.SetActive(true);
|
|
MultilingualManager.Instance.SetUIText(ChatBubbleText, breakChatText);
|
|
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
}
|