NScumm.Scumm.Audio.IMuse.IMuseInternal.SetVolchanEntry C# (CSharp) Method

SetVolchanEntry() protected method

protected SetVolchanEntry ( int sound, uint volchan ) : int
sound int
volchan uint
return int
        protected int SetVolchanEntry(int sound, uint volchan)
        {
            var r = GetVolchanEntry(volchan);
            if (r == -1)
                return -1;

            if (r >= 8)
            {
                var player = FindActivePlayer(sound);
                if (player != null && player.VolChan != volchan)
                {
                    player.VolChan = volchan;
                    player.SetVolume(player.Volume);
                    return 0;
                }
                return -1;
            }
            else
            {
                Player best = null;
                var num = 0;
                Player sameid = null;
                foreach (var player in _players)
                {
                    if (player.IsActive)
                    {
                        if (player.VolChan == volchan)
                        {
                            num++;
                            if (best == null || player.Priority <= best.Priority)
                                best = player;
                        }
                        else if (player.Id == sound)
                        {
                            sameid = player;
                        }
                    }
                }
                if (sameid == null)
                    return -1;
                var p = _players.LastOrDefault();
                if (num >= r)
                    best.Clear();
                p.VolChan = volchan;
                p.SetVolume(p.Volume);
                return 0;
            }
        }