using UnityEngine; using UnityEngine.UI; using System; using System.Collections.Generic; namespace vnxbqy.UI { public class AssistPlayerCell : MonoBehaviour { [SerializeField] Text nameText; [SerializeField] Text lvText; [SerializeField] GameObject lvIcon; [SerializeField] AvatarCell avatarCell; [SerializeField] Image realmIcon; [SerializeField] Button helpBtn; [SerializeField] Image helpBgImg; [SerializeField] Text helpText; [SerializeField] Button goldHelpBtn; [SerializeField] Text goldHelpText; [SerializeField] Text fightPowerText; [SerializeField] Text rewardText; [SerializeField] Image relationImg; [SerializeField] Text jobNameText; FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel(); } } DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } DungeonAssistModel.AssistPlayerInfo playerInfo = null; private void OnEnable() { goldHelpBtn.AddListener(ClickGoldHelp); assistModel.UpdataAssistPlayerEvent += UpdateAssistState; } private void OnDisable() { goldHelpBtn.RemoveAllListeners(); assistModel.UpdataAssistPlayerEvent -= UpdateAssistState; } public void SetDisplay(int playerId) { playerInfo = assistModel.GetAssistPlayerInfo(playerId); if (playerInfo == null) return; nameText.text = playerInfo.Name; avatarCell.InitUI(AvatarHelper.GetAvatarModel(playerInfo.PlayerID, playerInfo.Face, playerInfo.FacePic, playerInfo.Job)); int realmLv = playerInfo.RealmLV; var realmConfig = RealmConfig.Get(playerInfo.RealmLV); realmIcon.SetSprite(realmConfig == null ? "NoRealm" : realmConfig.Img); fightPowerText.text = StringUtility.Contact(Language.Get("MainInterfacePanel_HeadPortraitTip_ZL"),playerInfo.FightPower); UpdateAssistState(playerInfo.PlayerID); jobNameText.text = OccupationNameConfig.GetOccupationName(playerInfo.Job); UpdateAssistReward(); UpdateRelation(); int nirvanaLv = playerInfo.LV - friendsModel.OpenGreatLV; lvIcon.SetActive(nirvanaLv > 0); if (nirvanaLv > 0) { lvText.text = nirvanaLv.ToString(); } else { lvText.text = playerInfo.LV.ToString(); } } public void UpdateAssistState(int playerId) { if (playerInfo == null || playerInfo.PlayerID != playerId) return; helpBtn.RemoveAllListeners(); if (playerInfo.IsAssist) { helpBtn.SetActive(true); goldHelpBtn.SetActive(false); helpText.text = Language.Get("DungeonAssist122"); helpBgImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); } else { goldHelpBtn.SetActive(playerInfo.IsGoldAssist); helpBtn.SetActive(!playerInfo.IsGoldAssist); if (playerInfo.IsGoldAssist) { goldHelpText.text = assistModel.goldAssistPlayer.ToString(); } else { helpBtn.AddListener(ClickHelp); helpText.text = Language.Get("DungeonAssist121"); helpBgImg.material = MaterialUtility.GetUIDefaultGraphicMaterial(); } } } public void UpdateAssistReward() { if (playerInfo == null) return; var related = playerInfo.relatedToPlayer; List rewards = null; int sumCoins = 0; switch (related) { case DungeonAssistModel.RelatedToPlayer.Ally: sumCoins = assistModel.GetAssistReward(2); break; case DungeonAssistModel.RelatedToPlayer.Friend: case DungeonAssistModel.RelatedToPlayer.FriendAndAlly: sumCoins = assistModel.GetAssistReward(1); break; } if (sumCoins > 0) { rewardText.SetActive(true); rewardText.text = Language.Get("DungeonAssist127", sumCoins); } else { rewardText.SetActive(false); } } public void UpdateRelation() { if (playerInfo == null) return; relationImg.SetActive(playerInfo.relatedToPlayer != DungeonAssistModel.RelatedToPlayer.None); switch (playerInfo.relatedToPlayer) { case DungeonAssistModel.RelatedToPlayer.Friend: relationImg.SetSprite("XT_FBZZ_04"); break; case DungeonAssistModel.RelatedToPlayer.Ally: relationImg.SetSprite("XT_FBZZ_05"); break; } } private void ClickHelp() { if (playerInfo == null) return; HelpTip(); assistModel.SendPlayerAssist(0,playerInfo.PlayerID,playerInfo.IsNeedGold); } private void ClickGoldHelp() { ulong haveMoney = UIHelper.GetMoneyCnt(2); ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),Language.Get("DungeonAssist131",assistModel.goldAssistPlayer), (bool isOk)=> { if(isOk) { if(haveMoney >= (ulong)assistModel.goldAssistPlayer) { HelpTip(); assistModel.SendPlayerAssist(0, playerInfo.PlayerID, playerInfo.IsNeedGold); } else { //WindowCenter.Instance.Open(); SysNotifyMgr.Instance.ShowTip("LackMoney", 2); } } }); } private void HelpTip() { if (assistModel.GetAlreadyAssistNum() < 2) { SysNotifyMgr.Instance.ShowTip("SummonAssistant1"); } else { SysNotifyMgr.Instance.ShowTip("SummonAssistant2"); } } } }