Example #1
0
        public void AfterAttack(PlayerWeaponController controller, IWeaponCmd cmd)
        {
            var weaponState = controller.HeldWeaponAgent.RunTimeComponent;

            weaponState.MeleeAttacking         = true;
            weaponState.NextAttackingTimeLimit = controller.RelatedTime.ClientTime + _maxCD;
            //TODO 声音和特效添加
            if (cmd.IsFire)
            {
                StartMeleeAttack(controller, cmd.RenderTime + _config.AttackInterval,
                                 new MeleeAttackInfo {
                    AttackType = MeleeAttckType.LeftMeleeAttack
                },
                                 _config);
            }
            else
            {
                StartMeleeAttack(controller, cmd.RenderTime + _config.SpecialAttackInterval,
                                 new MeleeAttackInfo {
                    AttackType = MeleeAttckType.RightMeleeAttack
                },
                                 _config);
            }
            controller.ExpendAfterAttack();
        }
Example #2
0
        public void OnBulletFire(PlayerWeaponController controller, IWeaponCmd cmd)
        {
            var bulletCfg = controller.HeldWeaponAgent.BulletCfg;

            AssertUtility.Assert(bulletCfg != null);
            var cmdSeq      = cmd.CmdSeq;
            var weaponState = controller.HeldWeaponAgent.RunTimeComponent;

            _bulletInfoProvider.Prepare(controller);
            // 射出子弹
            for (int i = 0; i < bulletCfg.HitCount; i++)
            {
                var bulletData = PlayerBulletData.Allocate();
                bulletData.Dir            = _bulletInfoProvider.GetFireDir(cmdSeq + i, controller);
                weaponState.LastBulletDir = bulletData.Dir;
                bulletData.ViewPosition   = _bulletInfoProvider.GetFireViewPosition(controller);
                bulletData.EmitPosition   = _bulletInfoProvider.GetFireEmitPosition(controller);
                controller.AddAuxBullet(bulletData);
            }
            controller.AutoFire = 0;
            controller.ExpendAfterAttack();
        }
Example #3
0
        public void AfterAttack(PlayerWeaponController controller, IWeaponCmd cmd)
        {
            var weaponState = controller.HeldWeaponAgent.RunTimeComponent;

            //TODO 声音和特效添加
            if (cmd.IsFire)
            {
                StartMeleeAttack(controller, cmd.RenderTime + _config.DamageInterval,
                                 new MeleeAttackInfo {
                    AttackType = MeleeAttckType.LeftMeleeAttack
                },
                                 _config);
            }
            else
            {
                StartMeleeAttack(controller, cmd.RenderTime + _config.SpecialDamageInterval,
                                 new MeleeAttackInfo {
                    AttackType = MeleeAttckType.RightMeleeAttack
                },
                                 _config);
            }
            controller.ExpendAfterAttack();
        }