using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class DungeonGetXianYuanCoinsBehvaiour : MonoBehaviour { [SerializeField] Text getCoinsText; DungeonModel m_Model; DungeonModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel(); } } Window window = null; string xianYuanCoinsInfo = string.Empty; DungeonOpenTimeConfig dungeonOpenTime; private void OnEnable() { SetDisplay(); GetParentWindow(this.transform); model.updateMissionEvent += SetDisplay; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdateVipLv; WindowCenter.Instance.windowBeforeOpenEvent += BeforeOpen; } private void OnDisable() { model.updateMissionEvent -= SetDisplay; WindowCenter.Instance.windowBeforeOpenEvent -= BeforeOpen; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdateVipLv; } private void UpdateVipLv(PlayerDataRefresh type) { if (type != PlayerDataRefresh.VIPLv) return; SetDisplay(); } public void SetDisplay() { dungeonOpenTime = DungeonOpenTimeConfig.Get(PlayerDatas.Instance.baseData.MapID); xianYuanCoinsInfo = string.Empty; if (dungeonOpenTime != null) { if (dungeonOpenTime.FBPoint != 0) { UpdateSocialAdd(); string addRatio = string.Empty; bool isVipAddRatio = assistModel.TryGetCurVipAddRatio(out addRatio); if (isVipAddRatio) { xianYuanCoinsInfo = StringUtility.Contact(xianYuanCoinsInfo, "\n", Language.Get("DungeonAssist142", Language.Get("DungeonAssist143", addRatio))); } else { xianYuanCoinsInfo = StringUtility.Contact(xianYuanCoinsInfo, "\n", Language.Get("DungeonAssist142", Language.Get("Market_Text_33"))); } getCoinsText.text = xianYuanCoinsInfo; this.gameObject.SetActive(true); } else { this.gameObject.SetActive(false); } } else { this.gameObject.SetActive(false); } } public void UpdateSocialAdd() { int addCoins = 0; var mission = model.mission; int mapId = PlayerDatas.Instance.baseData.MapID; MapConfig mapConfig = MapConfig.Get(mapId); if(mapConfig.MapFBType != 1) { bool isHelp = mission.isHelp == 1; if(mission.relation != null && mission.relation.Length > 1) { addCoins = mission.relation[1]; } if (!isHelp) { if (addCoins > 0) { xianYuanCoinsInfo = Language.Get("DungeonAssist141", StringUtility.Contact(dungeonOpenTime.FBPoint, "+", addCoins)); } else { xianYuanCoinsInfo = Language.Get("DungeonAssist141", dungeonOpenTime.FBPoint); } } else { int remainNum = 0; bool isRemain = assistModel.TryGetRemainAssistNum(mapId, out remainNum); if (isRemain) { if(addCoins > 0) { xianYuanCoinsInfo = Language.Get("DungeonAssist147", StringUtility.Contact(dungeonOpenTime.HelpPoint, "+", addCoins)); } else { xianYuanCoinsInfo = Language.Get("DungeonAssist147", dungeonOpenTime.HelpPoint); } } else { xianYuanCoinsInfo = Language.Get("DungeonAssist147", StringUtility.Contact("+", 0)); } } } else { bool isAddCoins = assistModel.TryGetRewardAdd(out addCoins); if (isAddCoins) { xianYuanCoinsInfo = Language.Get("DungeonAssist141", StringUtility.Contact(dungeonOpenTime.FBPoint, "+", addCoins)); } else { xianYuanCoinsInfo = Language.Get("DungeonAssist141", dungeonOpenTime.FBPoint); } } } public void GetParentWindow(Transform obj) { var _window = obj.GetComponent(); if(_window == null) { var parent = obj.transform.parent; GetParentWindow(parent); } else { this.window = _window; } } private void BeforeOpen(Window win) { if (window == null || win != window) return; SetDisplay(); } } }