using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using GCGame.Table; using GCGame; public class WorldBoss : MonoBehaviour { public Text m_LeaveBloodRate; public Text m_CostMoney; public Text m_TextDesc; public UICameraTexture m_BossModel; public UIContainerSelect m_BossList; public GameObject RewardJoin; public GameObject RewardBank; public Toggle EnterCopy_Check; public GameObject EnterCopyMessageTip; public GameObject EnterCopyBtn; public Text EnterCopyTip; public UITagPanel _TagPanel; private int m_FirstShowBossID = -1; private void Awake() { Games.Events.EventDispatcher.Instance.Add(Games.Events.EventId.WorldBossInfo,Init); Games.Events.EventDispatcher.Instance.Add(Games.Events.EventId.WorldBossDugTimes, DugTimes); } private void OnDestroy() { Games.Events.EventDispatcher.Instance.Remove(Games.Events.EventId.WorldBossInfo, Init); Games.Events.EventDispatcher.Instance.Remove(Games.Events.EventId.WorldBossDugTimes, DugTimes); } public void SetFirstSelectBossId(int bossID) { m_FirstShowBossID = bossID; } public void ForBidClick() { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{49032}")); } public void OnEnable() { WorldBossData.Instance.SendAskData(); } public void DugTimes(object Times) { Tab_WorldBossConfig TabBoss = TableManager.GetWorldBossConfigByID(WorldBossData.Instance.m_CurrentShowBossId, 0); if (TabBoss == null) return; WorldBossData.BossInfo bossInfo = WorldBossData.Instance.GetBossInfo(WorldBossData.Instance.m_CurrentShowBossId); if (bossInfo == null) return; int count = bossInfo.m_DugUseTimes; if (count >= TabBoss.getMoneyCountCount()) count = TabBoss.getMoneyCountCount() - 1; m_CostMoney.text = TabBoss.GetMoneyCountbyIndex(count).ToString(); m_FirstShowBossID = -1; } public void ShowPage(int index) { if (_TagPanel) _TagPanel.ShowPage(index); } private int ShowPageIndex = 0; public void TagShowPageMain(int page) { ShowPageIndex = page; Init(null); } public void Init(object par) { var shows = new List(); var selects = new List(); var Bosss = TableManager.GetWorldBossConfig(); foreach (var boss in Bosss) { if (ShowPageIndex == boss.Value.ISOtherServer) { shows.Add(boss.Key); if(boss.Key == m_FirstShowBossID) selects.Add(boss.Key); } } if(shows.Count > 0 && selects.Count<=0) selects.Add(shows[0]); m_BossList.InitSelectContent(shows, selects, OnSelectBoss); if(ShowPageIndex == 0) { m_TextDesc.text = StrDictionary.GetClientDictionaryString("#{49057}"); } else { m_TextDesc.text = StrDictionary.GetClientDictionaryString("#{49058}"); } } private void ClearBossInfo(Tab_WorldBossConfig TabBoss) { m_LeaveBloodRate.text = "0%"; int count = 0; if (count >= TabBoss.getMoneyCountCount()) count = TabBoss.getMoneyCountCount() - 1; m_CostMoney.text = TabBoss.GetMoneyCountbyIndex(count).ToString(); m_BossModel.gameObject.SetActive(false); Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(TabBoss.Id, 0); if (RoleBase != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(RoleBase.CharModelID, 0); if (charModel != null) { m_BossModel.gameObject.SetActive(true); m_BossModel.InitModelPath("", charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true); } } InitJoinReward(TabBoss.GetRewardShowbyIndex(0), RewardBank, BackRewards); InitJoinReward(TabBoss.GetRewardShowbyIndex(1), RewardJoin, JoinRewards); WorldBossData.Instance.m_CurrentShowBossId = TabBoss.Id; EnterCopyBtn.SetActive(false); } public void OnSelectBoss(object initInfo) { int bossId = (int)initInfo; Tab_WorldBossConfig TabBoss = TableManager.GetWorldBossConfigByID(bossId, 0); if (TabBoss == null) return; WorldBossData.BossInfo bossInfo = WorldBossData.Instance.GetBossInfo(bossId); if (bossInfo == null) { ClearBossInfo(TabBoss); return; } m_LeaveBloodRate.text = string.Format("{0}%", bossInfo.m_LeaveBloodRate); int count = bossInfo.m_DugUseTimes; if (count >= TabBoss.getMoneyCountCount()) count = TabBoss.getMoneyCountCount() - 1; m_CostMoney.text = TabBoss.GetMoneyCountbyIndex(count).ToString(); m_BossModel.gameObject.SetActive(false); Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(bossId, 0); if (RoleBase != null) { Tab_CharModel charModel = TableManager.GetCharModelByID(RoleBase.CharModelID, 0); if(charModel!=null) { m_BossModel.gameObject.SetActive(true); m_BossModel.InitModelPath("", charModel,LoadAssetBundle.BUNDLE_PATH_MODEL,true); } } InitJoinReward(TabBoss.GetRewardShowbyIndex(0), RewardBank, BackRewards); InitJoinReward(TabBoss.GetRewardShowbyIndex(1), RewardJoin, JoinRewards); WorldBossData.Instance.m_CurrentShowBossId = bossId; EnterCopyBtn.SetActive(!bossInfo.m_Killed); } List JoinRewards = new List(); List BackRewards = new List(); public void InitJoinReward(string items,GameObject cloneObj,List objs) { for (int i=0;i< objs.Count;i++) { objs[i].SetActive(false); } string[] itemIds = items.Split(':'); for(int i=0;i i) { CloneRewardItem(itemID, objs[i], cloneObj); continue; } GameObject newObj = CloneRewardItem(itemID, null, cloneObj); if(newObj!=null) objs.Add(newObj); } } } public GameObject CloneRewardItem(int itemId,GameObject oldItemObj,GameObject cloneObj) { if (oldItemObj == null && cloneObj == null) return null; Tab_CommonItem commonItem = TableManager.GetCommonItemByID(itemId, 0); if (commonItem == null) return null; if (oldItemObj==null) { oldItemObj = GameObject.Instantiate(cloneObj); oldItemObj.transform.SetParent(cloneObj.transform.parent); oldItemObj.transform.localPosition = Vector3.zero; oldItemObj.transform.localScale = cloneObj.transform.localScale; } if (oldItemObj == null) return null; oldItemObj.SetActive(true); Button btn = oldItemObj.GetComponentInChildren