562 lines
18 KiB
C#
562 lines
18 KiB
C#
|
|
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<string, int> _MissionNameToID = new Dictionary<string, int>();
|
|
|
|
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<GameObject> _MenuMarkIconList;
|
|
public List<GameObject> _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<MisisonLogClassItemInfo>();
|
|
var canAcceptMissionTypeList = new List<MISSIONTYPE>();
|
|
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<CommonItemContainerItem.ItemInfo> missionItemList = new List<CommonItemContainerItem.ItemInfo>();
|
|
|
|
//经济系统奖励
|
|
//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<MissionLogClassItem>();
|
|
//foreach(var classItem in classItems)
|
|
//{
|
|
// classItem.UpdateRedDotTips();
|
|
//}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|