//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, April 15, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class HazyGrassDungeonWin : Window { [SerializeField] DungeonTargetBehaviour m_DungeonTarget; [SerializeField] HazyGrassCountBeha[] m_GrassCountBehas; [SerializeField] Text[] m_GrassTimes; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } HazyRegionModel hazyRegionModel { get { return ModelCenter.Instance.GetModel(); } } HazyGrassModel hazyGrassModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { Display(); hazyGrassModel.onMapNpcCountRefresh += OnMapNpcCountRefresh; if (PlayerDatas.Instance.baseData.MapID == HazyGrassModel.FAIRY_CLIENTDATAMAP || PlayerDatas.Instance.baseData.MapID == HazyGrassModel.FAIRY_DATAMAP) { packModel.refreshItemCountEvent += RefreshItemCountEvent; } } protected override void OnAfterOpen() { } protected override void OnPreClose() { hazyGrassModel.onMapNpcCountRefresh -= OnMapNpcCountRefresh; packModel.refreshItemCountEvent -= RefreshItemCountEvent; } private void RefreshItemCountEvent(PackType packType, int arg2, int itemId) { if (packType == PackType.Item) { var mapId = 0; if (ClientDungeonStageUtility.isClientDungeon) { var incidentId = hazyRegionModel.GetIncidentId(ClientDungeonStageUtility.dungeonInfo.mapId, ClientDungeonStageUtility.dungeonInfo.lineId); mapId = hazyGrassModel.GetGrassMapId(incidentId); } else { mapId = PlayerDatas.Instance.baseData.MapID; } var npcInfos = hazyGrassModel.GetGrassNpcInfos(mapId); for (int i = 0; i < npcInfos.Count; i++) { var _itemId = hazyGrassModel.GetGrassNpcItemId(npcInfos[i]); if (_itemId == itemId) { DisplayGrassCount(); return; } } } } protected override void OnAfterClose() { } protected override void LateUpdate() { base.LateUpdate(); } #endregion void Display() { if (ClientDungeonStageUtility.isClientDungeon) { var incidentId = hazyRegionModel.GetIncidentId(ClientDungeonStageUtility.dungeonInfo.mapId, ClientDungeonStageUtility.dungeonInfo.lineId); var config = HazyRegionConfig.Get(incidentId); m_DungeonTarget.Init(config.dungeonId, config.lineId); } else { var mapId = PlayerDatas.Instance.baseData.MapID; m_DungeonTarget.Init(mapId, PlayerDatas.Instance.baseData.dungeonLineId); } DisplayGrassRefreshTime(); DisplayGrassCount(); } void DisplayGrassCount() { var mapId = 0; if (ClientDungeonStageUtility.isClientDungeon) { var incidentId = hazyRegionModel.GetIncidentId(ClientDungeonStageUtility.dungeonInfo.mapId, ClientDungeonStageUtility.dungeonInfo.lineId); mapId = hazyGrassModel.GetGrassMapId(incidentId); } else { mapId = PlayerDatas.Instance.baseData.MapID; } var npcInfos = hazyGrassModel.GetGrassNpcInfos(mapId); for (int i = 0; i < m_GrassCountBehas.Length; i++) { if (npcInfos != null && i < npcInfos.Count) { m_GrassCountBehas[i].SetActive(true); m_GrassCountBehas[i].Display(npcInfos[i], hazyGrassModel.GetMapNpcCount(npcInfos[i])); } else { m_GrassCountBehas[i].SetActive(false); } } } void DisplayGrassRefreshTime() { for (int i = 0; i < m_GrassTimes.Length; i++) { m_GrassTimes[i].SetActive(false); } } private void OnMapNpcCountRefresh() { DisplayGrassCount(); } [Serializable] public class HazyGrassCountBeha { [SerializeField] Transform m_Container; [SerializeField] Text m_Title; [SerializeField] Text m_Count; [SerializeField] Transform m_ContainerItem; [SerializeField] Text m_ItemCount; HazyGrassModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int npcId, int count) { var npcConfig = NPCConfig.Get(npcId); m_Title.text = Language.Get("HazyGrassCountTitle", npcConfig.charName); m_Count.text = count.ToString(); m_Count.color = UIHelper.GetUIColor(count > 0 ? TextColType.Green : TextColType.Red); m_ContainerItem.SetActive(PlayerDatas.Instance.baseData.MapID == HazyGrassModel.FAIRY_CLIENTDATAMAP || PlayerDatas.Instance.baseData.MapID == HazyGrassModel.FAIRY_DATAMAP); if (m_ContainerItem.gameObject.activeSelf) { var itemId = model.GetGrassNpcItemId(npcId); var itemCount = packModel.GetItemCountByID(PackType.Item, itemId); m_ItemCount.text = itemCount.ToString(); m_ItemCount.color = UIHelper.GetUIColor(itemCount > 0 ? TextColType.Green : TextColType.Red); } } public void SetActive(bool active) { m_Container.SetActive(active); } } } }