public override void Init(WeaponData weapon) { if (!(weapon as RangedWeaponData)) { throw new TypeAccessException("Попытка присвоить к оружию дальнего боя данные оружия другого типа"); } base.Init(weapon); var rangeWeapon = (RangedWeaponData)weapon; Range = rangeWeapon.Range; AmmoMax = rangeWeapon.AmmoMax; Accuracy = rangeWeapon.Accuracy; BarrelType = (rangeWeapon.BarrelType == RangedWeaponData.RangeWeaponType.Long) ? RangeWeaponType.Long : RangeWeaponType.Short; }
public void ChangeWeapon(RangeWeaponType rangeWeaponType, GameObject gameObject) { if (rangeWeaponType.Equals(currentWeapon)) { return; } iRangeWeapon?.Destroy(); switch (rangeWeaponType) { case RangeWeaponType.Pistol: iRangeWeapon = gameObject.AddComponent <PistolBullet>(); aimManager.ChangeRange(1.8f); aimManager.ChangeAim(AimType.Line); break; case RangeWeaponType.Rifle: iRangeWeapon = gameObject.AddComponent <RifleBullet>(); aimManager.ChangeRange(1.8f); aimManager.ChangeAim(AimType.Line); break; case RangeWeaponType.Shotgun: iRangeWeapon = gameObject.AddComponent <ShotgunBullet>(); aimManager.ChangeRange(1f); aimManager.ChangeAim(AimType.Cone); break; case RangeWeaponType.Granade: aimManager.ChangeAim(AimType.CircleRange); break; default: throw new ArgumentOutOfRangeException(); } currentWeapon = rangeWeaponType; iRangeWeapon?.Initialize(aimManager); }
public BaseWeaponsController(MeleeWeapons melee, RangeWeaponType range, GameObject gameObject, AimManager playerAim) { aimManager = playerAim; ChangeWeapon(range, gameObject); ChangeMeleeWeapon(melee, gameObject); }