public Gun(ItemManager itemManager, MasterRenderer renderer) : base(renderer, itemManager, ItemType.Gun) { CurrentMag = GunConfig.MagazineSize; StoredAmmo = GunConfig.MagazineSize * GunConfig.MaxStoredMags; if (GlobalNetwork.IsClient && GlobalNetwork.IsConnected) { ServerMag = (ushort)CurrentMag; ServerStoredAmmo = (ushort)StoredAmmo; } fovAnim = new FloatAnim(); modelAnim = new Vector3Anim(); muzzleFlash = itemManager.GetMuzzleFlash(); if (!GlobalNetwork.IsServer) { if (itemManager.IsReplicated) { if (GunConfig.PrimaryFireAudio?.ReplicatedFilepath != null) { fireAudioSource = LoadAudioFromConfig(GunConfig.PrimaryFireAudio, replicated: true, far: false); } if (GunConfig.PrimaryFireAudio?.FarFilepath != null) { fireFarAudioSource = LoadAudioFromConfig(GunConfig.PrimaryFireAudio, replicated: true, far: true); } if (GunConfig.ReloadAudio?.ReplicatedFilepath != null) { reloadAudioSource = LoadAudioFromConfig(GunConfig.ReloadAudio, replicated: true); } } else { if (GunConfig.PrimaryFireAudio?.LocalFilepath != null) { fireAudioSource = LoadAudioFromConfig(GunConfig.PrimaryFireAudio); } if (GunConfig.ReloadAudio?.LocalFilepath != null) { reloadAudioSource = LoadAudioFromConfig(GunConfig.ReloadAudio); } AudioBuffer dryFireBuffer = AssetManager.LoadSound("Weapons/dry-fire.wav"); if (dryFireBuffer != null) { dryFireAudioSource = new AudioSource(dryFireBuffer); dryFireAudioSource.IsSourceRelative = true; dryFireAudioSource.Gain = 0.5f; } } } }
public ItemManager(MasterRenderer renderer, Player ownerPlayer, World world, ItemViewbob viewbob) { this.renderer = renderer; this.viewbob = viewbob; OwnerPlayer = ownerPlayer; World = world; if (GlobalNetwork.IsClient) { muzzleFlash = new ClientMuzzleFlash(renderer, ownerPlayer); } else { muzzleFlash = new ServerMuzzleFlash(); } SelectedItemIndex = -1; }