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(); }
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(); }
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(); }