@@ -66,6 +66,8 @@ public sealed class MainWindowViewModel
6666
6767 public bool IsPartsOverrideMode { get ; set ; }
6868
69+ public bool IsFileLoading { get ; set ; }
70+
6971 private JObject ? CurrentYmmp { get ; set ; }
7072
7173 private string ? CurrentYmmpPath { get ; set ; }
@@ -138,8 +140,8 @@ is YmmpTachieType.AnimationTachie
138140 } ,
139141 DefaultMouthImgPath = v . TachieDefaultItemParameter . Mouth ,
140142 TachieType = v . TachieType ,
141- EnableLayers = v . TachieType == YmmpTachieType . PsdTachie
142- ? v . TachieDefaultItemParameter . EnableLayers
143+ EnableLayers = string . Equals ( v . TachieType , YmmpTachieType . PsdTachie
144+ , StringComparison . Ordinal ) ? v . TachieDefaultItemParameter . EnableLayers
143145 : [ ] ,
144146 } ) ;
145147
@@ -211,8 +213,8 @@ is YmmpTachieType.AnimationTachie
211213 loading . Message = "出力対象のフィルタ…" ;
212214 var vItems = voiceItems
213215 . Where ( v =>
214- Characters . Any ( c => c . Name == v . Item . CharacterName )
215- && Characters . First ( c => c . Name == v . Item . CharacterName ) . IsExport
216+ Characters . Any ( c => string . Equals ( c . Name , v . Item . CharacterName , StringComparison . Ordinal ) )
217+ && Characters . First ( c => string . Equals ( c . Name , v . Item . CharacterName , StringComparison . Ordinal ) ) . IsExport
216218 )
217219 . ToList ( )
218220 ;
@@ -455,27 +457,31 @@ private async ValueTask SelectedCharaItemChangedAsync(CharacterListViewModel ite
455457 var chara = item ;
456458 Debug . WriteLine ( $ "SelectedChara: { chara . Name } , isExport: { chara . IsExport } ") ;
457459
458- IsShowPsdLayerSelector = chara . TachieType == YmmpTachieType . PsdTachie ;
460+ IsShowPsdLayerSelector = string . Equals ( chara . TachieType , YmmpTachieType . PsdTachie , StringComparison . Ordinal ) ;
459461
460- if ( chara . TachieType == YmmpTachieType . AnimationTachie )
462+ if ( string . Equals ( chara . TachieType , YmmpTachieType . AnimationTachie , StringComparison . Ordinal ) )
461463 {
462464 //アニメーション立ち絵
463- var flowControl = await LoadLipSyncImagesAsync ( chara ) ;
464- if ( ! flowControl ) { return ; }
465+ IsFileLoading = true ;
466+ await LoadLipSyncImagesAsync ( chara ) ;
467+ IsFileLoading = false ;
465468 }
466- else if ( chara . TachieType == YmmpTachieType . PsdTachie )
469+ else if ( string . Equals ( chara . TachieType , YmmpTachieType . PsdTachie , StringComparison . Ordinal ) )
467470 {
468471 //psd
472+ IsFileLoading = true ;
469473 var loading = Manager . Loading ( "PSD解析中" , "解析しています…" ) ;
470474
475+ //reset
476+ SelectedLayers = null ;
477+ SelectedLayerTree = [ ] ;
478+
471479 //psd版LipSyncImagesのリスト構築
472- var flowControl = await LoadLipSyncLayersAsync ( chara ) ;
480+ await LoadLipSyncLayersAsync ( chara ) ;
473481
474482 Manager . Info ( "PSD解析終了" , "PSDファイルの解析終了!" , true ) ;
475- //await Task.Delay(1000);
476483 Manager . Dismiss ( loading ) ;
477- if ( ! flowControl ) return ;
478-
484+ IsFileLoading = false ;
479485 //psd layer selectorのツリー表示構築
480486 }
481487 }
@@ -552,8 +558,8 @@ async ValueTask<bool>
552558 } ;
553559 var p = Path . Combine ( kuchiDir , Path . GetFileName ( v . Value ) ) ;
554560 var kuchi =
555- kList . First ( k => k . Path == p )
556- ?? kList . FirstOrDefault ( k => k . Path == chara . DefaultMouthImgPath ) ;
561+ kList . First ( k => string . Equals ( k . Path , p , StringComparison . Ordinal ) )
562+ ?? kList . FirstOrDefault ( k => string . Equals ( k . Path , chara . DefaultMouthImgPath , StringComparison . Ordinal ) ) ;
557563 var index = ( kuchi is null ) ? 0 : kList . IndexOf ( kuchi ) ;
558564 return new LipSyncImageViewModel (
559565 v . Key ,
@@ -588,9 +594,9 @@ async ValueTask<bool>
588594 return false ;
589595 }
590596
591-
592-
593- var psd = await PsdUtil . LoadPsdAsync ( path ) ;
597+ var psd = await PsdUtil
598+ . LoadPsdAsync ( path )
599+ . ConfigureAwait ( true ) ;
594600 var tree = PsdUtil . ParsePsdLayers ( psd ) ;
595601
596602 //デフォルトレイヤー表示をymmpの"TachieDefaultItemParameter"から取得して反映、なければPSDファイルそのまま
@@ -646,7 +652,7 @@ IList<YmmPsdLayer> SetDefaultLayer(IEnumerable<YmmPsdLayer> tree)
646652 {
647653 foreach ( var layer in tree )
648654 {
649- layer . IsVisible = defs . Contains ( layer . Cid ) ;
655+ layer . IsVisible = defs . Contains ( layer . Cid , StringComparer . Ordinal ) ;
650656 layer . Children = SetDefaultLayer ( layer . Children ) ;
651657 }
652658 return [ ..tree ] ;
0 commit comments