1717using System . Text ;
1818using System . Threading . Tasks ;
1919using static MiloLib . Assets . DirectoryMeta ;
20+ using static MiloLib . Assets . Ham . Range ;
2021
2122namespace MiloLib . Assets
2223{
@@ -455,6 +456,11 @@ public void Write(EndianWriter writer)
455456
456457 writer . WriteInt32 ( ( entries . Count * 2 ) + 4 ) ;
457458 writer . WriteUInt32 ( stringTableSize ) ;
459+
460+ if ( revision >= 32 )
461+ {
462+ writer . WriteBoolean ( false ) ;
463+ }
458464
459465 writer . WriteInt32 ( ( int ) entries . Count ) ;
460466
@@ -717,11 +723,13 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
717723 Debug . WriteLine ( "Reading entry ObjectDir " + entry . name . value ) ;
718724 entry . isProxy = true ;
719725 entry . obj = new ObjectDir ( 0 ) . Read ( reader , true , this , entry ) ;
720-
721- dir = new DirectoryMeta ( ) ;
722- dir . platform = platform ;
723- dir . Read ( reader ) ;
724- entry . dir = dir ;
726+ if ( ( ( ObjectDir ) entry . obj ) . inlineProxy && ( ( ObjectDir ) entry . obj ) . proxyPath . value != "" )
727+ {
728+ dir = new DirectoryMeta ( ) ;
729+ dir . platform = platform ;
730+ dir . Read ( reader ) ;
731+ entry . dir = dir ;
732+ }
725733 break ;
726734 case "OverdriveMeterDir" :
727735 Debug . WriteLine ( "Reading entry OverdriveMeterDir " + entry . name . value ) ;
@@ -956,6 +964,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
956964 Debug . WriteLine ( "Reading entry BandSwatch " + entry . name . value ) ;
957965 entry . obj = new BandSwatch ( ) . Read ( reader , true , this , entry ) ;
958966 break ;
967+ case "BustAMoveData" :
968+ Debug . WriteLine ( "Reading entry BustAMoveData " + entry . name . value ) ;
969+ entry . obj = new BustAMoveData ( ) . Read ( reader , true , this , entry ) ;
970+ break ;
959971 case "Cam" :
960972 Debug . WriteLine ( "Reading entry Cam " + entry . name . value ) ;
961973 entry . obj = new RndCam ( ) . Read ( reader , true , this , entry ) ;
@@ -1024,6 +1036,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10241036 Debug . WriteLine ( "Reading entry ColorPalette " + entry . name . value ) ;
10251037 entry . obj = new ColorPalette ( ) . Read ( reader , true , this , entry ) ;
10261038 break ;
1039+ case "DancerSequence" :
1040+ Debug . WriteLine ( "Reading entry DancerSequence " + entry . name . value ) ;
1041+ entry . obj = new DancerSequence ( ) . Read ( reader , true , this , entry ) ;
1042+ break ;
10271043 case "Environ" :
10281044 Debug . WriteLine ( "Reading entry Environ " + entry . name . value ) ;
10291045 entry . obj = new RndEnviron ( ) . Read ( reader , true , this , entry ) ;
@@ -1041,6 +1057,22 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10411057 Debug . WriteLine ( "Reading entry Group " + entry . name . value ) ;
10421058 entry . obj = new RndGroup ( ) . Read ( reader , true , this , entry ) ;
10431059 break ;
1060+ case "HamBattleData" :
1061+ Debug . WriteLine ( "Reading entry HamBattleData " + entry . name . value ) ;
1062+ entry . obj = new HamBattleData ( ) . Read ( reader , true , this , entry ) ;
1063+ break ;
1064+ case "HamMove" :
1065+ Debug . WriteLine ( "Reading entry HamMove " + entry . name . value ) ;
1066+ entry . obj = new HamMove ( ) . Read ( reader , true , this , entry ) ;
1067+ break ;
1068+ case "HamPartyJumpData" :
1069+ Debug . WriteLine ( "Reading entry HamPartyJumpData " + entry . name . value ) ;
1070+ entry . obj = new HamPartyJumpData ( ) . Read ( reader , true , this , entry ) ;
1071+ break ;
1072+ case "HamSupereasyData" :
1073+ Debug . WriteLine ( "Reading entry HamSupereasyData " + entry . name . value ) ;
1074+ entry . obj = new HamSupereasyData ( ) . Read ( reader , true , this , entry ) ;
1075+ break ;
10441076 case "InlineHelp" :
10451077 Debug . WriteLine ( "Reading entry InlineHelp " + entry . name . value ) ;
10461078 entry . obj = new InlineHelp ( ) . Read ( reader , true , this , entry ) ;
@@ -1065,6 +1097,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10651097 Debug . WriteLine ( "Reading entry MotionBlur " + entry . name . value ) ;
10661098 entry . obj = new RndMotionBlur ( ) . Read ( reader , true , this , entry ) ;
10671099 break ;
1100+ case "MoveGraph" :
1101+ Debug . WriteLine ( "Reading entry MoveGraph " + entry . name . value ) ;
1102+ entry . obj = new MoveGraph ( ) . Read ( reader , true , this , entry ) ;
1103+ break ;
10681104 case "Object" :
10691105 Debug . WriteLine ( "Reading entry Object " + entry . name . value ) ;
10701106 entry . obj = new Object ( ) . Read ( reader , true , this , entry ) ;
@@ -1095,6 +1131,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10951131 Debug . WriteLine ( "Reading entry PostProc " + entry . name . value ) ;
10961132 entry . obj = new RndPostProc ( ) . Read ( reader , true , this , entry ) ;
10971133 break ;
1134+ case "PracticeSection" :
1135+ Debug . WriteLine ( "Reading entry PracticeSection " + entry . name . value ) ;
1136+ entry . obj = new PracticeSection ( ) . Read ( reader , true , this , entry ) ;
1137+ break ;
10981138 case "PropAnim" :
10991139 Debug . WriteLine ( "Reading entry PropAnim " + entry . name . value ) ;
11001140 entry . obj = new RndPropAnim ( ) . Read ( reader , true , this , entry ) ;
@@ -1344,12 +1384,18 @@ public void WriteEntry(EndianWriter writer, DirectoryMeta.Entry entry)
13441384 case "MoveDir" :
13451385 ( ( MoveDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
13461386 entry . isProxy = false ;
1347- entry . dir . Write ( writer ) ;
1387+ if ( entry . dir != null )
1388+ {
1389+ entry . dir . Write ( writer ) ;
1390+ }
13481391 break ;
13491392 case "ObjectDir" :
13501393 ( ( ObjectDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
1351- entry . isProxy = false ;
1352- entry . dir . Write ( writer ) ;
1394+ if ( entry . dir != null )
1395+ {
1396+ entry . isProxy = false ;
1397+ entry . dir . Write ( writer ) ;
1398+ }
13531399 break ;
13541400 case "OverdriveMeterDir" :
13551401 ( ( OverdriveMeterDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
@@ -1696,6 +1742,30 @@ public void WriteEntry(EndianWriter writer, DirectoryMeta.Entry entry)
16961742 case "WorldReflection" :
16971743 ( ( WorldReflection ) entry . obj ) . Write ( writer , true , this , entry ) ;
16981744 break ;
1745+ case "DancerSequence" :
1746+ ( ( DancerSequence ) entry . obj ) . Write ( writer , true , this , entry ) ;
1747+ break ;
1748+ case "MoveGraph" :
1749+ ( ( MoveGraph ) entry . obj ) . Write ( writer , true , this , entry ) ;
1750+ break ;
1751+ case "HamMove" :
1752+ ( ( HamMove ) entry . obj ) . Write ( writer , true , this , entry ) ;
1753+ break ;
1754+ case "BustAMoveData" :
1755+ ( ( BustAMoveData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1756+ break ;
1757+ case "PracticeSection" :
1758+ ( ( PracticeSection ) entry . obj ) . Write ( writer , true , this , entry ) ;
1759+ break ;
1760+ case "HamBattleData" :
1761+ ( ( HamBattleData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1762+ break ;
1763+ case "HamPartyJumpData" :
1764+ ( ( HamPartyJumpData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1765+ break ;
1766+ case "HamSupereasyData" :
1767+ ( ( HamSupereasyData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1768+ break ;
16991769 // re-enable when the class is 100%
17001770 //case "CharClip":
17011771 // Debug.WriteLine("Reading entry CharClip " + entry.name.value);
0 commit comments