public void AddMusicBox(int musicSlot, int itemType, int tileType, int tileFrameY = 0)
{
if (Main.dedServ)
{
return;
}
if (musicSlot < Main.maxMusic)
{
throw new ArgumentOutOfRangeException("Cannot assign music box to vanilla music ID " + musicSlot);
}
if (musicSlot >= SoundLoader.SoundCount(SoundType.Music))
{
throw new ArgumentOutOfRangeException("Music ID " + musicSlot + " does not exist");
}
if (itemType < ItemID.Count)
{
throw new ArgumentOutOfRangeException("Cannot assign music box to vanilla item ID " + itemType);
}
if (ItemLoader.GetItem(itemType) == null)
{
throw new ArgumentOutOfRangeException("Item ID " + itemType + " does not exist");
}
if (tileType < TileID.Count)
{
throw new ArgumentOutOfRangeException("Cannot assign music box to vanilla tile ID " + tileType);
}
if (TileLoader.GetTile(tileType) == null)
{
throw new ArgumentOutOfRangeException("Tile ID " + tileType + " does not exist");
}
if (SoundLoader.musicToItem.ContainsKey(musicSlot))
{
throw new ArgumentException("Music ID " + musicSlot + " has already been assigned a music box");
}
if (SoundLoader.itemToMusic.ContainsKey(itemType))
{
throw new ArgumentException("Item ID " + itemType + " has already been assigned a music");
}
if (!SoundLoader.tileToMusic.ContainsKey(tileType))
{
SoundLoader.tileToMusic[tileType] = new Dictionary <int, int>();
}
if (SoundLoader.tileToMusic[tileType].ContainsKey(tileFrameY))
{
string message = "Y-frame " + tileFrameY + " of tile type " + tileType + " has already been assigned a music";
throw new ArgumentException(message);
}
if (tileFrameY % 36 != 0)
{
throw new ArgumentException("Y-frame must be divisible by 36");
}
SoundLoader.musicToItem[musicSlot] = itemType;
SoundLoader.itemToMusic[itemType] = musicSlot;
SoundLoader.tileToMusic[tileType][tileFrameY] = musicSlot;
}