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