Example #1
0
    public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType)
    {
        //if (attackType == OrderAttackType.COUNTER)
        //  return AnimAttacksSwordCounter;

        return(AnimAttacksSwordL);
    }
Example #2
0
 public override void Reset(Agent agent)
 {
     base.Reset(agent);
     target          = null;
     hit             = false;
     attackPhaseDone = false;
     data            = null;
     attackType      = OrderAttackType.NONE;
 }
    public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType)
    {
        if (attackType == OrderAttackType.X)
        {
            return(AnimAttacksSword1);
        }


        return(AnimAttacksSword2);
    }
Example #4
0
    public override AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType)
    {
        if (attackType == OrderAttackType.X)
        {
            return(AnimAttackX);
        }
        else if (attackType == OrderAttackType.O)
        {
            return(AnimAttackInjury);
        }
        //else if (attackType == OrderAttackType.BERSERK)
        //  return AnimAttackBerserk;

        return(null);
    }
    public override void UpdateGOAPAction()
    {
        if ((AgentAction as AgentActionAttackMelee).attackPhaseDone && NumberOfAttacks > 0)
        {
            if (CurrentAttacktype == OrderAttackType.X)
            {
                CurrentAttacktype = OrderAttackType.O;
            }
            else
            {
                CurrentAttacktype = OrderAttackType.X;
            }

            //Owner.SoundPlayPrepareAttack();
            if (AgentAction != null)
            {
                AgentAction.GoapAction = null;
                AgentAction            = MakeAgentAction();
                AgentAction.GoapAction = this;
                Owner.AddAction(AgentAction);
            }
        }
    }
Example #6
0
    bool NextAttackIsAvailable(OrderAttackType attackType)
    {
        if (attackType != OrderAttackType.O && attackType != OrderAttackType.X)
        {
            return(false);
        }

        if (_comboProgress.Count == 5)
        {
            return(false);
        }

        List <OrderAttackType> progress = new List <OrderAttackType>(_comboProgress);

        progress.Add(attackType);

        for (int i = 0; i < _comboAttacks.Count; i++)
        {
            Combo combo = _comboAttacks[i];

            bool valid = true;
            for (int ii = 0; ii < progress.Count; ii++)
            {
                if (progress[ii] != combo.comboSteps[ii].orderAttackType)
                {
                    valid = false;
                    break;
                }
            }

            if (valid)
            {
                return(true);
            }
        }
        return(false);
    }
Example #7
0
 // 以下函数可以删除
 public virtual AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType)
 {
     return(null);
 }
Example #8
0
    public AnimAttackData ProcessOrderCombo(OrderAttackType attackType)
    {
        if (attackType != OrderAttackType.O && attackType != OrderAttackType.X)
        {
            return(null);
        }

        _comboProgress.Add(attackType);

        // 遍历每一种连招
        for (int i = 0; i < _comboAttacks.Count; ++i)
        {
            Combo combo = _comboAttacks[i];
            bool  valid = _comboProgress.Count <= combo.comboSteps.Length;

            // 遍历出招记录
            for (int ii = 0; ii < _comboProgress.Count && ii < combo.comboSteps.Length; ++ii)
            {
                if (_comboProgress[ii] != combo.comboSteps[ii].orderAttackType)
                {
                    valid = false;
                    break;
                }
            }

            if (valid)
            {
                combo.comboSteps[_comboProgress.Count - 1].data.lastAttackInCombo =
                    (NextAttackIsAvailable(OrderAttackType.X) == false && NextAttackIsAvailable(OrderAttackType.O) == false);
                combo.comboSteps[_comboProgress.Count - 1].data.firstAttackInCombo = false;
                combo.comboSteps[_comboProgress.Count - 1].data.comboIndex         = i;
                combo.comboSteps[_comboProgress.Count - 1].data.fullCombo          =
                    _comboProgress.Count == combo.comboSteps.Length;
                combo.comboSteps[_comboProgress.Count - 1].data.comboStep = _comboProgress.Count;

                //GuiManager.Instance.ShowComboProgress(ComboProgress);
                return(combo.comboSteps[_comboProgress.Count - 1].data);
            }
        }

        _comboProgress.Clear();
        _comboProgress.Add(attackType);

        for (int i = 0; i < _comboAttacks.Count; i++)
        {
            if (_comboAttacks[i].comboSteps[0].orderAttackType == attackType)
            {
                // Debug.Log(Time.timeSinceLevelLoad + " New combo " + i + " step " + ComboProgress.Count);
                _comboAttacks[i].comboSteps[0].data.lastAttackInCombo  = false;
                _comboAttacks[i].comboSteps[0].data.firstAttackInCombo = true;
                _comboAttacks[i].comboSteps[0].data.comboIndex         = i;
                _comboAttacks[i].comboSteps[0].data.fullCombo          = false;
                _comboAttacks[i].comboSteps[0].data.comboStep          = 0;

                //GuiManager.Instance.ShowComboProgress(ComboProgress);
                return(_comboAttacks[i].comboSteps[0].data);
            }
        }

        Debug.LogError("Could not find any combo attack !!! Some shit happens");

        return(null);
    }
Example #9
0
 public override AnimAttackData GetFirstAttackAnim(WeaponType weapom, OrderAttackType attackType)
 {
     return(AnimAttacksSwordL);
 }
Example #10
0
 // 该函数可以删除
 public override AnimAttackData GetFirstAttackAnim(WeaponType weapon, OrderAttackType attackType)
 {
     //if (attackType == OrderAttackType.FATALITY)
     //  return _attackKnockdown;
     return(null);
 }
 public override void Activate()
 {
     CurrentAttacktype = OrderAttackType.X;
     NumberOfAttacks   = UnityEngine.Random.Range(2, 4);
     base.Activate();
 }