技能吟唱之Client/Server消息流程

技能吟唱之Client/Server消息流程

Client
1.技能快捷键
2.判断技能CD,范围,根据技能类型设置技能目标,eg.以自身为中心的AOE技能,目标是自身
3.向Server发送TryUseSkill消息

Server
1.收到Client消息,使用的技能压入到‘技能处理列表‘中
 m_skillTaskMgr.Push( TaskType_Skill, target, position, skillID, skillLvl )
2.在玩家每一帧中调用 m_skillTaskMgr.GetTask() 处理所有类型的任务,包括技能

3.判断使用技能的一些条件,eg.技能目标,技能范围...
  都满足向Client发送MsgIntonateStart开始吟唱消息
 
 
Server:
1.目标进入视野,如果目标正在吟唱或维持魔法,将此状态消息MsgSkillStatus发给自己
  EnterMySight(pTarget)
  if ( pTarget->IsIntonate() || pTarget->IsHoldSkill() )
 pTarget->SendSkillStatusTo( pMe )


Client
1.接受到Server技能吟唱消息 MsgIntonateStart MsgSkillStatus
  参数:iSkillID, iSkillLvl, srcPlayerID, tagPlayerID, iPercent
  1). 若是自己吟唱,显示吟唱进度条 UIProgressBar::Show(...)
  2). 加入到动作队列中等待处理 GetActionQueue()->Push_Intonate(...)
 
2. 每帧 HandleActionQueue 中处理 ‘技能吟唱’Intonate
 1)保存吟唱的技能 skillID, skillLvl
 2)播放并记录吟唱的特效 iSkillEffectID = PlayEffect(...)
 3)切换到吟唱动作 SwitchActionStatus( Intonate, ...)

3. 吟唱结束 条件诸如:EndIntonate IntonateInterrupt HoldSkillEnd HoldSkillCancel Dead
   1).切换动作到idle状态
   2).清除播放中的吟唱特效 GetEffectMgr()->ReleaseEffect( iSkillEffectID )


 

你可能感兴趣的:(技能吟唱之Client/Server消息流程)