예제 #1
0
        protected override void OnEnterState(IFsm <Avatar> pAvatar, StateParam nextParam)
        {
            StateSkillParam param = nextParam as StateSkillParam;

            if (param == null)
            {
                Log.Error("Current State '{0}': the Variable's(the initParam) type isn't right! '{1}'", typeof(StateIdle), typeof(Variable));
                return;
            }
            m_nSkillID   = param.m_nSkillID;
            m_fCurTime   = 0;
            m_fTotalTime = param.m_fTotalTime;
            m_fBreakTime = param.m_fBreakTime;

            pAvatar.Owner.SetState(StateDefine.State_LockActiveSkill);
            pAvatar.Owner.SetState(StateDefine.State_LockMove);

            DRSkillData pSkillData = GameEntry.DataTable.GetDataTable <DRSkillData>().GetDataRow(m_nSkillID);

            if (pSkillData == null)
            {
                Log.Error("pSkillData '{0}': pSkillData is null!", m_nSkillID);
                return;
            }
            pAvatar.Owner.PlayAnimation(pSkillData.MSV_AnimID);
        }
        public override bool SetFSMState()
        {
            if (!m_pOwner)
            {
                return(false);
            }
            StateSkillParam param = new StateSkillParam();

            param.m_nSkillID   = m_pSkillData.Id;
            param.m_fTotalTime = m_pSkillData.MSV_LastTime;
            param.m_fBreakTime = m_pSkillData.MSV_LockTime;
            return(m_pOwner.SetFsmState(this, param));
        }