@@ -92,10 +92,29 @@ public IEnumerable<SaveFile> GetSaveEntries(GameInfo info, UserContainerFolder u
9292 return handler . GetSaveEntries ( conts , info . HandlerArgs ) ;
9393 }
9494
95- private void DeleteDir ( ContainerEntry entry )
95+ private bool IsNumeric ( string s ) => double . TryParse ( s , out _ ) ;
96+ private bool ExtensionIsNumeric ( string extensionStr )
97+ {
98+ if ( string . IsNullOrEmpty ( extensionStr ) ) return false ;
99+ return IsNumeric ( extensionStr . Replace ( "." , "" ) ) ;
100+ }
101+
102+ private void HandleEntryDeletion ( ContainerEntry entry )
96103 {
97104 var file = new FileInfo ( entry . Path ) ;
98- if ( file . Exists ) file . Directory . Delete ( true ) ;
105+ var dir = file . Directory ;
106+ var otherFiles = dir . EnumerateFiles ( ) . Where ( f => f . FullName != file . FullName ) . ToArray ( ) ;
107+
108+ if ( otherFiles . Length == 1 && ExtensionIsNumeric ( otherFiles [ 0 ] . Extension ) ) // 1cn1f delete entire folder
109+ {
110+ Console . WriteLine ( $ "Removing { dir . FullName } ") ;
111+ dir . Delete ( true ) ;
112+ }
113+ else // delete only entry file
114+ {
115+ Console . WriteLine ( $ "Removing { file . FullName } ") ;
116+ file . Delete ( ) ;
117+ }
99118 }
100119
101120 public void ReplaceEntries ( GameInfo info , UserContainerFolder userContainer , IEnumerable < EntryReplacement > replacements )
@@ -109,8 +128,7 @@ public void ReplaceEntries(GameInfo info, UserContainerFolder userContainer, IEn
109128 Console . WriteLine ( "" ) ;
110129 foreach ( var rep in replacements . Where ( x => x . ReplacementFile == null ) )
111130 {
112- Console . WriteLine ( $ "Removing { rep . TargetFile . Path } ") ;
113- DeleteDir ( rep . TargetFile ) ;
131+ HandleEntryDeletion ( rep . TargetFile ) ;
114132 Console . WriteLine ( "" ) ;
115133 }
116134 foreach ( var rep in replacements . Where ( x => x . ReplacementFile != null ) )
@@ -210,7 +228,7 @@ private List<ContainerEntry> ReadContainerBlob(string containerFolder, int conta
210228 ? path2
211229 : null ! ;
212230
213- if ( chosen == null )
231+ if ( chosen == null || ! File . Exists ( chosen ) )
214232 {
215233 Console . WriteLine ( $ "!! Missing file blob for { fileName } ") ;
216234 continue ;
0 commit comments