Пример #1
0
        Request Create(EReqType type)
        {
            switch (type)
            {
            case EReqType.Idle:             return(new RQIdle());

            case EReqType.Animation:        return(new RQAnimation());

            case EReqType.MoveToPoint:      return(new RQMoveToPoint());

            case EReqType.TalkMove:         return(new RQTalkMove());

            case EReqType.FollowPath:       return(new RQFollowPath());

            case EReqType.FollowTarget:     return(new RQFollowTarget());

            case EReqType.Salvation:        return(new RQSalvation());

            case EReqType.Dialogue:         return(new RQDialogue());

            case EReqType.Translate:        return(new RQTranslate());

            case EReqType.Rotate:           return(new RQRotate());

            case EReqType.Attack:           return(new RQAttack());

            case EReqType.PauseAll:         return(new RQPauseAll());

            case EReqType.UseSkill:         return(new RQUseSkill());

            case EReqType.MAX:              return(null);

            default:                        return(null);
            }
        }
Пример #2
0
 public void RemoveRelation(EReqType type)
 {
     if (m_Relations.ContainsKey(type))
     {
         m_Relations.Remove(type);
     }
 }
Пример #3
0
        bool GetRelation(EReqType type, out EReqRelation relation)
        {
            if (m_Relations.ContainsKey(type))
            {
                relation = m_Relations[type];
                return(true);
            }

            relation = EReqRelation.None;
            return(false);
        }
Пример #4
0
 public void AddRelation(EReqType type, EReqRelation relation)
 {
     if (m_Relations.ContainsKey(type))
     {
         m_Relations[type] = relation;
     }
     else
     {
         m_Relations.Add(type, relation);
     }
 }
Пример #5
0
        public static void RemoveNpoReq(PeEntity npc, EReqType type)
        {
            NpcCmpt npccmpt = npc.NpcCmpt;

            if (npccmpt != null)
            {
                npccmpt.Req_Remove(type);
            }
            else
            {
                // TODO: 移除 Monster 当前状态
            }
        }
Пример #6
0
        //public void AddRequestMul(Request request)
        //{
        //    if (m_Request[(int)request.Type] == null)
        //        m_Request[(int)request.Type] = request;

        //    if (Entity.BehaveCmpt != null && HasRequest())
        //        Entity.BehaveCmpt.Excute();
        //}

        public void RemoveRequest(EReqType type)
        {
            if (type == EReqType.MoveToPoint && StroyManager.Instance != null)
            {
                RQMoveToPoint R_move = m_Request[(int)type] as RQMoveToPoint;
                if (R_move != null)
                {
                    bool isreached = PETools.PEUtil.MagnitudeH(Entity.position, R_move.position) < R_move.stopRadius;
                    StroyManager.Instance.EntityReach(Entity, isreached);
                }
            }


            if (PeGameMgr.IsMulti && Entity != null && Entity.netCmpt != null && type == EReqType.FollowPath)
            {
                if (Entity.netCmpt.network.hasOwnerAuth)
                {
                    Entity.netCmpt.network.RPCServer(EPacketType.PT_NPC_RequestAiOp, (int)EReqType.Remove, (int)EReqType.FollowPath, (m_Request[(int)type] as RQFollowPath).VerifPos);
                }
            }

            if (PeGameMgr.IsMulti && Entity != null && Entity.netCmpt != null && type == EReqType.FollowTarget && !PeGameMgr.IsStory)
            {
                if (Entity.netCmpt.network.hasOwnerAuth)
                {
                    Entity.netCmpt.network.RPCServer(EPacketType.PT_NPC_RequestAiOp, (int)EReqType.Remove, (int)EReqType.FollowTarget);
                }
            }

            m_Request[(int)type] = null;

            if (PeGameMgr.IsSingle && Entity.BehaveCmpt != null && m_View != null && !m_View.hasView && !HasRequest())
            {
                Entity.BehaveCmpt.Stopbehave();
            }
        }
Пример #7
0
        public Request Register(EReqType type, params object[] objs)
        {
            Request request = null;

            switch (type)
            {
            case EReqType.Dialogue:
                request = new RQDialogue(objs);
                break;

            case EReqType.Idle:
                request = new RQIdle(objs);
                break;

            case EReqType.Animation:
                request = new RQAnimation(objs);
                break;

            case EReqType.MoveToPoint:
                request = new RQMoveToPoint(objs);
                break;

            case EReqType.TalkMove:
                request = new RQTalkMove(objs);
                break;

            case EReqType.FollowPath:
                request = new RQFollowPath(objs);
                break;

            case EReqType.FollowTarget:
                request = new RQFollowTarget(objs);
                break;

            case EReqType.Salvation:
                request = new RQSalvation(objs);
                break;

            case EReqType.Translate:
                request = new RQTranslate(objs);
                break;

            case EReqType.Rotate:
                request = new RQRotate(objs);
                break;

            case EReqType.Attack:
                request = new RQAttack();
                break;

            case EReqType.PauseAll:
                request = new RQPauseAll();
                break;

            case EReqType.UseSkill:
                request = new RQUseSkill();
                break;
            }

            if (!CalculateRelation(request))
            {
                return(null);
            }

            AddRequest(request);
            return(request);
        }
Пример #8
0
 public bool Contains(EReqType type)
 {
     return(m_Request[(int)type] != null);
 }
Пример #9
0
 public Request GetRequest(EReqType type)
 {
     return(m_Request [(int)type]);
 }