Example #1
0
    private void RegistState(AbstractNode node)
    {
        if (typeof(SkillPhaseState).IsAssignableFrom(node.GetType()))
        {
            SkillPhaseState skillPhaseState = (SkillPhaseState)node;
            skillPhaseState.SetSkill(_skill);

            AbstractNode parentNode  = _hsmStateMachine.GetNode(node.ParentId);
            int          configIndex = (null != parentNode) ? ((SubMachineSkill)parentNode).SkillConfigIndex : -1;
            int          nodeUid     = NodeUid(configIndex, skillPhaseState.PhaseType);
            _stateDic[nodeUid] = skillPhaseState;
        }
        else if (typeof(SkillHoldSkillState).IsAssignableFrom(node.GetType()))
        {
            SkillHoldSkillState skillHoldSkillState = (SkillHoldSkillState)node;
            skillHoldSkillState.SetSkill(_skill);
        }
        else if (typeof(SkillHoldFishState).IsAssignableFrom(node.GetType()))
        {
            SkillHoldFishState skillHoldFishState = (SkillHoldFishState)node;
            skillHoldFishState.SetSkill(_skill);
        }
        else if (typeof(SkillNextStage).IsAssignableFrom(node.GetType()))
        {
            SkillNextStage skillNextStage = (SkillNextStage)node;
            skillNextStage.SetEnterCallBack(EnterNextStage);
        }
        else if (typeof(SkillExitState).IsAssignableFrom(node.GetType()))
        {
            SkillExitState skillExitState = (SkillExitState)node;
            skillExitState.SetEnterCallBack(EixtSkill);
        }
    }
Example #2
0
    private SkillPhaseState GetPhaseState(int configInde, SkillConfigSkillPhaseType phaseType)
    {
        SkillPhaseState state   = null;
        int             nodeUid = NodeUid(configInde, phaseType);

        if (_stateDic.TryGetValue(nodeUid, out state))
        {
            return(state);
        }
        return(state);
    }
Example #3
0
    private void ChangeState(int configIndex, SkillPhaseType phaseType)
    {
        if (phaseType < SkillPhaseType.INITIAL_PHASE || phaseType > SkillPhaseType.NONE)
        {
            return;
        }

        if (_lastConfigIndex != configIndex)
        {
            _lastConfigIndex = configIndex;
            NextAct(false);
        }

        int intValue = (int)phaseType;

        UpdateEnvironment();
        SkillPhaseState state  = GetPhaseState(configIndex, (SkillConfigSkillPhaseType)intValue);
        bool            result = _hsmStateMachine.StateMachineTransition.ChangeDestinationNode(state);
        //Debug("++++++++++++++++ ChangeNode:" + _skill.weaponId + "    configIndex:" + configIndex + "   phaseType:" + phaseType + "   nodeId:" + state.NodeId + "    " + result + "    time:" + Extend.GameUtils.GetMillisecond());
    }