1
1
using ReactiveUI ;
2
2
using AvaGui . Models ;
3
3
using OpenLoco . ObjectEditor . DatFileParsing ;
4
- using System ;
5
4
using ReactiveUI . Fody . Helpers ;
6
5
using System . Reactive ;
7
6
using OpenLoco . ObjectEditor . Logging ;
@@ -22,60 +21,59 @@ public class ObjectEditorViewModel : ReactiveObject, ILocoFileViewModel
22
21
[ Reactive ]
23
22
public IExtraContentViewModel ? ExtraContentViewModel { get ; set ; }
24
23
25
- ObjectEditorModel Model { get ; }
24
+ ObjectEditorModel Model { get ; init ; }
26
25
27
26
[ Reactive ]
28
- public UiLocoFile ? CurrentObject { private set ; get ; }
27
+ public UiLocoFile ? CurrentObject { get ; private set ; }
29
28
30
29
[ Reactive ]
31
- public FileSystemItemBase ? CurrentFile { get ; set ; }
30
+ public FileSystemItemBase CurrentFile { get ; init ; }
32
31
33
- public ObjectEditorViewModel ( ObjectEditorModel model )
32
+ ILogger ? Logger => Model . Logger ;
33
+
34
+ public ObjectEditorViewModel ( FileSystemItemBase currentFile , ObjectEditorModel model )
34
35
{
36
+ CurrentFile = currentFile ;
35
37
Model = model ;
36
- _ = this . WhenAnyValue ( o => o . CurrentFile )
37
- . Subscribe ( _ => SelectedObjectChanged ( ) ) ;
38
38
39
- ReloadObjectCommand = ReactiveCommand . Create ( ReloadCurrentObject ) ;
39
+ LoadObject ( ) ;
40
+
41
+ ReloadObjectCommand = ReactiveCommand . Create ( LoadObject ) ;
40
42
SaveObjectCommand = ReactiveCommand . Create ( SaveCurrentObject ) ;
41
43
SaveAsObjectCommand = ReactiveCommand . Create ( SaveAsCurrentObject ) ;
42
44
}
43
45
44
- public void SelectedObjectChanged ( )
46
+ public void LoadObject ( )
45
47
{
46
48
// this stops any currently-playing sounds
47
49
if ( ExtraContentViewModel is SoundViewModel svm )
48
50
{
49
51
svm . Dispose ( ) ;
50
52
}
51
53
52
- ReloadCurrentObject ( ) ;
53
-
54
- if ( CurrentObject ? . LocoObject != null )
55
- {
56
- StringTableViewModel = new ( CurrentObject . LocoObject . StringTable ) ;
57
- ExtraContentViewModel = CurrentObject . LocoObject . Object is SoundObject
58
- ? new SoundViewModel ( CurrentObject . LocoObject )
59
- : new ImageTableViewModel ( CurrentObject . LocoObject , Model . PaletteMap ) ;
60
- }
61
- else
62
- {
63
- StringTableViewModel = null ;
64
- ExtraContentViewModel = null ;
65
- }
66
- }
67
-
68
- public void ReloadCurrentObject ( )
69
- {
70
54
if ( CurrentFile == null )
71
55
{
72
56
return ;
73
57
}
74
58
75
- Logger ? . Info ( $ "Loading { CurrentObject ? . DatFileInfo . S5Header . Name } from { CurrentFile . Path } ") ;
59
+ Logger ? . Info ( $ "Loading { CurrentFile . Name } from { CurrentFile . Path } ") ;
60
+
76
61
if ( Model . TryLoadObject ( CurrentFile . Path , out var newObj ) )
77
62
{
78
63
CurrentObject = newObj ;
64
+
65
+ if ( CurrentObject ? . LocoObject != null )
66
+ {
67
+ StringTableViewModel = new ( CurrentObject . LocoObject . StringTable ) ;
68
+ ExtraContentViewModel = CurrentObject . LocoObject . Object is SoundObject
69
+ ? new SoundViewModel ( CurrentObject . LocoObject )
70
+ : new ImageTableViewModel ( CurrentObject . LocoObject , Model . PaletteMap ) ;
71
+ }
72
+ else
73
+ {
74
+ StringTableViewModel = null ;
75
+ ExtraContentViewModel = null ;
76
+ }
79
77
}
80
78
else
81
79
{
@@ -113,7 +111,5 @@ public void SaveAsCurrentObject()
113
111
Logger ? . Info ( $ "Saving { CurrentObject . DatFileInfo . S5Header . Name } to { saveFile . Path . AbsolutePath } ") ;
114
112
SawyerStreamWriter . Save ( saveFile . Path . AbsolutePath , CurrentObject . DatFileInfo . S5Header . Name , CurrentObject . LocoObject ) ;
115
113
}
116
-
117
- ILogger ? Logger => Model . Logger ;
118
114
}
119
115
}
0 commit comments