using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Games.LogicObj; using GCGame.Table; using Games.GlobeDefine; using Module.Log; public class ActivePresious : MonoBehaviour { public Text title; public Text TeamNeed; public Text BossName; public UICameraTexture ModelTexture; public GameObject cloneItem; public GameObject cloneAwardItem; public Text KillOverTip; public struct sceneBossInfo { public int sceneID; public int insID; //分线ID public int ServerID; public int PosX; public int PosY; public ulong GuildGuid; public void Clear() { sceneID = -1; insID = -1; ServerID = -1; PosX = -1; PosY = -1; GuildGuid = GlobeVar.INVALID_GUID; } } private ActivityDataManager.Activity_Type activeType = ActivityDataManager.Activity_Type.ACTIVITY_INVALID; private List m_Items = new List(); private List itemPrefabList = new List(); private Dictionary> m_bossInfo = new Dictionary>(); private int m_CurrentBossRoleID = -1; void Awake() { Hashtable add = new Hashtable(); add["name"] = "ActivePresious"; Games.Events.MessageEventCallBack call = UpdateData; add["callFun"] = call; Games.Events.EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.UpdateActivePresiousWnd, add); Hashtable add1 = new Hashtable(); add1["name"] = "OpenActiveWnd"; Games.Events.MessageEventCallBack call1 = OpenActiveWnd; add1["callFun"] = call1; Games.Events.EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.OpenActivePresiousWnd, add1); } public void OpenActiveWnd(Hashtable addparam, Hashtable sendparam) { if (sendparam.Contains("ActiveType") == false) return; int type = (int)sendparam["ActiveType"]; activeType = (ActivityDataManager.Activity_Type)type; Tab_ActivityBase activityBase = null; var activityBases = TableManager.GetActivityBase().Values; foreach (var activity in activityBases) { if (activity != null && activity.ActivityServerType == (int)activeType) { activityBase = activity; break; } } if (activityBase == null) return; Ask_Info(); title.text = activityBase.ActivityName; if (activityBase.ActivityServerType == 8) { TeamNeed.text = StrDictionary.GetClientDictionaryString("#{22019}"); }else if (activityBase.ActivityServerType == 4) { TeamNeed.text = StrDictionary.GetClientDictionaryString("#{22020}"); }else if (activityBase.ActivityServerType == 10) { TeamNeed.text = StrDictionary.GetClientDictionaryString("#{22021}"); }else if (activityBase.ActivityServerType == 9) { TeamNeed.text = StrDictionary.GetClientDictionaryString("#{22022}"); }else TeamNeed.text = StrDictionary.GetClientDictionaryString("#{22019}"); var misers = TableManager.GetActivityMiser().Values; foreach (var miser in misers) { if (miser.ActivityType == (int)activeType) { Tab_RoleBaseAttr role = TableManager.GetRoleBaseAttrByID(miser.NpcId, 0); if (role != null) { m_CurrentBossRoleID = miser.NpcId; BossName.text = role.Name; Tab_CharModel model = TableManager.GetCharModelByID(role.CharModelID, 0); if (model != null) { ModelTexture.InitModelPath(model.ResPath,model, LoadAssetBundle.BUNDLE_PATH_PET, true); } } return; } } } void OnDestroy() { Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.UpdateActivePresiousWnd, "ActivePresious"); Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.OpenActivePresiousWnd, "OpenActiveWnd"); } public void UpdateData(Hashtable addparam, Hashtable sendparam) { if (sendparam.ContainsKey("packet") == false) return; int RobberTotle = (sendparam.ContainsKey("RobberTotle") ? ((int)sendparam["RobberTotle"]) : 0); List sceneBosss = (List)sendparam["packet"]; Tab_ActivityBase activityBase = null; var activityBases = TableManager.GetActivityBase().Values; foreach (var activity in activityBases) { if (activity != null && activity.ActivityServerType == (int)activeType) { activityBase = activity; break; } } if (activityBase == null) return; string[] m_itemId = activityBase.Reward.Split('|'); ClearPrefab(); for (int index = 0; index < m_itemId.Length; index++) { int DataID = -1; int.TryParse(m_itemId[index],out DataID); Tab_CommonItem commonItem = TableManager.GetCommonItemByID(DataID, 0); if (commonItem == null) { continue; } GameObject m_ItemPrefab = GameObject.Instantiate(cloneAwardItem); m_ItemPrefab.SetActive(true); m_ItemPrefab.transform.SetParent(cloneAwardItem.transform.parent); m_ItemPrefab.transform.localScale = Vector3.one; m_ItemPrefab.transform.localRotation = Quaternion.Euler(Vector3.zero); m_ItemPrefab.GetComponent().initItem(DataID); itemPrefabList.Add(m_ItemPrefab); } for(int i=0;i< m_Items.Count;i++) { GameObject.DestroyImmediate(m_Items[i]); } m_Items.Clear(); m_bossInfo.Clear(); Dictionary scenes = new Dictionary(); for(int i=0;i(); m_bossInfo[bossInfo.sceneID].Add(bossInfo); } if(scenes.ContainsKey(bossInfo.sceneID)==false) { scenes[bossInfo.sceneID] = 1; } else { int count = scenes[bossInfo.sceneID] + 1; scenes[bossInfo.sceneID] = count; } } int BOSSLeave = 0; foreach(var scene in scenes) { if(scene.Value>0) { CloneItem(scene.Key, RobberTotle == 0 ? scene.Value: RobberTotle); BOSSLeave++; } } KillOverTip.gameObject.SetActive(BOSSLeave <= 0); if (BOSSLeave <= 0) { KillOverTip.text = StrDictionary.GetClientDictionaryString("#{22018}"); } } public void ClearPrefab() { for (int index = 0; index < itemPrefabList.Count; index++) { GameObject.Destroy(itemPrefabList[index]); } itemPrefabList.Clear(); } public void CloneItem(int sceneID,int count) { if (cloneItem == null) return; GameObject item = GameObject.Instantiate(cloneItem) as GameObject; if (item == null) return; item.SetActive(true); item.transform.parent = cloneItem.transform.parent; item.transform.localPosition = cloneItem.transform.localPosition; item.transform.localScale = cloneItem.transform.localScale; m_Items.Add(item); Transform sceneChild = item.transform.Find("sceneName"); if(sceneChild != null) { Text sceneName = sceneChild.GetComponent(); if(sceneName != null) { Tab_SceneClass sceneInfo = TableManager.GetSceneClassByID(sceneID, 0); if(sceneInfo!=null) { sceneName.text = sceneInfo.Name; } } } Transform LeaveNum = item.transform.Find("Leave"); if (LeaveNum != null) { Text LeaveText = LeaveNum.GetComponent(); if (LeaveText != null) { LeaveText.text = count.ToString(); } } Button btn = item.GetComponentInChildren