Beispiel #1
0
    public override void OnStartAttack(int index)
    {
        ParticlesManager particlesManager = ParticlesManager.Instance;

        if (TimeManager.Instance.IsSlowMotionOn)
        {
            particlesManager.SlowMotionTrailsManager.RegisterNewSlash(index);
        }

        particlesManager.SlashTrailManager.ShootParticle(index);
        Hashtable        parameters = new Hashtable();
        WeaponActionType attackType = WeaponActionType.NONE;

        if (index == 4)
        {
            attackType = WeaponActionType.STAB;
        }
        else if (index == 3)
        {
            attackType = WeaponActionType.UPPERCUT;
        }
        else if (index == 5)
        {
            attackType = WeaponActionType.DOWNWARD_SMASH;
        }
        else
        {
            attackType = WeaponActionType.SLASH;
        }

        parameters.Add(ParameterType.ATTACK_TYPE, attackType);
        hitter.Activate(parameters);

        base.OnStartAttack(index);
    }
Beispiel #2
0
    /// <summary>
    /// Method fires just after specified key combination is detected
    /// </summary>
    /// <param name="actionIndex"></param>
    protected override void requestAction(int actionIndex)
    {
        WeaponActionType action = (WeaponActionType)actionIndex;

        if (rigAnmationController != null && rigAnmationController == rigManager.CurrentRig)
        {
            RigWithKatanaController rigWithKatanaAnimationController = (RigWithKatanaController)rigManager.CurrentRig;

            if (CanAttack)
            {
                CanAttack = false;

                switch (action)
                {
                case WeaponActionType.SLASH:

                    CurrentActionType = WeaponActionType.SLASH;
                    rigWithKatanaAnimationController.Attack();

                    break;

                case WeaponActionType.STAB:

                    CurrentActionType = WeaponActionType.STAB;
                    rigWithKatanaAnimationController.Stab();

                    break;

                case WeaponActionType.UPPERCUT:

                    CurrentActionType = WeaponActionType.UPPERCUT;
                    rigWithKatanaAnimationController.Uppercut();

                    break;

                case WeaponActionType.DOWNWARD_SMASH:

                    if (!characterController.IsGrounded)
                    {
                        CurrentActionType = WeaponActionType.DOWNWARD_SMASH;
                        rigWithKatanaAnimationController.DownwardSmash();
                    }

                    break;
                }
            }
        }
    }
Beispiel #3
0
    protected override void requestAction(int actionIndex)
    {
        WeaponActionType actionType = (WeaponActionType)actionIndex;

        if (rigAnmationController != null && rigAnmationController == rigManager.CurrentRig)
        {
            if (CanAttack)
            {
                CanAttack = false;

                switch (actionType)
                {
                case WeaponActionType.SHOOT:

                    if (Bullets > 0)
                    {
                        CurrentActionType = WeaponActionType.SHOOT;
                        rigAnmationController.Attack();
                        shoot();
                    }
                    else
                    {
                        CurrentActionType = WeaponActionType.RELOAD;
                        rigAnmationController.Reload();
                    }

                    break;

                case WeaponActionType.RELOAD:

                    CurrentActionType = WeaponActionType.RELOAD;
                    rigAnmationController.Reload();

                    break;
                }
            }
        }
    }
Beispiel #4
0
    void onMessageFromHitterRecived(Hashtable parameters)
    {
        if (parameters != null)
        {
            if (parameters.ContainsKey(ParameterType.SENDER_TYPE))
            {
                SenderType senderType = (SenderType)parameters [ParameterType.SENDER_TYPE];

                switch (senderType)
                {
                case SenderType.OBJECT:
                case SenderType.NPC:

                    ShakeEffect.Instance.ShakeAndClampToGivenValue(0.5f);
                    ParticlesManager.Instance.SwordOnHitParticleManager.ShootParticle();

                    break;
                }
            }

            if (parameters.ContainsKey(ParameterType.ATTACK_TYPE))
            {
                WeaponActionType actionType = (WeaponActionType)parameters [ParameterType.ATTACK_TYPE];

                switch (actionType)
                {
                case WeaponActionType.BLOCK:

                    animator.SetTrigger("BLOCKED");
                    hitter.Deactivate();

                    break;
                }
            }
        }
    }
Beispiel #5
0
    void onHitterActivated(ActivatableHitter hitter, Hashtable parameters)
    {
        if (!IsGrounded)
        {
            Vector3 velocity = this.Velocity;
            velocity.y = 5.5f;
            SetVelocity(velocity);
        }

        if (hitter != null && hitter.HitterType == HitterType.BLADE)
        {
            if (parameters != null && parameters.ContainsKey(ParameterType.ATTACK_TYPE))
            {
                WeaponActionType attackType         = (WeaponActionType)parameters [ParameterType.ATTACK_TYPE];
                Hashtable        feedbackParameters = new Hashtable();
                feedbackParameters.Add(ParameterType.SENDER_TYPE, SenderType.NPC);

                if (mainMovementState != null &&
                    mainMovementState is NPCGroundState &&
                    Random.value < 0.1f &&
                    attackType != WeaponActionType.DOWNWARD_SMASH)
                {
                    attackType = WeaponActionType.BLOCK;
                    feedbackParameters.Add(ParameterType.ATTACK_TYPE, WeaponActionType.BLOCK);
                }

                hitter.SendMessage(feedbackParameters);

                switch (attackType)
                {
                case WeaponActionType.SLASH:

                    onHit(hitter);

                    break;

                case WeaponActionType.UPPERCUT:

                    upperCut();

                    break;

                case WeaponActionType.STAB:

                    stab();

                    break;

                case WeaponActionType.BLOCK:

                    block();

                    break;

                case WeaponActionType.DOWNWARD_SMASH:

                    smashed();

                    break;
                }
            }
        }
    }