using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using GCGame.Table; using Games.GlobeDefine; using Module.Log; using GCGame; using Games.Mission; using Games.Item; public class MissionLogLogic : MonoBehaviour { public UISubScollMenu _MissionClass; public GameObject _MissionBounsPanel; // 任务信息相关 public Text _MissionTitle; public Text _MissionTarget; public Text m_MissionDec; public GameObject _MissionInfoPanel; public GameObject _NoneMissionPanel; public GameObject _BtnAbandom; public UIContainerBase _MissionBonus; private int m_CurMissionID; private Dictionary _MissionNameToID = new Dictionary(); private static MissionLogLogic m_Instance = null; public static MissionLogLogic Instance() { return m_Instance; } private int m_nSelectMissionID = GlobeVar.INVALID_ID; public int SelectMissionID { get { return m_nSelectMissionID; } set { m_nSelectMissionID = value; } } enum ItemType { ITEM_MONEY, ITEM_EXP, ITEM_YUANBAO, ITEM_ITEM, } void Awake() { m_Instance = this; } // Use this for initialization void OnEnable () { ShowDefaultFirst(); InitWindow(); } public void ShowDefaultFirst() { ShowPage(0); } void OnDestroy() { m_Instance = null; } public void CloseWindow() { UIManager.CloseUI(UIInfo.MissionLogRoot); } void InitWindow() { m_CurMissionID = -1; InitAcceptedMission(); var missionList = GameManager.gameManager.MissionManager.GetClassifyCanAcceptMission(); InitRedDotTips(); } public List _MenuMarkIconList; public List _PanelsList; public void ShowPage(int page) { for(int index = 0; index < _MenuMarkIconList.Count; index ++) { _MenuMarkIconList[index].SetActive(index == page); _PanelsList[index].SetActive(index == page); } if (page == 0) { InitAcceptedMission(); } else if(page == 1) { InitCanAcceptMission(); } } public void InitAcceptedMission() { var missionList = GameManager.gameManager.MissionManager.GetClassifyMission(); //不显示指引任务 if(missionList.ContainsKey(MISSIONTYPE.MISSION_GUIDE)) { missionList.Remove(MISSIONTYPE.MISSION_GUIDE); } //宝图已删,保留枚举(要删的地方比较多) if (missionList.ContainsKey(MISSIONTYPE.MISSION_TREASURE)) { missionList.Remove(MISSIONTYPE.MISSION_TREASURE); } _MissionNameToID.Clear(); _MissionClass.Clear(); if (missionList.Count == 0) { _MissionInfoPanel.SetActive(false); _NoneMissionPanel.SetActive(true); _BtnAbandom.SetActive(false); return; } _NoneMissionPanel.SetActive(false); _MissionInfoPanel.SetActive(true); _BtnAbandom.SetActive(true); foreach (var missionTypes in missionList) { var missionClassItemInfo = new MisisonLogClassItemInfo((MISSIONTYPE)missionTypes.Key, -1); _MissionClass.PushMenu(missionClassItemInfo, missionTypes.Value.ToArray()); } _MissionClass.ShowDefaultFirst(); } public struct MisisonLogClassItemInfo { public MISSIONTYPE type; public int missionId; public MisisonLogClassItemInfo(MISSIONTYPE _type, int _missionId) { type = _type; missionId = _missionId; } } public void InitCanAcceptMission() { var missionLimitDic = TableManager.GetMissionLimit().Values; var missionList = new List(); var canAcceptMissionTypeList = new List(); foreach (var mission in missionLimitDic) { if (mission.IsShow != 1) continue; var id = mission.GetId(); var missionBase = TableManager.GetMissionBaseByID(id, 0); if (missionBase == null) continue; var missionClassItemInfo = new MisisonLogClassItemInfo((MISSIONTYPE)missionBase.MissionType, id); //不显示宝图任务 if ((MISSIONTYPE)missionBase.MissionType != MISSIONTYPE.MISSION_TREASURE && !canAcceptMissionTypeList.Contains((MISSIONTYPE)missionBase.MissionType) && GameManager.gameManager.MissionManager.CanAcceptMission(id)) { missionList.Add(missionClassItemInfo); canAcceptMissionTypeList.Add((MISSIONTYPE)missionBase.MissionType); } } _MissionNameToID.Clear(); _MissionClass.Clear(); if (missionList.Count == 0) { _MissionInfoPanel.SetActive(false); _NoneMissionPanel.SetActive(true); _BtnAbandom.SetActive(false); return; } _NoneMissionPanel.SetActive(false); _MissionInfoPanel.SetActive(true); _BtnAbandom.SetActive(true); for (int index = 0; index < missionList.Count; index++) { _MissionClass.PushMenu(missionList[index]); } _MissionClass.ShowDefaultFirst(); } public static string GetMissionTypeStr(MISSIONTYPE missionType) { switch (missionType) { case MISSIONTYPE.MISSION_MAIN: return StrDictionary.GetClientDictionaryString("#{3693}"); case MISSIONTYPE.MISSION_BRANCH: return StrDictionary.GetClientDictionaryString("#{4713}"); case MISSIONTYPE.MISSION_INSEC: return StrDictionary.GetClientDictionaryString("#{7022}"); case MISSIONTYPE.MISSION_ONEDRONG: return StrDictionary.GetClientDictionaryString("#{5100}"); case MISSIONTYPE.MISSION_DAILY: return StrDictionary.GetClientDictionaryString("#{4714}"); case MISSIONTYPE.MISSION_GUILDTRANSPORT: return StrDictionary.GetClientDictionaryString("#{4915}"); case MISSIONTYPE.MISSION_GUILDPAOSHANG: return StrDictionary.GetClientDictionaryString("#{4913}"); case MISSIONTYPE.MISSION_GUILDDRAGONWAR: return StrDictionary.GetClientDictionaryString("#{4914}"); case MISSIONTYPE.MISSION_GUILDWINE: return StrDictionary.GetClientDictionaryString("#{4916}"); case MISSIONTYPE.MISSION_TREASURE: return StrDictionary.GetClientDictionaryString("#{4917}"); case MISSIONTYPE.MISSION_CIRCLE: return StrDictionary.GetClientDictionaryString("#{1980}"); case MISSIONTYPE.MISSION_WEEKCIRCLE: return StrDictionary.GetClientDictionaryString("#{6711}"); case MISSIONTYPE.MISSION_BATTLE: return StrDictionary.GetClientDictionaryString("#{4941}"); case MISSIONTYPE.MISSION_CROSSSERVERPOST: return StrDictionary.GetClientDictionaryString("#{4959}"); case MISSIONTYPE.MISSION_CROSSSERVERKILLMONSTER: return StrDictionary.GetClientDictionaryString("#{4960}"); } return ""; } public void BtnMissionItemClick(object obj) { int missionID = -1; MisisonLogClassItemInfo missionLogItemInfo; if (obj is MisisonLogClassItemInfo) { missionLogItemInfo = (MisisonLogClassItemInfo)obj; missionID = missionLogItemInfo.missionId; }else if(obj is int) { missionID = (int)obj; } if(missionID != -1) m_CurMissionID = missionID; var misDiction = TableManager.GetMissionDictionaryByID(missionID, 0); if(misDiction != null) m_MissionDec.text = StrDictionary.GetClientString_WithNameSex(misDiction.MissionDesc); Tab_MissionDictionary missionDic = TableManager.GetMissionDictionaryByID(missionID, 0); if (missionDic != null) { _MissionTitle.text = missionDic.MissionName; } ShowMissionBonus(missionID); } public void ShowMissionBonus(int nMissionID) { Tab_MissionBase misLine = TableManager.GetMissionBaseByID(nMissionID, 0); if (misLine == null) { return; } if (misLine.BonusID > -1) { //显示奖励内容 Tab_MissionBonus bonusTab = TableManager.GetMissionBonusByID(misLine.BonusID, 0); if (bonusTab != null) { List missionItemList = new List(); //经济系统奖励 //int nIndex = 0; //如果有经验 if (bonusTab.Exp > 0) { var missionParam = new CommonItemContainerItem.ItemInfo(); missionParam.itemNum = bonusTab.Exp; missionParam.itemSprite = "jingyan"; missionItemList.Add(missionParam); } //如果有金币 if (bonusTab.Money > 0) { var missionParam = new CommonItemContainerItem.ItemInfo(); missionParam.itemNum = bonusTab.Money; missionParam.itemSprite = "jinbi"; missionItemList.Add(missionParam); } //如果有绑定元宝 if (bonusTab.BindYuanBao > 0) { var missionParam = new CommonItemContainerItem.ItemInfo(); missionParam.itemNum = bonusTab.BindYuanBao; missionParam.itemSprite = "yinpiao"; missionItemList.Add(missionParam); } // 显示物品 for (int i = 0; i < bonusTab.getToolIDCount(); i++) { int itemID = bonusTab.GetToolIDbyIndex(i); int itemNum = bonusTab.GetToolNumbyIndex(i); if (itemID > 0 && itemNum > 0) { missionItemList.Add(new CommonItemContainerItem.ItemInfo() { itemID = itemID, itemNum = itemNum }); } } int nProfess = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession; if (nProfess >= 0 && nProfess < bonusTab.getProfessionItemIDCount()) { int itemID = bonusTab.GetProfessionItemIDbyIndex(nProfess); if (itemID > 0) { missionItemList.Add(new CommonItemContainerItem.ItemInfo() { itemID = itemID, itemNum = 1 }); } } // 多选物品 int nChoosedItemdNum = bonusTab.ChoosedItemNum; if (nChoosedItemdNum > 0 && nChoosedItemdNum <= bonusTab.getItemIDCount()) { int itemID = bonusTab.GetItemIDbyIndex(nChoosedItemdNum - 1); int itemNum = bonusTab.GetItemNumbyIndex(nChoosedItemdNum - 1); if (itemID > 0 && itemNum > 0) { missionItemList.Add(new CommonItemContainerItem.ItemInfo() { itemID = itemID, itemNum = itemNum }); } } if(missionItemList.Count > 0) { _MissionBounsPanel.SetActive(true); _MissionBonus.InitContentItem(missionItemList, ItemTipClick); }else { _MissionBounsPanel.SetActive(false); } } } } public void ItemTipClick(object param) { CommonItemContainerItem.ItemInfo itemParam = (CommonItemContainerItem.ItemInfo)param; if (itemParam.itemID <= -1) { return; } GameItem item = new GameItem(); item.DataID = itemParam.itemID; if (item.IsEquipMent()) { SpecialItemClick(item); EquipTooltipsLogic.ShowEquipTooltip(item, ItemTooltipsLogic.ShowType.Info, transform.position); } else { ItemTooltipsLogic.ShowItemTooltip(item, ItemTooltipsLogic.ShowType.Info, transform.position); } } // 立即前往 public void GotoButtonClick() { if (m_CurMissionID < 0) { return; } var missionBase = TableManager.GetMissionBaseByID(m_CurMissionID, 0); if(missionBase.MissionType == (int)MISSIONTYPE.MISSION_INSEC) { int autosearchId = Games.GlobeDefine.GlobeVar.GetMasterAutosearchId(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession); Tab_AutoSearch searchTab = TableManager.GetAutoSearchByID(autosearchId, 0); if (searchTab == null) { return; } //接受任务后自动寻路 Vector3 pos = new Vector3(); pos.x = searchTab.X; pos.z = searchTab.Z; int sceneId = searchTab.DstSceneID; AutoSearchPoint targetPoint = new AutoSearchPoint(sceneId, pos.x, pos.z); if (GameManager.gameManager && GameManager.gameManager.AutoSearch) { GameManager.gameManager.AutoSearch.BuildPath(targetPoint); Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(searchTab.DataId, 0); if (null != RoleBase && null != GameManager.gameManager.AutoSearch.Path) { GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = RoleBase.Name; GameManager.gameManager.AutoSearch.Path.autoSearchRadius = RoleBase.DialogRadius; } } } else if(missionBase.MissionType == (int)MISSIONTYPE.MISSION_GUILDDRAGONWAR || missionBase.MissionType == (int)MISSIONTYPE.MISSION_GUILDPAOSHANG || missionBase.MissionType == (int)MISSIONTYPE.MISSION_GUILDTRANSPORT) { if (GameManager.gameManager.PlayerDataPool.IsHaveGuild() == false) { // 加入帮派提醒 GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6707}")); return; } //帮派等级小于4返回 var guidTab = TableManager.GetGuildOtherByID(0, 0); if (guidTab == null) { LogModule.ErrorLog("guidTab is null"); return; } if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildLevel < guidTab.RobberNeedGuildLevel) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6709}")); return; } Tab_ActivityBase activityBase = null; switch(missionBase.MissionType) { case (int)MISSIONTYPE.MISSION_GUILDTRANSPORT: activityBase = TableManager.GetActivityBaseByID(11, 0); break; case (int)MISSIONTYPE.MISSION_GUILDDRAGONWAR: activityBase = TableManager.GetActivityBaseByID(13, 0); break; case (int)MISSIONTYPE.MISSION_GUILDPAOSHANG: activityBase = TableManager.GetActivityBaseByID(12, 0); break; } string[] paramaters = activityBase.Parameter.Split('|'); int roleId = int.Parse(paramaters[0]); float posX = float.Parse(paramaters[1]); float posZ = float.Parse(paramaters[2]); GameManager.gameManager.AutoSearch.BackGuild(GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid, int.Parse(paramaters[0]), float.Parse(paramaters[1]), float.Parse(paramaters[2])); } else { Tab_MissionDictionary MDLine = TableManager.GetMissionDictionaryByID(m_CurMissionID, 0); if (MDLine == null) { return; } if (GameManager.gameManager.MissionManager != null) { GameManager.gameManager.MissionManager.MissionPathFinder(m_CurMissionID); } } CloseWindow(); } // 放弃任务 public void AbandonButtonClick() { Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(m_CurMissionID, 0); if (missionBase == null) return; if (missionBase.MissionType == (int)MISSIONTYPE.MISSION_ONEDRONG) //一条龙任务 { MessageBoxLogic.OpenOKCancelBox(1975, 1000, delegate () { if (GameManager.gameManager.MissionManager != null) { GameManager.gameManager.MissionManager.AbandonMission(m_CurMissionID); CloseWindow(); } }, null); return; } if (GameManager.gameManager.MissionManager != null) { GameManager.gameManager.MissionManager.AbandonMission(m_CurMissionID); } CloseWindow(); } void SpecialItemClick(GameItem gItem) { int nItemStarLevel = 0; if (m_CurMissionID == 233) { nItemStarLevel = 12; } else if (m_CurMissionID == 234) { nItemStarLevel = 24; } else if (m_CurMissionID == 235) { nItemStarLevel = 36; } if (nItemStarLevel > 0) { gItem.StarLevel = nItemStarLevel; } } #region missionCheckedTips public GameObject _RedDotTips; public void InitRedDotTips() { _RedDotTips.SetActive(false); //if (!GameManager.gameManager.MissionManager.IsMissionChecked()) //{ // _RedDotTips.SetActive(true); //} //else //{ // _RedDotTips.SetActive(false); //} } public void UpdateInitRedDotTips() { InitRedDotTips(); var classItems = GetComponentsInChildren(); //foreach(var classItem in classItems) //{ // classItem.UpdateRedDotTips(); //} } #endregion }