public void npcMove() { //到最后一个点移除 if (data.mPointIndex >= MissionInfoManager.Instance.mission.getAllPoint().Length - 1) { remove(); return; } MissionPointInfo currentPointInfo = MissionInfoManager.Instance.mission.getPointInfoByIndex(data.mPointIndex); if (currentPointInfo != null && currentPointInfo.PointInfo != null) { if (!currentPointInfo.PointInfo.pointOnRoad) { remove(); return; } } MissionPointInfo nextPointInfo = MissionInfoManager.Instance.mission.getNextPoint(currentPointInfo); if (nextPointInfo != null && nextPointInfo.PointInfo != null) { if (!nextPointInfo.PointInfo.pointOnRoad) { remove(); return; } } playMove(); iTween.MoveTo(gameObject, iTween.Hash("position", setPos(MissionInfoManager.Instance.mission.getPointInfoByIndex(data.mPointIndex)), "oncomplete", "moveComplete", "easetype", "easeOutQuad", "time", 1f)); GraphBusy = true; }
//构造副本点信息 private void createPoints() { if (sid == -1) { return; } if (this.getChapterType() == ChapterType.WAR) { return; } string[] infos = MissionSampleManager.Instance.getMissionSampleBySid(sid).points; points = new MissionPointInfo[infos.Length]; for (int i = 0; i < infos.Length; i++) { int[] p_loc = new int[2]; string[] strarr = (infos [i]).Split(','); int p_sid = StringKit.toInt(strarr [0]); p_loc [0] = StringKit.toInt(strarr [1]); p_loc [1] = StringKit.toInt(strarr [2]); string[] p_ids = new string[strarr.Length - 3]; Array.Copy(strarr, 3, p_ids, 0, p_ids.Length); points [i] = new MissionPointInfo(p_sid, p_loc, p_ids); countMissionEventCost(points [i]); } }
public bool isBattlePrepared = false; //战斗前置 判断条件 如果是战斗事件 则需要先执行获取战前信息 当battleEvent=true 才能执行战斗事件 执行完战斗事件后需要重置为false /// <summary> /// 比较两个MissionPointInfo是否是相同的 /// </summary> public bool compare(MissionPointInfo data) { if (data.loction [0] == loction [0] && data.loction [1] == loction [1]) { return(true); } return(false); }
//计算副本pve 总消耗 private void countMissionEventCost(MissionPointInfo point) { string[] e_ids = point.getEventArr(); int max = e_ids.Length; for (int i = 0; i < max; i++) { MissionEventSample sample = MissionEventSampleManager.Instance.getMissionEventSampleBySid(StringKit.toInt(e_ids [i])); if (sample.costType == MissionEventCostType.COST_PVE) { allCostPve += sample.cost; } } }
/** 试炼跑到终点后做的事情 */ void moveArriveByPractice() { changeState(fuben_characterState.stand); MissionPointInfo point = MissionInfoManager.Instance.mission.GetPlayerNextPoint(); //获取下个节点的逻辑信息 if (point == null) { return; } MissionPoint info = point.PointInfo; if (info != null && info.eventObj != null) { Destroy(info.eventObj.gameObject); } }
public Vector3 setPos(MissionPointInfo pointInfo) { transform.position = new Vector3(pointInfo.PointInfo.woldPos.x, transform.position.y, pointInfo.PointInfo.woldPos.z); MissionPointInfo nextPoint = MissionInfoManager.Instance.mission.getNextPoint(pointInfo); if (nextPoint.PointInfo.pointOnRoad) { Vector3 pos = new Vector3(nextPoint.PointInfo.woldPos.x, transform.position.y, nextPoint.PointInfo.woldPos.z); TargetRotation = Quaternion.LookRotation(pos - transform.position, Vector3.up); return(pos); } else { return(Vector3.zero); } }
/// <summary> /// 得到给定逻辑点的下个逻辑点 /// </summary> public MissionPointInfo getNextPoint(MissionPointInfo data) { for (int i = 0; i < points.Length; i++) { if (data.compare(points [i])) { if (i + 1 >= points.Length) { return(null); } return(points [i + 1]); } } return(null); }
/// <summary> /// 检测该NPC是否可见 /// </summary> int checkVisable(NpcData data) { MissionPointInfo mPoint = MissionInfoManager.Instance.mission.getPointInfoByIndex(data.mPointIndex); if (data.ctrl == null) { //判断有没必要显示模型 //模型数量限制 if (nowObjCount >= maxObjCount) { return(NOCHANGE); } /* * if (Mathf.Abs (data.mPointIndex - MissionInfoManager.Instance.mission.getPlayerPointIndex ()) <= 8) { * //足够靠近,显示模型 * createNPC (data); * return TO_SHOW; * } */ if (mPoint.PointInfo != null && mPoint.PointInfo.pointOnRoad && MissionInfoManager.Instance.mission.getNextPoint(mPoint).PointInfo.pointOnRoad) { createNPC(data); return(TO_SHOW); } } else { //判断有没必要隐藏模型 /* * if (Mathf.Abs (data.mPointIndex - MissionInfoManager.Instance.mission.getPlayerPointIndex ()) > 8) { * data.ctrl.remove (); * return TO_HIDE; * } */ if (mPoint.PointInfo != null && !mPoint.PointInfo.pointOnRoad) { data.ctrl.remove(); return(TO_HIDE); } } return(NOCHANGE); }