//一条龙自动处理相关 using System.Collections; using Games.GlobeDefine; using Games.LogicObj; using Games.Mission; using GCGame.Table; using UnityEngine; public class OneDragonAuto { public static OneDragonAuto One_DragonAuto = new OneDragonAuto(); public static bool LastSceneIscopy; public static bool isOneDragonAutoSearch; public static bool isOneDragonAutoSearchStop = true; public static bool isNeedCheckOneDragonEnterCopy; private Obj_MainPlayer m_player; public int oneDragonCircleTimes = 10000; //一条龙今日完成5轮的次数 public int OneDragonEnterCopyNpc = -1; public int oneDragonIndex; public bool NeedCheckOneDragonEnterCopy { get { return isNeedCheckOneDragonEnterCopy; } set { isNeedCheckOneDragonEnterCopy = value; } } public void Clear() { oneDragonCircleTimes = 10000; OneDragonEnterCopyNpc = -1; NeedCheckOneDragonEnterCopy = false; oneDragonIndex = 0; GameManager.gameManager.StopCoroutine("StartCheckOneDragonEnterCopy"); m_player = null; } public void OnLeaveScene() { LastSceneIscopy = GameManager.gameManager.ActiveScene.IsCopyScene(); m_player = null; } public void OnEnterScene(Obj_MainPlayer player) { m_player = player; var missionID = GameManager.gameManager.MissionManager.isHaveOneDragon(); if (missionID != -1 && GameManager.gameManager.ActiveScene.IsCopyScene() == false && LastSceneIscopy) { if (isOneDragonAutoSearch && isOneDragonAutoSearchStop) { GameManager.gameManager.MissionManager.MissionPathFinder(missionID); NeedCheckOneDragonEnterCopy = true; isOneDragonAutoSearchStop = false; } else { isOneDragonAutoSearch = false; isOneDragonAutoSearchStop = true; NeedCheckOneDragonEnterCopy = false; } } //player.RefreshPlayerAutoCombat(); OnCreatePlayer(); } #region 5轮一条龙任务完成后弹窗确认是否再次接取一条龙 public void OnCreatePlayer() { if (GameManager.gameManager.ActiveScene.IsCopyScene() == false) { //Games.Events.EventListenerSystem.Instance.SendMessage(Games.Events.MessageID.PopMessageBoxOneDragonWnd); //Games.Events.EventListenerSystem.Instance.RemoveMessage(Games.Events.MessageID.PopMessageBoxOneDragonWnd, "PopOneDragon"); } } //每完成一轮一条龙更新一次 public void RefreshOneDragon(int times) { if (times > oneDragonCircleTimes) AcceptOnedragonAgain(null, null); oneDragonCircleTimes = times; } public void AcceptOnedragonAgain(Hashtable addparam, Hashtable sendparam) { if (GameManager.gameManager.PlayerDataPool.IsHaveTeam() == false) return; if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain() == false) return; MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{5135}"), "", AcceptOneDragon, delegate { Clear(); }); } //寻路到接取任务的NPC public void AcceptOneDragon() { var activity = TableManager.GetActivityBaseByID(2); if (activity != null) { var id = -1; if (int.TryParse(activity.Parameter, out id)) { var autoSearch = TableManager.GetAutoSearchByID(id); if (autoSearch != null) { var targetPos = new Vector3(); targetPos.x = autoSearch.X; targetPos.z = autoSearch.Z; var nTargetScene = autoSearch.DstSceneID; var point = new AutoSearchPoint(nTargetScene, targetPos.x, targetPos.z); if (GameManager.gameManager && GameManager.gameManager.AutoSearch) { GameManager.gameManager.AutoSearch.BuildPath(point); var RoleBase = TableManager.GetRoleBaseAttrByID(autoSearch.DataId); if (null != RoleBase && null != GameManager.gameManager.AutoSearch.Path) { GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = RoleBase.Name; GameManager.gameManager.AutoSearch.Path.autoSearchRadius = RoleBase.DialogRadius; } } } } } } #endregion #region 一条龙自动进副本逻辑 public bool CheckEnterCopy() { if (m_player == null) return false; foreach (var mission in GameManager.gameManager.MissionManager.MissionList.m_aMission) { if (mission.Value.m_yStatus != 1) continue; var missionBase = TableManager.GetMissionBaseByID(mission.Value.m_nMissionID); if (missionBase == null) continue; if (missionBase.MissionType != (int) MISSIONTYPE.MISSION_ONEDRONG) continue; var param = GameManager.gameManager.MissionManager.GteMissionTurnCount(mission.Value.m_nMissionID); if (param != 0) { var turn = GameManager.gameManager.MissionManager .GetMissionTurnsCount(mission.Value.m_nMissionID); //param & 0XFF; //一轮任务中的第几次 int前8位 if (turn > 1) { const string coroutineName = "StartCheckOneDragonEnterCopy"; m_player.StopCoroutine(coroutineName); m_player.StartCoroutine(StartCheckOneDragonEnterCopy()); return true; } } } return false; } private IEnumerator StartCheckOneDragonEnterCopy() { while (true) { yield return new WaitForSeconds(2); CheckOneDragonEnterCopy(); if (NeedCheckOneDragonEnterCopy == false) break; } } public void CheckOneDragonEnterCopy() { if (NeedCheckOneDragonEnterCopy == false) return; if (GameManager.gameManager.PlayerDataPool.IsHaveTeam() == false) { NeedCheckOneDragonEnterCopy = false; return; } if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain() == false) { NeedCheckOneDragonEnterCopy = false; return; } if (m_player == null) { NeedCheckOneDragonEnterCopy = false; return; } var obj = Singleton.GetInstance().FindObjCharacterInScene(OneDragonEnterCopyNpc); if (obj == null) { NeedCheckOneDragonEnterCopy = false; return; } if (obj.ObjType != GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { NeedCheckOneDragonEnterCopy = false; return; } var role = TableManager.GetRoleBaseAttrByID(obj.RoleBaseID); if (role == null) { NeedCheckOneDragonEnterCopy = false; return; } if (Vector3.Distance(m_player.Position, obj.Position) > role.DialogRadius) return; var npcDialog = TableManager.GetNpcDialogByID(role.DialogID); if (npcDialog == null) { NeedCheckOneDragonEnterCopy = false; return; } var optionDialog = TableManager.GetNpcOptionDialogByID(npcDialog.OptionDialogId); if (optionDialog == null) { NeedCheckOneDragonEnterCopy = false; return; } if (optionDialog.getOptionFuncCount() <= 0) { NeedCheckOneDragonEnterCopy = false; return; } var func = optionDialog.GetOptionFuncbyIndex(0); if (string.IsNullOrEmpty(func) || func.Contains("EnterCopy") == false) { NeedCheckOneDragonEnterCopy = false; return; } var param = optionDialog.GetOptionParambyIndex(0); var copyId = -1; int.TryParse(param, out copyId); var fuben = TableManager.GetFubenByID(copyId); if (fuben == null) { NeedCheckOneDragonEnterCopy = false; return; } var packet = (CG_REQ_ENTER_COPY) PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY); packet.Copyid = copyId; packet.SendPacket(); } #endregion //public void ChangePlayerAuto() //{ // if (m_player == null) // return; // var Oldfuben = TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.BeforeEnterCopySceneID, 0); // var fuben = TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0); // if (Oldfuben == null) // { // if (fuben != null) // { // // 队长或者未组队,调整自身自动战斗状态 // // 否则切换到跟随状态2 // if (!GameManager.gameManager.PlayerDataPool.IsHaveTeam() || // GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain()) // { // if (fuben.AutoType == 0) // m_player.LeveAutoCombat(); // else if (!m_player.IsOpenAutoCombat) // m_player.EnterAutoCombatAfterLoading(); // } // else // { // if (fuben.AutoType == 0) // { // if (m_player.FollowState != TeamFollowState.followMove) // m_player.EnterTeamFollow(); // } // else // { // if (m_player.FollowState != TeamFollowState.followCombat) // m_player.TeamEnterAutoCombat(); // } // } // //switch (fuben.AutoType) // //{ // // case 0: // // if (m_player.IsOpenAutoCombat) // // m_player.LeveAutoCombat(); // // break; // // case 1: // // GameManager.gameManager.PlayerDataPool.ChangeSceneAutoCombat = GameManager.gameManager.PlayerDataPool.IsOpenAutoCombat; // // if (!m_player.IsOpenAutoCombat) // // { // // m_player.EnterAutoCombatAfterLoading(); // // //m_player.LeaveTeamFollow(); // // } // // break; // //} // } // } // else // { // // 出副本先恢复到进副本之前的挂机状态 // if (fuben == null) // { // int missionID = GameManager.gameManager.MissionManager.isHaveOneDragon(); // if(missionID==-1) // { // GameManager.gameManager.PlayerDataPool.IsOpenAutoCombat = GameManager.gameManager.PlayerDataPool.ChangeSceneAutoCombat; // if (GameManager.gameManager.PlayerDataPool.IsOpenAutoCombat) // { // m_player.EnterAutoCombat(); // } // else // { // m_player.LeveAutoCombat(); // } // } // } // } //} }