Files
JJBB/Assets/Project/Script/GUI/Mission/MissionItemLogic.cs
2024-08-23 15:49:34 +08:00

1079 lines
45 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using Games.GlobeDefine;
using Games.Item;
using Games.Mission;
using GCGame;
using GCGame.Table;
using Module.Log;
using UnityEngine;
using UnityEngine.UI;
public class MissionItemLogic : UIItemBase
{
public Text m_MissionTitle; //任务追踪标题
public Text m_MissionInfo1; //任务追踪信息
public Text m_MissionInfo2; //任务追踪信息
public Text m_MissionInfo3; //任务追踪信息
public Text m_MissionInfo4; //任务追踪信息
public Text m_MissionFail; //任务失败
public Button _BtnTeamMission;
public GameObject Award;
public Image AwardIconQuility;
public Image AwardIcon;
public Text AwardNum;
public Image _MissionTypeIcon;
public List<Sprite> _MissionTypeIconList;
public GameObject _BtnFly;
public int serverMissionOverTime; //任务结束时间初始化为0
public int missionReaminTime; //任务剩余时间
public bool isLimitTimeMission;
public int m_CurMissionIndex; //当前正在进行的任务(多个条件)条件的下标
public bool isMissionFailed;
public GameObject _EffectPanel;
public Transform tipShowPoint;
public int _rewDataId = -1;
private float countTime;
private bool isNdeesCountTime;
private bool isNeedIncLevel;
private int m_MissionID = -1;
public int MissionID
{
get { return m_MissionID; }
set { m_MissionID = value; }
}
private void Update()
{
if (isNdeesCountTime)
{
countTime += Time.deltaTime;
if (countTime >= 1.0f)
{
countTime = 1 - countTime;
var missionLeaveTime = GameManager.gameManager.MissionManager.GetServerMissionOverTime(m_MissionID);
if (missionLeaveTime <= 0) isNdeesCountTime = false;
m_MissionFail.text =
StrDictionary.GetClientDictionaryString("#{42502}", Utils.GetTimeStr(missionLeaveTime));
}
}
}
public override void Show(Hashtable hash)
{
base.Show();
m_MissionID = (int) hash["InitObj"];
InitMission(m_MissionID);
ShowAwardIcon(m_MissionID);
}
public void ShowAwardIcon(int MissionID)
{
_rewDataId = -1; //每次都要初始化一次
var rewDataNum = 0;
var missionBase = TableManager.GetMissionBaseByID(MissionID);
if (missionBase == null)
{
Award.SetActive(false);
return;
}
//师门第十环
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_INSEC)
{
//是否是第十环(安全起见读MissionLimit的轮次限制万一脑袋一抽又要换次数)
var missionLimit = TableManager.GetMissionLimitByID(missionBase.NextMission);
var _rewList =
TableManager.GetBonusForSectByID(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level);
var _curRound = GameManager.gameManager.MissionManager.GetMissionTruns(MissionID) *
missionLimit.OneTurnCount;
for (var index = 0; index < _rewList.Count; index++)
if (_rewList[index].RoundId == _curRound)
{
_rewDataId = _rewList[index].ToolID1;
rewDataNum = _rewList[index].ToolNum1;
break;
}
}
else
{
var bonus = TableManager.GetMissionBonusByID(missionBase.BonusID);
if (bonus == null)
{
Award.SetActive(false);
return;
}
_rewDataId =
bonus.GetProfessionItemIDbyIndex(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession);
rewDataNum =
bonus.GetProfessionNumbyIndex(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession);
}
var commonItem = TableManager.GetCommonItemByID(_rewDataId);
if (commonItem == null)
{
Award.SetActive(false);
return;
}
AwardNum.gameObject.SetActive(false);
if (commonItem.ClassID != (int) ItemClass.EQUIP && rewDataNum > 0)
{
AwardNum.gameObject.SetActive(true);
AwardNum.text = rewDataNum.ToString();
}
Award.SetActive(true);
if (AwardIconQuility.gameObject && AwardIconQuility.gameObject.activeInHierarchy)
LoadAssetBundle.Instance.SetImageSprite(AwardIconQuility, Utils.GetItemQualityFrame(commonItem));
if (AwardIcon.gameObject && AwardIcon.gameObject.activeInHierarchy)
{
LoadAssetBundle.Instance.SetImageSprite(AwardIcon, commonItem.Icon);
if (commonItem.QualityEffect > 0)
CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, AwardIcon.transform);
else
CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, AwardIcon.transform);
}
var btn = Award.GetComponent<Button>();
if (btn != null)
btn.onClick.AddListener(delegate
{
ItemTooltipsLogic.ShowItemTooltip(_rewDataId, ItemTooltipsLogic.ShowType.Info,
Award.transform.position);
});
}
/// <summary>
/// 通过任务ID获取当前任务需要完成的条件数量
/// </summary>
/// <param name="nMissionId"></param>
/// <returns></returns>
public int GetCurMissionTypeCount(int nMissionId)
{
var missionBase = TableManager.GetMissionBaseByID(nMissionId);
if (missionBase == null)
return 0;
_MissionTypeIcon.overrideSprite =
_MissionTypeIconList
[missionBase.MissionType < _MissionTypeIconList.Count - 1 ? missionBase.MissionType : 0];
var missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID);
if (missionLogic == null)
return 0;
var m_MissionCount = 0;
for (var index = 0; index < missionLogic.getLogicTypeCount(); index++)
{
var m_MissionType = missionLogic.GetLogicTypebyIndex(index);
if (m_MissionType != -1) //不为空 不为限时任务
m_MissionCount++;
}
return m_MissionCount;
}
public void InitMission(int missionID)
{
//初始化任务之前 先获取人物属性
if (!Singleton<ObjManager>.GetInstance().MainPlayer) return;
isMissionFailed = false;
isLimitTimeMission = false;
if (m_MissionFail.gameObject.activeInHierarchy) m_MissionFail.gameObject.SetActive(false);
//判断任务的完成条件是否要完成条件
var missionBase = TableManager.GetMissionBaseByID(missionID);
if (missionBase == null) return;
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_GUIDE)
{
var guidMissionBase = TableManager.GetMissionGuidBaseByID(m_MissionID);
if (guidMissionBase != null)
if (guidMissionBase.OptionType == 2) //寻路
_BtnFly.SetActive(true);
if (GetGuidMissionRemainTimes(MissionID) <= 0)
{
if (GameManager.gameManager.MissionManager.MissionList.m_aMission.ContainsKey(missionID))
GameManager.gameManager.MissionManager.MissionList.m_aMission.Remove(missionID);
gameObject.SetActive(false);
return;
}
InitGuidMissionItem(missionID);
return;
}
var missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID);
if (missionLogic == null) return;
m_MissionTitle.text = GameManager.gameManager.MissionManager.GetModifiedMissionTitle(missionID);
var m_Count = GetCurMissionTypeCount(missionID);
for (var index = 0; index < m_Count; index++)
if (missionBase.MissionType != (int) MISSIONTYPE.MISSION_ONEDRONG //一条龙特殊判断MissionLogic只有类型9限时
&& missionLogic.GetLogicTypebyIndex(index) == (int) TableType.Table_MissionInTime
) //普通计时任务(MissionLogic最多三个最后一个为计时任务)
--m_Count; //计时任务不算在子任务里面这边要计算子任务的SizeDelta
var misState = (MissionState) GameManager.gameManager.MissionManager.GetMissionState(missionID);
//展示场景的先修改一下
//if (m_MissionID == 0 && misState == MissionState.Mission_Accepted)
//{
// OnItemClick();
//}
if (GameManager.gameManager.MissionManager.MissionList.m_aMission.ContainsKey(m_MissionID))
{
var MDLine = TableManager.GetMissionDictionaryByID(missionID);
if (MDLine == null)
//_BtnFly.SetActive(false);
return;
//飞鞋
var isCanReachTarget = true;
//判断当前任务是否是限时任务
for (var index = 0; index < GetCurMissionTypeCount(m_MissionID); index++)
if (missionLogic.GetLogicTypebyIndex(index) == (int) TableType.Table_MissionInTime) //限时任务
{
m_MissionFail.text = StrDictionary.GetClientDictionaryString("#{42502}",
Utils.GetTimeStr(GameManager.gameManager.MissionManager.GetServerMissionOverTime(m_MissionID)));
isLimitTimeMission = true;
break;
}
if (GameManager.gameManager.MissionManager.MissionList.m_aMission[missionID].m_yStatus ==
(int) MissionState.Mission_NotAccept) m_Count = 1;
m_MissionInfo1.gameObject.SetActive(m_Count >= 1);
m_MissionInfo2.gameObject.SetActive(m_Count >= 2);
m_MissionInfo3.gameObject.SetActive(m_Count >= 3);
m_MissionInfo4.gameObject.SetActive(m_Count >= 4);
switch (m_Count)
{
case 1:
m_MissionInfo1.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 0,
ref isCanReachTarget);
break;
case 2:
m_MissionInfo1.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 0,
ref isCanReachTarget);
m_MissionInfo2.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 1,
ref isCanReachTarget);
break;
case 3:
m_MissionInfo1.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 0,
ref isCanReachTarget);
m_MissionInfo2.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 1,
ref isCanReachTarget);
m_MissionInfo3.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 2,
ref isCanReachTarget);
break;
case 4:
m_MissionInfo1.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 0,
ref isCanReachTarget);
m_MissionInfo2.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 1,
ref isCanReachTarget);
m_MissionInfo3.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 2,
ref isCanReachTarget);
m_MissionInfo4.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 3,
ref isCanReachTarget);
break;
default:
m_MissionInfo1.gameObject.SetActive(false);
m_MissionInfo2.gameObject.SetActive(false);
m_MissionInfo3.gameObject.SetActive(false);
m_MissionInfo4.gameObject.SetActive(false);
break;
}
var isCanfly = (MDLine.IsCanFly > 0) & isCanReachTarget;
_BtnFly.SetActive(isCanfly);
if (isLimitTimeMission)
{
//开启计时面板
m_MissionFail.gameObject.SetActive(true);
if (gameObject.activeInHierarchy) isNdeesCountTime = true;
}
else
{
if (!isLimitTimeMission) m_MissionFail.gameObject.SetActive(false);
}
if (misState == MissionState.Mission_Failed)
{
setMissionFailed();
return;
}
}
else
{
//当前任务ID就是未接取的任务ID
if (missionID != -1)
{
var missionLimit = TableManager.GetMissionLimitByID(missionBase.LimitID);
var isCanReachTarget = true;
if (missionBase != null && missionLimit != null)
{
//设置下个任务的标题
m_MissionTitle.text = GameManager.gameManager.MissionManager.GetModifiedMissionTitle(missionID);
m_MissionInfo1.text =
GameManager.gameManager.MissionManager.GetModifiedMissionTarget(missionID, 0,
ref isCanReachTarget);
}
}
else
{
AbandonCurMission();
}
}
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_CIRCLE)
_BtnTeamMission.gameObject.SetActive(true);
else
_BtnTeamMission.gameObject.SetActive(false);
}
public void InitGuidMissionItem(int missionId)
{
var guidBase = TableManager.GetMissionGuidBaseByID(missionId);
if (guidBase == null) return;
//设置对应描述
_BtnTeamMission.gameObject.SetActive(false);
m_MissionFail.gameObject.SetActive(false);
m_MissionInfo2.gameObject.SetActive(false);
m_MissionInfo3.gameObject.SetActive(false);
m_MissionInfo4.gameObject.SetActive(false);
//设置标题
m_MissionTitle.text = GameManager.gameManager.MissionManager.GetModifiedMissionTitle(missionId);
_MissionTypeIcon.overrideSprite = _MissionTypeIconList[(int) MISSIONTYPE.MISSION_GUIDE];
//设置描述 又是一个特殊处理,因为试炼副本不限制次数,这边只显示配置的描述
if (guidBase.GuidMissionType == (int) GuidMissionType.TestingCopy)
m_MissionInfo1.text = guidBase.MissionDesc;
else
m_MissionInfo1.text = string.Format(guidBase.MissionDesc, GetGuidMissionRemainTimes(missionId));
}
public int GetGuidMissionRemainTimes(int _guidMissionId)
{
var guidMissionBase = TableManager.GetMissionGuidBaseByID(_guidMissionId);
if (guidMissionBase == null) return 0;
if (guidMissionBase.ActivityType == (int) ActivityDataManager.Activity_Type.ACTIVITY_TYPE_EQUIP_COPY)
{
var times = ActivityDataManager.Instance.GetActivityCompleteTimes((int) ActivityDataManager.Activity_Type
.ACTIVITY_TYPE_EQUIP_COPY);
return times < 0 ? 0 : times;
}
if (guidMissionBase.GuidMissionType == (int) GuidMissionType.Advance
|| guidMissionBase.GuidMissionType == (int) GuidMissionType.MainMission)
{
var times = ActivityDataManager.Instance.GetActivityCompleteTimes(guidMissionBase.ActivityType);
if (times == -1)
return GetNewCopyBaseLimitTimes(_guidMissionId);
return GetNewCopyBaseLimitTimes(_guidMissionId) - times > 0
? GetNewCopyBaseLimitTimes(_guidMissionId) - times
: 0;
}
if (guidMissionBase.GuidMissionType == (int) GuidMissionType.TestingCopy) return 99; //特殊处理 不限制次数
{
var times = ActivityDataManager.Instance.GetActivityCompleteTimes(guidMissionBase.ActivityType);
if (times < 0)
{
return guidMissionBase.LimitTimes;
}
times = guidMissionBase.LimitTimes - times;
return times > 0 ? times : 0;
}
}
//获取副本剩余次数(需要根据等级判断)
public int GetNewCopyBaseLimitTimes(int _GuidMissionBaseId)
{
var missionGuidBase = TableManager.GetMissionGuidBaseByID(_GuidMissionBaseId);
if (missionGuidBase == null) return 0;
var _TotalTimes = 0;
switch (missionGuidBase.GuidMissionType)
{
case (int) GuidMissionType.Advance:
{
var tabDic = TableManager.GetNewCopyBase().Values;
foreach (var tab in tabDic)
if (tab.Type == 1
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= tab.UnLockLevel)
{
var fuben = TableManager.GetFubenByID(tab.Id);
if (fuben != null) _TotalTimes += fuben.ChallengeTimes;
}
return _TotalTimes;
}
case (int) GuidMissionType.Equip:
{
var stroyCopy = TableManager.GetStroyCopyByID(1);
if (stroyCopy != null
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= stroyCopy.Level
&& GameManager.gameManager.MissionManager.IsMissionHaveDone(stroyCopy.LimitMissionId))
{
var fuben = TableManager.GetFubenByID(stroyCopy.EasyFubenId);
if (fuben != null) _TotalTimes += fuben.RewardsTimes;
}
return _TotalTimes;
}
case (int) GuidMissionType.MainMission:
{
var tabDic = TableManager.GetNewCopyBase().Values;
foreach (var tab in tabDic)
if (tab.Type == 2
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= tab.UnLockLevel)
{
var fuben = TableManager.GetFubenByID(tab.Id);
if (fuben != null) _TotalTimes += fuben.ChallengeTimes;
}
return _TotalTimes;
}
}
return 0;
}
public void setMissionFailed()
{
m_MissionFail.text = StrDictionary.GetClientDictionaryString("#{42500}");
isMissionFailed = true;
var missionBase = TableManager.GetMissionBaseByID(m_MissionID);
if (missionBase == null)
return;
if (missionBase.CanAbadon == 0) //不能主动放弃任务 服务器直接删除
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{7018}"), "", findAccepterAgain,
CloseMessageBox);
else //可以主动放弃的
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{7011}"), "", AbandonCurMission);
if (Singleton<ObjManager>.GetInstance().MainPlayer != null)
Singleton<ObjManager>.GetInstance().MainPlayer.StopMove();
if (GameManager.gameManager != null) GameManager.gameManager.AutoSearch.Stop();
}
public override void Refresh()
{
//InitMission(m_MissionID);
}
// 点击MissionItem
public override void OnItemClick()
{
MissionItemClick(false);
}
public void OnBtnFly()
{
MissionItemClick(true);
}
public void MissionItemClick(bool isFly)
{
if (GameManager.gameManager.m_RunningScene == 658)
{
GUIData.AddNotifyData("#{79512}"); //请退出场景后再进行此项操作!
return;
}
base.OnItemClick();
var missionBase = TableManager.GetMissionBaseByID(m_MissionID);
if (missionBase == null)
return;
if (Singleton<ObjManager>.Instance.MainPlayer.IsInPaoShang() &&
missionBase.MissionType != (int) MISSIONTYPE.MISSION_GUILDPAOSHANG)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("{#34013}"));
return;
}
MissionDialogAndLeftTabsLogic.Instance().OnMissionItemClick(m_MissionID);
var missionDic = TableManager.GetMissionDictionaryByID(m_MissionID);
var missionIndex = GameManager.gameManager.MissionManager.getCurMissionIndex(m_MissionID);
var missionState = GameManager.gameManager.MissionManager.GetMissionState(m_MissionID);
var guildSceneId = TableManager.GetGuildOtherByID(0).SceneId;
if (GameManager.gameManager.ActiveScene.IsCopyScene()
&& GameManager.gameManager.RunningScene != guildSceneId //非帮派副本场景
&& GameManager.gameManager.RunningScene != 718 //718出生副本
&& missionBase.MissionType != (int) MISSIONTYPE.MISSION_BRANCH
&& missionBase.MissionType != (int) MISSIONTYPE.MISSION_GUIDE)
{
if (missionState != (int) MissionState.Mission_Completed)
{
if (missionDic != null && missionDic.GetTargetNpcSceneIDbyIndex(missionIndex) !=
GameManager.gameManager.RunningScene)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{2463}"));
return;
}
var mainPlayer = ObjManager.Instance.MainPlayer;
if (mainPlayer == null || !mainPlayer.isAutoCombat)
{
if (SkillBarLogic.Instance() != null)
SkillBarLogic.Instance().OnDoAutoFightClick();
return;
}
}
else
{
if (missionDic.CompleteNpcSceneID != GameManager.gameManager.RunningScene)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{2463}"));
return;
}
}
}
//打开对应的UI
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_GUIDE)
{
var guidMissionBase = TableManager.GetMissionGuidBaseByID(m_MissionID);
if (guidMissionBase == null)
{
LogModule.ErrorLog("guidMissionBase is null , id is :" + m_MissionID);
return;
}
if (guidMissionBase.OptionType == 2) //寻路
{
if (guidMissionBase.ActivityType ==
(int) ActivityDataManager.Activity_Type.ACTIVITY_MISSIONINSECTION) //师门特殊处理
{
var autosearchId =
GlobeVar.GetMasterAutosearchId(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr
.Profession);
var searchTab = TableManager.GetAutoSearchByID(autosearchId);
if (searchTab == null) return;
//接受任务后自动寻路
var pos = new Vector3();
pos.x = searchTab.X;
pos.z = searchTab.Z;
var sceneId = searchTab.DstSceneID;
var targetPoint = new AutoSearchPoint(sceneId, pos.x, pos.z);
if (GameManager.gameManager && GameManager.gameManager.AutoSearch)
{
if (isFly)
{
var pointPos = MissionManager.GetMissionFlyPos(searchTab.DataId);
targetPoint.ChangeMapType = AutoSearchPoint.ChangeMap_Type.MISSIONFLY;
if (pointPos != Vector3.zero)
{
targetPoint.PosX = pointPos.x;
targetPoint.PosZ = pointPos.z;
}
}
GameManager.gameManager.AutoSearch.BuildPath(targetPoint);
var RoleBase = TableManager.GetRoleBaseAttrByID(searchTab.DataId);
if (null != RoleBase && null != GameManager.gameManager.AutoSearch.Path)
{
GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = RoleBase.Name;
GameManager.gameManager.AutoSearch.Path.autoSearchRadius = RoleBase.DialogRadius;
}
}
}
else if (guidMissionBase.ActivityType ==
(int) ActivityDataManager.Activity_Type.ACTIVITY_TYPE_DRAGONWAR)
{
if (GameManager.gameManager.PlayerDataPool.IsHaveGuild() == false)
{
// 加入帮派提醒
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6707}"));
return;
}
//帮派等级小于4返回
var guidTab = TableManager.GetGuildOtherByID(0);
if (guidTab == null)
{
LogModule.ErrorLog("guidTab is null");
return;
}
if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildLevel < guidTab.RobberNeedGuildLevel)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6709}"));
return;
}
var activityBase = TableManager.GetActivityBaseByID(guidMissionBase.ActivityId);
var paramaters = activityBase.Parameter.Split('|');
var roleId = int.Parse(paramaters[0]);
var posX = float.Parse(paramaters[1]);
var 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
{
GameManager.gameManager.MissionManager.MissionPathFinder(guidMissionBase.EnterId,
GlobeVar.INVALID_GUID, isFly);
}
return;
}
switch (guidMissionBase.GuidMissionType)
{
case (int) GuidMissionType.Advance:
{
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object patam)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(1);
});
}
break;
case (int) GuidMissionType.Equip:
{
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object patam)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(0);
});
}
break;
case (int) GuidMissionType.TestingCopy:
{
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object patam)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(2);
});
}
break;
default:
UIManager.ShowUI(UIInfo.Activity, delegate(bool bSucess, object param)
{
if (bSucess) ActivityController.Instance().ShowItemByActId(guidMissionBase.ActivityId);
});
break;
}
return;
}
//支线任务
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_BRANCH)
{
//if(GameManager.gameManager.ActiveScene.IsCopyScene())
//{
// GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{46352}"));
// return;
//}
if (GameManager.gameManager.MissionManager.GetMissionState(m_MissionID) ==
(int) MissionState.Mission_Completed)
{
GameManager.gameManager.MissionManager.CompleteMission(m_MissionID);
}
else
{
var missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID);
if (missionLogic != null)
{
var missionBranch = TableManager.GetMissionBranchByID(missionLogic.GetLogicIDbyIndex(0));
if (missionBranch != null)
{
switch (missionBranch.UIType)
{
case (int) BRANCHTYPE.MoSaic: //宝石镶嵌
UIManager.ShowUI(UIInfo.EquipEnhance, delegate(bool bSucess, object param)
{
if (bSucess) EquipEnhanceRoot.Instance().TryOpen(2);
});
break;
case (int) BRANCHTYPE.EnchanceEquip: //强化界面
UIManager.ShowUI(UIInfo.EquipEnhance, delegate(bool bSucess, object param)
{
if (bSucess) EquipEnhanceRoot.Instance().TryOpen(1);
});
break;
case (int) BRANCHTYPE.EnchanceEquipCiTiaoXiLian: //词条洗练界面
UIManager.ShowUI(UIInfo.EquipEnhance, delegate(bool bSucess, object param)
{
if (bSucess) EquipEnhanceRoot.Instance().TryOpen(0);
});
break;
case (int) BRANCHTYPE.EnchanceEquipBaseXiLian: //基础洗练界面
UIManager.ShowUI(UIInfo.EquipEnhance, delegate(bool bSucess, object param)
{
if (bSucess)
{
EquipEnhanceRoot.Instance().TryOpen(0);
if (EquipEnhanceXilian.Instance())
{
EquipEnhanceXilian.Instance()._TagPanel.ShowPage(1);
EquipEnhanceXilian.Instance().OnXilianPage(1);
}
}
});
break;
case (int) BRANCHTYPE.PetXiLian: //宠物洗练界面
UIManager.ShowUI(UIInfo.PetMainWndPath, delegate(bool bSuccess, object param)
{
if (bSuccess && PetMainWnd.Instance != null)
{
LogModule.ErrorLog("Show pet clear");
PetMainWnd.Instance.ShowPage(1, 0);
}
});
break;
case (int) BRANCHTYPE.PetAttr: //宠物属性功能界面
UIManager.ShowUI(UIInfo.PetMainWndPath, delegate(bool bSucess, object param)
{
if (bSucess && PetMainWnd.Instance != null)
{
LogModule.ErrorLog("Show pet clear");
PetMainWnd.Instance.ShowPage(0, 0);
}
});
break;
case (int) BRANCHTYPE.GuidList:
UIManager.ShowUI(UIInfo.GuildMainWnd);
break;
case (int) BRANCHTYPE.AdvanceMount:
UIManager.ShowUI(UIInfo.AdvanceMountPanel, delegate(bool bSucess, object param)
{
if (bSucess)
{
AdvanceMountPanelCtr.Instance.SetAdvanceType(
(int) AdvanceBase.AdvanceType.Ride);
AdvanceMountPanelCtr.Instance.menuItemPanelCtr.OnMenuItemClick(
AdvanceMenuItemPanelCtr.MenuItemOptType.Advance);
}
});
break;
case (int) BRANCHTYPE.AdvanceWing:
UIManager.ShowUI(UIInfo.AdvanceMountPanel, delegate(bool bSucess, object param)
{
if (bSucess)
{
AdvanceMountPanelCtr.Instance.SetAdvanceType(
(int) AdvanceBase.AdvanceType.Wing);
AdvanceMountPanelCtr.Instance.OnMenuItemClick(AdvanceMenuItemPanelCtr
.MenuItemOptType.Advance);
}
});
break;
case (int) BRANCHTYPE.MarketList:
UIManager.ShowUI(UIInfo.MarketRoot, delegate(bool bSucess, object param)
{
if (bSucess) MarketLogic.Instance()._TagPanel.ShowPage(1);
});
break;
case (int) BRANCHTYPE.MarketSelf:
UIManager.ShowUI(UIInfo.MarketRoot, delegate(bool bSucess, object param)
{
if (bSucess)
{
MarketLogic.Instance()._TagPanel.ShowPage(0);
if (MarketSystemLogic.Instance())
{
MarketSystemLogic.Instance()._TagPanel.ShowPage(1);
MarketSystemLogic.Instance().OnTabPage(1);
}
}
});
break;
case (int) BRANCHTYPE.MainCopy:
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object param)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(1);
});
break;
case (int) BRANCHTYPE.AdvanceCopy:
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object param)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(2);
});
break;
case (int) BRANCHTYPE.EquipCopy:
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object param)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(0);
});
break;
case (int) BRANCHTYPE.Activity:
UIManager.ShowUI(UIInfo.Activity);
break;
case (int) BRANCHTYPE.LiveSkill:
UIManager.ShowUI(UIInfo.SkillInfo, delegate(bool bSucess, object param)
{
if (bSucess) SkillRootLogic.Instance().ShowTagPage(2);
});
break;
case (int) BRANCHTYPE.Chat:
UIManager.ShowUI(UIInfo.ChatInfoRoot);
break;
case (int) BRANCHTYPE.DreamIsLand:
CommunityLogic.ShowMyCommunityRoot();
break;
case (int) BRANCHTYPE.Team:
{
if (MissionDialogAndLeftTabsLogic.Instance())
{
MissionDialogAndLeftTabsLogic.Instance()._TagPanel.ShowPage(1);
MissionDialogAndLeftTabsLogic.Instance().BtnCreateTeam();
}
}
break;
case (int) BRANCHTYPE.TestingCopy:
{
UIManager.ShowUI(UIInfo.CopyScenePanelCtr, delegate(bool bSucess, object patam)
{
if (bSucess) CopyScenePanelCtr.Instance.OnMenuItemClick(2);
});
}
break;
case (int) BRANCHTYPE.GetItem:
{
if (!string.IsNullOrEmpty(missionBranch.ClientParam))
{
var id = Convert.ToInt32(missionBranch.ClientParam);
MissionItemGetPath.Show(id, tipShowPoint.position);
}
}
break;
case (int) BRANCHTYPE.Guide:
{
var id = Convert.ToInt32(missionBranch.ClientParam);
GuideLogic.StartGuide(id);
}
break;
default:
UIManager.ShowUI(UIInfo.Activity);
break;
}
return;
}
}
}
}
//帮会货运任务直接打开界面
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_GUILDTRANSPORT)
{
if (isMissionFailed)
{
if (missionBase.CanAbadon == 0) //不能主动放弃任务 服务器直接删除
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{7018}"), "",
findAccepterAgain, CloseMessageBox);
else //可以主动放弃的
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{7011}"), "",
AbandonCurMission);
return;
}
GuildTransport.GuildTransportClick(missionBase, Singleton<ObjManager>.Instance.MainPlayer.GUID);
return;
}
//帮会跑商任务
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_GUILDPAOSHANG)
{
if (isMissionFailed)
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{7011}"), "", AbandonCurMission);
else
GameManager.gameManager.AutoSearch.RoadSignManager.AutoMoveStart();
return;
}
//跨服押镖
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_CROSSSERVERPOST)
{
if (GameManager.gameManager.RunningScene == GlobeVar.CROSSSERVER_SIGNPOSTSCENE)
{
var point = new AutoSearchPoint(GameManager.gameManager.RunningScene,
Singleton<SignPostManager>.Instance.GhattyCurrPosition.x,
Singleton<SignPostManager>.Instance.GhattyCurrPosition.z);
if (GameManager.gameManager && GameManager.gameManager.AutoSearch)
GameManager.gameManager.AutoSearch.BuildPath(point, false, "");
}
return;
}
//帮会战龙堂
if (missionBase.MissionType == (int) MISSIONTYPE.MISSION_GUILDDRAGONWAR)
{
if ((MissionState) GameManager.gameManager.MissionManager.GetMissionState(m_MissionID) ==
MissionState.Mission_Completed)
{
GameManager.gameManager.MissionManager.MissionPathFinder(m_MissionID,
GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid, isFly);
return;
}
if (GameManager.gameManager.PlayerDataPool.DragonWar_destanceGuildGuid != GlobeVar.INVALID_GUID)
{
GameManager.gameManager.MissionManager.MissionPathFinder(m_MissionID,
GameManager.gameManager.PlayerDataPool.DragonWar_destanceGuildGuid, isFly);
return;
}
}
//组队跟随,不响应
if (GameManager.gameManager.PlayerDataPool.IsFollowTeam)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5128}"));
return;
}
//当前等级不够,不响应
isNeedIncLevel = GameManager.gameManager.MissionManager.IsStopedMission(m_MissionID);
if (isNeedIncLevel)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44046}"));
//打开活动面板
UIManager.ShowUI(UIInfo.Activity, delegate(bool bSucess, object param)
{
if (bSucess) ActivityController.Instance().OnToggleOn(0);
});
return;
}
if (!isMissionFailed) //任务未失败的时候点击正常寻路
{
if (GameManager.gameManager.MissionManager != null)
{
if (GameManager.gameManager.MissionManager.GetMissionState(m_MissionID) ==
(int) MissionState.Mission_Completed)
if (missionDic != null)
if (missionDic.CompleteNpcDataID == -1)
{
GameManager.gameManager.MissionManager.CompleteMission(m_MissionID);
return;
}
if (GameManager.gameManager.MissionManager.MissionPathFinder(m_MissionID, GlobeVar.INVALID_GUID, isFly)
) return;
}
var other = TableManager.GetGuildOtherByID(0);
//在副本中的话点击开始挂机
var sceneClass = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene);
if (sceneClass != null)
if (sceneClass.Type == 2 && (other == null || other.SceneId != sceneClass.SceneID)) // 副本
{
var mainPlayer = ObjManager.Instance.MainPlayer;
if (mainPlayer == null || !mainPlayer.isAutoCombat)
if (SkillBarLogic.Instance() != null)
SkillBarLogic.Instance().OnDoAutoFightClick();
}
}
else //任务失败,弹出删除任务对话框
{
MessageBoxLogic.OpenOKBox(StrDictionary.GetClientDictionaryString("#{7011}"), "", AbandonCurMission);
}
}
public void findAccepterAgain()
{
if (GameManager.gameManager.MissionManager != null)
{
var missionBase = TableManager.GetMissionBaseByID(m_MissionID);
if (missionBase != null) GameManager.gameManager.MissionManager.MissionPathFinder(m_MissionID);
}
}
public void AbandonCurMission()
{
if (GameManager.gameManager.MissionManager != null)
GameManager.gameManager.MissionManager.AbandonMission(m_MissionID);
CloseMessageBox();
}
public void BtnTeamMission()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID >= 0)
UIManager.ShowUI(UIInfo.TeamInfoRoot);
else
UIManager.ShowUI(UIInfo.TeamCreateRoot);
}
public void BtnAutoComplateCircle()
{
//UIManager.ShowUI(UIInfo.AutoComplateCircle);
var req = new ReqAutoCompleteCircleMission();
req._flag = 1;
req.SendMsg();
}
public void CloseMessageBox()
{
UIManager.CloseUI(UIInfo.MessageBox);
}
public void ShowEffect(bool isShow)
{
_EffectPanel.SetActive(isShow);
}
public void ClickItem(bool isOK)
{
if (isOK)
OnItemClick();
}
private enum GuidMissionType
{
Equip = 0,
MainMission = 1,
Advance = 2,
TestingCopy = 11
}
}