Files
JJBB/Assets/Project/Script/GUI/Mission/MissionItemLogic.cs

1079 lines
45 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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
}
}