337 lines
12 KiB
C#
337 lines
12 KiB
C#
//一条龙自动处理相关
|
|
|
|
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<ObjManager>.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();
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
} |