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(){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(){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(){forceName}); MultilingualManager.Instance.SetUIText(Title,Table.Instance.DiplomacyDataAssets.GetDiplomacyAnnounceTextTitle(evt.PlayerActionType)); //DiplomacyState.sprite = Table.Instance.DiplomacyDataAssets.GetDiplomacyAnnounceStateSprite(evt.PlayerActionType); } } } }