public static bool Load([NotNull] this VolumeID obj, BinaryReader reader) { obj.VolumeIDSize = reader.ReadUInt32(); obj.DriveType = (DriveType)reader.ReadInt32(); obj.DriveSerialNumber = reader.ReadUInt32(); obj.VolumeLabelOffset = reader.ReadUInt32(); if (obj.VolumeLabelOffset == 0x00000014) { obj.VolumeLabelOffsetUnicode = reader.ReadUInt32(); } var bytesToEat = (int)(obj.VolumeLabelOffsetUnicode ?? obj.VolumeLabelOffset) - (obj.VolumeLabelOffset != 0x00000014 ? 16 : 20); if (bytesToEat > 0) { reader.ReadBytes(bytesToEat); } if (obj.VolumeLabelOffsetUnicode == null) { obj.Data = reader.ReadNullTerminatedString(Encoding.Default); } else { obj.Data = reader.ReadNullTerminatedString(Encoding.Unicode); } return(true); }
/// <summary> /// ボリュームの値を返す /// </summary> /// <param name="volumeID"> どのボリュームを返すか </param> /// <returns></returns> public float Volume(VolumeID volumeID) { switch (volumeID) { case 0: return(bgmVolume); case (VolumeID)1: return(seVolume); default: return(voiceVolume); } }
/// <summary> /// sets volume symbols /// use VolumeID enum and SymbolState enum as argument /// </summary> /// <param name="volumeid">id of volume symbol</param> /// <param name="symbolstate">symbol state</param> public void SetVolume(VolumeID volumeid, SymbolState symbolstate) { //create handle for datagram Byte[] btDatagram = new Byte[64]; try { //create datagram btDatagram[0x00] = 0x04; //count of successive bytes btDatagram[0x01] = 0x1b; //header (fix value) btDatagram[0x02] = 0x30; //command: set a symbol btDatagram[0x03] = Convert.ToByte(volumeid); //ID of volume symbol btDatagram[0x04] = Convert.ToByte(symbolstate); //required state of symbol //send command SendCommand(btDatagram); } catch (Exception ex) { throw new Exception("Setting volume symbol failed: ", ex); } }
} // Optional public VolumeIDHandler(VolumeID item) { _item = item; }