public void CallAttackTouched(JoyButtonResponseData data) { SkillConfig useConfig; SkillConfig lastBuff = this.mAttackInfo.mAttackQueue.Count > 0 ? this.mAttackInfo.mAttackQueue[mAttackInfo.mAttackQueue.Count - 1] : this.mAttackInfo.mCurrentAttack; bool isSameCommand = lastBuff != null && data.IsEqual(lastBuff._keyData); if (isSameCommand) { //判定连击 useConfig = lastBuff._NextAttackValue > 0 ? this.DataToConfig(data, lastBuff._NextAttackValue) : null; } else { //第一步攻击 useConfig = this.DataToConfig(data, 0); } if (useConfig == null) { return; } if (isSameCommand == false) { this.mAttackInfo.mAttackQueue.Clear(); } this.mAttackInfo.mAttackQueue.Add(useConfig); if (this.mAttackInfo.mCurrentAttack == null || this.mAttackInfo.IsBeginEndShake()) { this.DoAttackCommand(); } }
public bool IsEqual(JoyButtonResponseData data) { return(data.mIsGrounded == this.mIsGrounded && data.mCode == this.mCode && data.mEvent == this.mEvent && data.mDir == this.mDir); }
private SkillConfig DataToConfig(JoyButtonResponseData data, int attackValue) { foreach (SkillScriptableObject scp in this.mSkillConfigList) { if (scp._config._keyData.IsEqual(data)) { if (attackValue == 0 || attackValue == scp._config._AttackValue) { return(scp._config); } } } return(null); }
private void CallAttack(JoyButtonResponseData data) { if (data.mEvent == JoyButtonEvent.Touched || data.mEvent == JoyButtonEvent.SlideDir) { this.CallAttackTouched(data); } else if (data.mEvent == JoyButtonEvent.Holding) { this.CallAttackHolding(data); } else if (data.mEvent == JoyButtonEvent.EndTouch) { this.CallAttackEnd(data); } }
public void CallAttackEnd(JoyButtonResponseData data) { //蓄力释放 if (this.mAttackInfo.IsAttackCharging) { float passtime = Time.time - this.mAttackInfo.mStartTime; if (passtime >= this.mAttackInfo.mCurrentAttack._ChargingSecs) { this.mPlayer.TriggerAttack(this.mAttackInfo.mCurrentAttack._AttackValue, false); } else { this.mAttackInfo.Reset(); } } }
public void OnUiJoyButtonEvent(JoyButtonCode buttonCode, JoyButtonEvent evt, JoyButtonDir dir) { JoyButtonResponseData data = new JoyButtonResponseData(); data.mCode = buttonCode; data.mEvent = evt; data.mDir = dir; data.mIsGrounded = this.mIsGrounded; if (data.mCode == JoyButtonCode.Jump && data.mEvent == JoyButtonEvent.Touched) { this.CallJump(); } else { this.CallAttack(data); } }
public void CallAttackHolding(JoyButtonResponseData data) { if (this.mAttackInfo.mCurrentAttack == null || this.mAttackInfo.IsBeginEndShake() || this.mAttackInfo.mCurrentAttack._keyData.mCode != data.mCode) { this.CallAttackTouched(data); } else if (this.mAttackInfo.mCurrentAttack._keyData.mCode == data.mCode) { //相同指令,构造连击 data.mEvent = JoyButtonEvent.Touched; SkillConfig lastBuff = this.mAttackInfo.mAttackQueue.Count > 0 ? this.mAttackInfo.mAttackQueue[mAttackInfo.mAttackQueue.Count - 1] : this.mAttackInfo.mCurrentAttack; while (lastBuff != null && lastBuff._NextAttackValue > 0) { this.CallAttackTouched(data); lastBuff = this.mAttackInfo.mAttackQueue.Count > 0 ? this.mAttackInfo.mAttackQueue[mAttackInfo.mAttackQueue.Count - 1] : this.mAttackInfo.mCurrentAttack; } } }