public string FormatForGraceNote()
{
if ( Type == 0x02 ) {
if ( Text == null ) { throw new Exception( "TextType ScriptEntry is missing Text!" ); }
return Text;
} else {
StringBuilder sb = new StringBuilder();
sb.Append( '<' );
switch ( Type ) {
//case 0x00: entry.Arguments = new byte[2]; break;
//case 0x01: entry.Arguments = new byte[3]; break;
//case 0x03: entry.Arguments = new byte[1]; break;
//case 0x04: entry.Arguments = new byte[4]; break;
case 0x05:
sb.Append( "FMV:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( a.ToString() ); }
break;
//case 0x06: entry.Arguments = new byte[8]; break;
case 0x08:
sb.Append( "Voice: " );
sb.Append( '[' ).Append( DanganUtil.CharacterIdToName( Arguments[0] ) ).Append( ']' );
for ( int i = 1; i < Arguments.Length; ++i ) { sb.Append( " " ).Append( Arguments[i].ToString() ); }
break;
case 0x09:
sb.Append( "Music:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( a.ToString() ); }
break;
case 0x0A:
sb.Append( "Sound:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( a.ToString() ); }
break;
//case 0x0B: entry.Arguments = new byte[2]; break;
//case 0x0C: entry.Arguments = new byte[2]; break;
//case 0x0D: entry.Arguments = new byte[3]; break;
//case 0x0E: entry.Arguments = new byte[2]; break;
//case 0x0F: entry.Arguments = new byte[3]; break;
//case 0x10: entry.Arguments = new byte[3]; break;
//case 0x11: entry.Arguments = new byte[4]; break;
//case 0x14: entry.Arguments = new byte[3]; break;
//case 0x15: entry.Arguments = new byte[3]; break;
case 0x19:
sb.Append( "LoadScript:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( a.ToString() ); }
break;
//case 0x1A: entry.Arguments = new byte[0]; break;
//case 0x1B: entry.Arguments = new byte[3]; break;
//case 0x1C: entry.Arguments = new byte[0]; break;
case 0x1E:
sb.Append( "Sprite: " );
sb.Append( "0x" ).Append( Arguments[0].ToString( "X2" ) ).Append( ' ' );
sb.Append( '[' ).Append( DanganUtil.CharacterIdToName( Arguments[1] ) ).Append( ']' );
for ( int i = 2; i < Arguments.Length; ++i ) { sb.Append( " " ).Append( Arguments[i].ToString() ); }
break;
//case 0x1F: entry.Arguments = new byte[7]; break;
//case 0x20: entry.Arguments = new byte[5]; break;
case 0x21:
sb.Append( "Speaker: " );
sb.Append( '[' ).Append( DanganUtil.CharacterIdToName( Arguments[0] ) ).Append( ']' );
for ( int i = 1; i < Arguments.Length; ++i ) { sb.Append( " " ).Append( Arguments[i].ToString() ); }
break;
//case 0x22: entry.Arguments = new byte[3]; break;
//case 0x23: entry.Arguments = new byte[5]; break;
//case 0x25: entry.Arguments = new byte[2]; break;
//case 0x26: entry.Arguments = new byte[3]; break;
//case 0x27: entry.Arguments = new byte[1]; break;
//case 0x29: entry.Arguments = new byte[1]; break;
//case 0x2A: entry.Arguments = new byte[2]; break;
//case 0x2B: entry.Arguments = new byte[1]; break;
//case 0x2E: entry.Arguments = new byte[2]; break;
//case 0x30: entry.Arguments = new byte[3]; break;
//case 0x33: entry.Arguments = new byte[4]; break;
//case 0x34: entry.Arguments = new byte[2]; break;
//case 0x38: entry.Arguments = new byte[5]; break;
//case 0x39: entry.Arguments = new byte[5]; break;
case 0x3A:
if ( DanganUtil.GameVersion == 1 ) {
sb.Append( "WaitPlayerInput" );
if ( Arguments.Length != 0 ) { throw new Exception( "0x3A has arguments!" ); }
} else if ( DanganUtil.GameVersion >= 2 ) {
sb.Append( "0x3A:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( "0x" ).Append( a.ToString( "X2" ) ); }
}
break;
case 0x3B:
if ( DanganUtil.GameVersion == 1 ) {
sb.Append( "WaitFrame" );
if ( Arguments.Length != 0 ) { throw new Exception( "0x3B has arguments!" ); }
} else if ( DanganUtil.GameVersion >= 2 ) {
sb.Append( "0x3B:" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( "0x" ).Append( a.ToString( "X2" ) ); }
}
break;
//case 0x3C: entry.Arguments = new byte[0]; break;
// SDR2: 0x4C -> WaitFrame; 0x4B -> WaitPlayerInput
case 0x4B:
sb.Append( "SDR2-WaitPlayerInput" );
if ( Arguments.Length != 0 ) { throw new Exception( "0x4B has arguments!" ); }
break;
case 0x4C:
sb.Append( "SDR2-WaitFrame" );
if ( Arguments.Length != 0 ) { throw new Exception( "0x4C has arguments!" ); }
break;
default:
sb.Append( "0x" ).Append( Type.ToString( "X2" ) ).Append( ":" );
foreach ( byte a in Arguments ) { sb.Append( " " ).Append( "0x" ).Append( a.ToString( "X2" ) ); }
break;
}
sb.Append( '>' );
return sb.ToString();
}
}