示例#1
0
    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;
    }
示例#2
0
 //构造副本点信息
 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]);
     }
 }
示例#3
0
    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);
    }
示例#4
0
    //计算副本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;
            }
        }
    }
示例#5
0
    /** 试炼跑到终点后做的事情 */
    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);
        }
    }
示例#6
0
    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);
        }
    }
示例#7
0
    /// <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);
    }