1717using System . Text ;
1818using System . Threading . Tasks ;
1919using static MiloLib . Assets . DirectoryMeta ;
20+ using static MiloLib . Assets . Ham . Range ;
2021
2122namespace MiloLib . Assets
2223{
@@ -466,6 +467,11 @@ public void Write(EndianWriter writer)
466467
467468 writer . WriteInt32 ( ( entries . Count * 2 ) + 4 ) ;
468469 writer . WriteUInt32 ( stringTableSize ) ;
470+
471+ if ( revision >= 32 )
472+ {
473+ writer . WriteBoolean ( false ) ;
474+ }
469475
470476 writer . WriteInt32 ( ( int ) entries . Count ) ;
471477
@@ -728,11 +734,13 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
728734 Debug . WriteLine ( "Reading entry ObjectDir " + entry . name . value ) ;
729735 entry . isProxy = true ;
730736 entry . obj = new ObjectDir ( 0 ) . Read ( reader , true , this , entry ) ;
731-
732- dir = new DirectoryMeta ( ) ;
733- dir . platform = platform ;
734- dir . Read ( reader ) ;
735- entry . dir = dir ;
737+ if ( ( ( ObjectDir ) entry . obj ) . inlineProxy && ( ( ObjectDir ) entry . obj ) . proxyPath . value != "" )
738+ {
739+ dir = new DirectoryMeta ( ) ;
740+ dir . platform = platform ;
741+ dir . Read ( reader ) ;
742+ entry . dir = dir ;
743+ }
736744 break ;
737745 case "OverdriveMeterDir" :
738746 Debug . WriteLine ( "Reading entry OverdriveMeterDir " + entry . name . value ) ;
@@ -974,6 +982,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
974982 Debug . WriteLine ( "Reading entry BandSwatch " + entry . name . value ) ;
975983 entry . obj = new BandSwatch ( ) . Read ( reader , true , this , entry ) ;
976984 break ;
985+ case "BustAMoveData" :
986+ Debug . WriteLine ( "Reading entry BustAMoveData " + entry . name . value ) ;
987+ entry . obj = new BustAMoveData ( ) . Read ( reader , true , this , entry ) ;
988+ break ;
977989 case "Cam" :
978990 Debug . WriteLine ( "Reading entry Cam " + entry . name . value ) ;
979991 entry . obj = new RndCam ( ) . Read ( reader , true , this , entry ) ;
@@ -1042,6 +1054,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10421054 Debug . WriteLine ( "Reading entry ColorPalette " + entry . name . value ) ;
10431055 entry . obj = new ColorPalette ( ) . Read ( reader , true , this , entry ) ;
10441056 break ;
1057+ case "DancerSequence" :
1058+ Debug . WriteLine ( "Reading entry DancerSequence " + entry . name . value ) ;
1059+ entry . obj = new DancerSequence ( ) . Read ( reader , true , this , entry ) ;
1060+ break ;
10451061 case "Environ" :
10461062 Debug . WriteLine ( "Reading entry Environ " + entry . name . value ) ;
10471063 entry . obj = new RndEnviron ( ) . Read ( reader , true , this , entry ) ;
@@ -1059,6 +1075,22 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10591075 Debug . WriteLine ( "Reading entry Group " + entry . name . value ) ;
10601076 entry . obj = new RndGroup ( ) . Read ( reader , true , this , entry ) ;
10611077 break ;
1078+ case "HamBattleData" :
1079+ Debug . WriteLine ( "Reading entry HamBattleData " + entry . name . value ) ;
1080+ entry . obj = new HamBattleData ( ) . Read ( reader , true , this , entry ) ;
1081+ break ;
1082+ case "HamMove" :
1083+ Debug . WriteLine ( "Reading entry HamMove " + entry . name . value ) ;
1084+ entry . obj = new HamMove ( ) . Read ( reader , true , this , entry ) ;
1085+ break ;
1086+ case "HamPartyJumpData" :
1087+ Debug . WriteLine ( "Reading entry HamPartyJumpData " + entry . name . value ) ;
1088+ entry . obj = new HamPartyJumpData ( ) . Read ( reader , true , this , entry ) ;
1089+ break ;
1090+ case "HamSupereasyData" :
1091+ Debug . WriteLine ( "Reading entry HamSupereasyData " + entry . name . value ) ;
1092+ entry . obj = new HamSupereasyData ( ) . Read ( reader , true , this , entry ) ;
1093+ break ;
10621094 case "InlineHelp" :
10631095 Debug . WriteLine ( "Reading entry InlineHelp " + entry . name . value ) ;
10641096 entry . obj = new InlineHelp ( ) . Read ( reader , true , this , entry ) ;
@@ -1083,6 +1115,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
10831115 Debug . WriteLine ( "Reading entry MotionBlur " + entry . name . value ) ;
10841116 entry . obj = new RndMotionBlur ( ) . Read ( reader , true , this , entry ) ;
10851117 break ;
1118+ case "MoveGraph" :
1119+ Debug . WriteLine ( "Reading entry MoveGraph " + entry . name . value ) ;
1120+ entry . obj = new MoveGraph ( ) . Read ( reader , true , this , entry ) ;
1121+ break ;
10861122 case "Object" :
10871123 Debug . WriteLine ( "Reading entry Object " + entry . name . value ) ;
10881124 entry . obj = new Object ( ) . Read ( reader , true , this , entry ) ;
@@ -1113,6 +1149,10 @@ public void ReadEntry(EndianReader reader, DirectoryMeta.Entry entry)
11131149 Debug . WriteLine ( "Reading entry PostProc " + entry . name . value ) ;
11141150 entry . obj = new RndPostProc ( ) . Read ( reader , true , this , entry ) ;
11151151 break ;
1152+ case "PracticeSection" :
1153+ Debug . WriteLine ( "Reading entry PracticeSection " + entry . name . value ) ;
1154+ entry . obj = new PracticeSection ( ) . Read ( reader , true , this , entry ) ;
1155+ break ;
11161156 case "PropAnim" :
11171157 Debug . WriteLine ( "Reading entry PropAnim " + entry . name . value ) ;
11181158 entry . obj = new RndPropAnim ( ) . Read ( reader , true , this , entry ) ;
@@ -1362,12 +1402,18 @@ public void WriteEntry(EndianWriter writer, DirectoryMeta.Entry entry)
13621402 case "MoveDir" :
13631403 ( ( MoveDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
13641404 entry . isProxy = false ;
1365- entry . dir . Write ( writer ) ;
1405+ if ( entry . dir != null )
1406+ {
1407+ entry . dir . Write ( writer ) ;
1408+ }
13661409 break ;
13671410 case "ObjectDir" :
13681411 ( ( ObjectDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
1369- entry . isProxy = false ;
1370- entry . dir . Write ( writer ) ;
1412+ if ( entry . dir != null )
1413+ {
1414+ entry . isProxy = false ;
1415+ entry . dir . Write ( writer ) ;
1416+ }
13711417 break ;
13721418 case "OverdriveMeterDir" :
13731419 ( ( OverdriveMeterDir ) entry . obj ) . Write ( writer , true , this , entry ) ;
@@ -1713,6 +1759,30 @@ public void WriteEntry(EndianWriter writer, DirectoryMeta.Entry entry)
17131759 case "WorldReflection" :
17141760 ( ( WorldReflection ) entry . obj ) . Write ( writer , true , this , entry ) ;
17151761 break ;
1762+ case "DancerSequence" :
1763+ ( ( DancerSequence ) entry . obj ) . Write ( writer , true , this , entry ) ;
1764+ break ;
1765+ case "MoveGraph" :
1766+ ( ( MoveGraph ) entry . obj ) . Write ( writer , true , this , entry ) ;
1767+ break ;
1768+ case "HamMove" :
1769+ ( ( HamMove ) entry . obj ) . Write ( writer , true , this , entry ) ;
1770+ break ;
1771+ case "BustAMoveData" :
1772+ ( ( BustAMoveData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1773+ break ;
1774+ case "PracticeSection" :
1775+ ( ( PracticeSection ) entry . obj ) . Write ( writer , true , this , entry ) ;
1776+ break ;
1777+ case "HamBattleData" :
1778+ ( ( HamBattleData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1779+ break ;
1780+ case "HamPartyJumpData" :
1781+ ( ( HamPartyJumpData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1782+ break ;
1783+ case "HamSupereasyData" :
1784+ ( ( HamSupereasyData ) entry . obj ) . Write ( writer , true , this , entry ) ;
1785+ break ;
17161786 // re-enable when the class is 100%
17171787 //case "CharClip":
17181788 // Debug.WriteLine("Reading entry CharClip " + entry.name.value);
0 commit comments