@@ -571,7 +571,6 @@ public static void LoadGameLogicDataPatch(Mod mod, JObject gld, JObject patch)
571571 {
572572 try
573573 {
574- HandleSkins ( gld , patch ) ;
575574 foreach ( JToken jtoken in patch . SelectTokens ( "$.*.*" ) . ToArray ( ) )
576575 {
577576 JObject ? token = jtoken . TryCast < JObject > ( ) ;
@@ -616,7 +615,7 @@ public static void LoadGameLogicDataPatch(Mod mod, JObject gld, JObject patch)
616615 }
617616 }
618617 }
619- gld . Merge ( patch , new ( ) { MergeArrayHandling = MergeArrayHandling . Replace , MergeNullValueHandling = MergeNullValueHandling . Merge } ) ;
618+ gld = JsonMerger . Merge ( gld , patch ) ;
620619 Plugin . logger . LogInfo ( $ "Registered patch from { mod . id } mod") ;
621620 }
622621 catch ( Exception e )
@@ -633,73 +632,4 @@ public static void LoadAssetBundle(Mod mod, Mod.File file)
633632 AssetBundle . LoadFromMemory ( file . bytes )
634633 ) ;
635634 }
636-
637- public static void HandleSkins ( JObject gld , JObject patch )
638- {
639- foreach ( JToken jtoken in patch . SelectTokens ( "$.tribeData.*" ) . ToArray ( ) )
640- {
641- JObject token = jtoken . Cast < JObject > ( ) ;
642-
643- if ( token [ "skins" ] != null )
644- {
645- JArray skins = token [ "skins" ] . Cast < JArray > ( ) ;
646- List < string > skinsToRemove = new ( ) ;
647- List < JToken > skinValues = skins . _values . ToArray ( ) . ToList ( ) ;
648- foreach ( var skin in skinValues )
649- {
650- string skinValue = skin . ToString ( ) ;
651- if ( skinValue . StartsWith ( '-' ) && Enum . TryParse < SkinType > ( skinValue . Substring ( 1 ) , out _ ) )
652- {
653- skinsToRemove . Add ( skinValue . Substring ( 1 ) ) ;
654- }
655- else if ( ! Enum . TryParse < SkinType > ( skinValue , out _ ) )
656- {
657- EnumCache < SkinType > . AddMapping ( skinValue . ToLowerInvariant ( ) , ( SkinType ) Registry . autoidx ) ;
658- EnumCache < SkinType > . AddMapping ( skinValue . ToLowerInvariant ( ) , ( SkinType ) Registry . autoidx ) ;
659- Registry . skinInfo . Add ( new Visual . SkinInfo ( Registry . autoidx , skinValue , null ) ) ;
660- Plugin . logger . LogInfo ( "Created mapping for skinType with id " + skinValue + " and index " + Registry . autoidx ) ;
661- Registry . autoidx ++ ;
662- }
663- }
664- foreach ( var skin in Registry . skinInfo )
665- {
666- if ( skins . _values . Contains ( skin . id ) )
667- {
668- skins . _values . Remove ( skin . id ) ;
669- skins . _values . Add ( skin . idx ) ;
670- }
671- }
672- JToken originalSkins = gld . SelectToken ( skins . Path , false ) ;
673- if ( originalSkins != null )
674- {
675- skins . Merge ( originalSkins ) ;
676- foreach ( var skin in skinsToRemove )
677- {
678- skins . _values . Remove ( skin ) ;
679- skins . _values . Remove ( "-" + skin ) ;
680- }
681- }
682- }
683- }
684- foreach ( JToken jtoken in patch . SelectTokens ( "$.skinData.*" ) . ToArray ( ) )
685- {
686- JObject token = jtoken . Cast < JObject > ( ) ;
687- string id = Util . GetJTokenName ( token ) ;
688- int index = Registry . skinInfo . FindIndex ( t => t . id == id ) ;
689- if ( Registry . skinInfo . ElementAtOrDefault ( index ) != null )
690- {
691- SkinData skinData = new ( ) ;
692- if ( token [ "color" ] != null )
693- {
694- skinData . color = ( int ) token [ "color" ] ;
695- }
696- if ( token [ "language" ] != null )
697- {
698- skinData . language = token [ "language" ] . ToString ( ) ;
699- }
700- Registry . skinInfo [ index ] = new Visual . SkinInfo ( Registry . skinInfo [ index ] . idx , Registry . skinInfo [ index ] . id , skinData ) ;
701- }
702- }
703- patch . Remove ( "skinData" ) ;
704- }
705635}
0 commit comments