Exemple #1
0
        private void AttachSource(AudioSource source)
        {
            if (this.audioPlayback == null)
            {
                return;
            }

            float gain = 1.0f;

            var user = gablarski.Users[source.OwnerId];

            if (user != null)
            {
                users.RemoveUser(user);
                users.AddUser(user, gablarski.Sources[user]);

                VolumeEntry volume = ClientData.GetVolumes(this.server).FirstOrDefault(ve => ve.Username == user.Username);
                if (volume != null)
                {
                    gain = volume.Gain;
                }
            }

            this.gablarski.Audio.Attach(this.audioPlayback, source, new AudioEnginePlaybackOptions(gain));
        }
 private void AssertSufficientDiskSpace(long extraDiskSpaceNeeded, [NotNull] VolumeEntry volume)
 {
     if (extraDiskSpaceNeeded > 0 && volume.FreeSpaceInBytes < extraDiskSpaceNeeded)
     {
         throw ErrorFactory.System.NotEnoughSpaceOnDisk();
     }
 }
Exemple #3
0
        /// <summary>
        /// Updates data for given entry
        /// </summary>
        /// <param name="entry"></param>
        public void SetVolumeForSample(VolumeEntry entry)
        {
            using (BinaryWriter writer = new BinaryWriter(new MemoryStream(_Data)))
            {
                // IN volume : name address - 24 bytes
                writer.BaseStream.Seek(entry.inAddress, SeekOrigin.Begin);
                writer.Write(entry.inVolume);

                // OUT volume : name address - 20 bytes
                writer.BaseStream.Seek(entry.outAddress, SeekOrigin.Begin);
                writer.Write(entry.outVolume);
            };
        }
Exemple #4
0
 private void AssertIsEncryptingOnNtFsVolume([NotNull] FileCryptoArguments arguments)
 {
     if (arguments.IsEncrypt)
     {
         if (Container.ContainsVolume(arguments.Path.VolumeName))
         {
             VolumeEntry volume = Container.GetVolume(arguments.Path.VolumeName);
             if (volume.Format != FakeVolumeInfo.NtFs)
             {
                 throw new NotSupportedException("File encryption support only works on NTFS partitions.");
             }
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// Returns a volume entry corresponding to given sample name.
        /// </summary>
        /// <param name="sampleName"></param>
        /// <returns></returns>
        /// <exception cref="Exception">When sample does not exist</exception>
        public VolumeEntry GetVolumeForSample(string sampleName)
        {
            // Converts string into Array
            byte[] searchedArray   = new byte[sampleName.Length + 2];
            byte[] sampleNameArray = System.Text.Encoding.ASCII.GetBytes(sampleName);

            // Zone starts with  '80,3F'
            searchedArray[0] = 0x80;
            searchedArray[1] = 0x3F;
            Array.Copy(sampleNameArray, 0, searchedArray, 2, sampleNameArray.Length);

            // Begins search
            int zoneIndex = _SubArray(_Data, searchedArray);

            if (zoneIndex == -1)
            {
                string msgFormat = "Sound sample '{0}' not found!";
                throw new Exception(string.Format(msgFormat, sampleName));
            }

            // Retrieves values in data bytes
            VolumeEntry entry = new VolumeEntry();

            entry.sampleName = sampleName;

            zoneIndex += 2;
            using (BinaryReader reader = new BinaryReader(new MemoryStream(_Data)))
            {
                // IN volume : name address - 24 bytes
                uint inAddress = (uint)zoneIndex - 24;
                reader.BaseStream.Seek(inAddress, SeekOrigin.Begin);
                float inVolume = reader.ReadSingle();
                entry.inAddress = inAddress;
                entry.inVolume  = inVolume;

                // OUT volume : name address - 20 bytes
                uint outAddress = (uint)zoneIndex - 20;
                reader.BaseStream.Seek(outAddress, SeekOrigin.Begin);
                float outVolume = reader.ReadSingle();
                entry.outAddress = outAddress;
                entry.outVolume  = outVolume;
            };

            return(entry);
        }
Exemple #6
0
        private void VolumeOnClick(object sender, EventArgs eventArgs)
        {
            var         user  = (IUserInfo)this.SelectedNode.Tag;
            VolumeEntry entry = ClientData.GetVolumes(Server).FirstOrDefault(ve => ve.Username == user.Username)
                                ?? new VolumeEntry {
                Username = user.Username, ServerId = Server.Id
            };

            VolumeForm volume = new VolumeForm(entry.Gain, v =>
            {
                foreach (var s in Client.Sources[user])
                {
                    Client.Audio.Update(s, new AudioEnginePlaybackOptions(v));
                }
            },

                                               v =>
            {
                entry.Gain = v;
                ClientData.SaveOrUpdate(entry);
            });

            volume.ShowDialog(this.Parent);
        }
Exemple #7
0
 public VolumeSpaceTracker([NotNull] VolumeEntry volume)
 {
     Guard.NotNull(volume, nameof(volume));
     this.volume = volume;
 }