/*
* auto generated by tools(注意:千万不要手动修改本文件)
* MusicContainer
*/
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace OCES.Audio
{
[Serializable]
public partial class MusicContainer : IBinarySerializable
{
///
/// 一定不要出现循环
///
public uint Id { get; set; }
///
/// 1000000以下的是musicId 以上的是ContainerId
///
public List Segments { get; set; }
///
/// 0 = 随机播放
/// 1 = 顺序播放
/// 2 = 同时播放
///
public ContainerType ContainerType { get; set; }
///
/// 0 = 步进
/// 1 = 持续
///
public bool ContainerPlayMode { get; set; }
///
/// sequence: 间隔时间(s)
///
public ushort StrategyParam { get; set; }
///
/// -1 = 无限循环
/// 0 = 不循环
/// >= 1 按次数循环
///
public short LoopCount { get; set; }
///
/// 速度
/// 可以是小数
///
public float Bpm { get; set; }
///
/// 拍号
/// 采用德国体系定义
///
public string TimeSig { get; set; }
public void DeSerialize(BinaryReader reader)
{
Id = reader.ReadUInt32();
var segmentsCount = reader.ReadInt32();
if (segmentsCount > 0)
{
Segments = new List();
for (int i = 0; i < segmentsCount; i++)
{
Segments.Add(reader.ReadUInt32());
}
}
else
{
Segments = null;
}
ContainerType = (ContainerType)reader.ReadByte();
ContainerPlayMode = reader.ReadBoolean();
StrategyParam = reader.ReadUInt16();
LoopCount = reader.ReadInt16();
Bpm = reader.ReadSingle();
TimeSig = reader.ReadString();
}
public void Serialize(BinaryWriter writer)
{
writer.Write(Id);
if (Segments == null || Segments.Count == 0)
{
writer.Write(0);
}
else
{
writer.Write(Segments.Count);
for (int i = 0; i < Segments.Count; i++)
{
writer.Write(Segments[i]);
}
}
writer.Write((byte)ContainerType);
writer.Write(ContainerPlayMode);
writer.Write(StrategyParam);
writer.Write(LoopCount);
writer.Write(Bpm);
writer.Write(TimeSig);
}
}
[Serializable]
public partial class MusicContainerConfig : IBinarySerializable
{
Dictionary m_musicContainerInfos = new();
List m_musicContainerInfoList;
public List MusicContainerList()
{
this.m_musicContainerInfoList ??= new List(m_musicContainerInfos.Values);
return this.m_musicContainerInfoList;
}
public void DeSerialize(BinaryReader reader)
{
int count = reader.ReadInt32();
for (int i = 0; i < count; i++)
{
MusicContainer tempData = new();
tempData.DeSerialize(reader);
this.m_musicContainerInfos.Add(tempData.Id, tempData);
}
}
public void Serialize(BinaryWriter writer)
{
writer.Write(this.m_musicContainerInfos.Count);
foreach (MusicContainer musicContainer in this.m_musicContainerInfos.Values)
{
musicContainer.Serialize(writer);
}
}
public MusicContainer QueryById(uint id)
{
return this.m_musicContainerInfos.GetValueOrDefault(id);
}
}
}