diff --git a/OpenKh.Tools.BarEditor/Helpers.cs b/OpenKh.Tools.BarEditor/Helpers.cs new file mode 100644 index 000000000..55c2addb9 --- /dev/null +++ b/OpenKh.Tools.BarEditor/Helpers.cs @@ -0,0 +1,37 @@ +using OpenKh.Kh2; +using static OpenKh.Kh2.Bar; +using System.Collections.Generic; + +namespace OpenKh.Tools.BarEditor +{ + public class Helpers + { + private static readonly string DefaultExtension = "bin"; + + private static readonly Dictionary SuggestedExtensions = + new Dictionary + { + [EntryType.Binary] = "bin", + [EntryType.Ai] = "ai", + [EntryType.Tim2] = "tm2", + [EntryType.SpawnPoint] = "pspwn", + [EntryType.SpawnScript] = "sspwn", + [EntryType.Bar] = "bar", + [EntryType.Pax] = "pax", + [EntryType.AnimationLoader] = "al", + [EntryType.Imgd] = "imd", + [EntryType.Seqd] = "2dd", + [EntryType.Layout] = "2ld", + [EntryType.Imgz] = "imz", + [EntryType.Seb] = "seb", + [EntryType.Wd] = "wd", + [EntryType.RawBitmap] = "rgb", + [EntryType.Vibration] = "vibration", + [EntryType.Vag] = "vag", + + }; + + public static string GetSuggestedExtension(Bar.EntryType type) => + SuggestedExtensions.TryGetValue(type, out var ext) ? ext : DefaultExtension; + } +} diff --git a/OpenKh.Tools.BarEditor/ViewModels/BarViewModel.cs b/OpenKh.Tools.BarEditor/ViewModels/BarViewModel.cs index f29053181..8bd354761 100644 --- a/OpenKh.Tools.BarEditor/ViewModels/BarViewModel.cs +++ b/OpenKh.Tools.BarEditor/ViewModels/BarViewModel.cs @@ -108,7 +108,7 @@ public BarViewModel(IEnumerable list) : ExportCommand = new RelayCommand(x => { - var defaultFileName = $"{SelectedItem.Entry.Name}.bin"; + var defaultFileName = GetSuggestedFileName(SelectedItem.Entry); FileDialog.OnSave(fileName => { @@ -126,7 +126,7 @@ public BarViewModel(IEnumerable list) : { foreach (var item in Items.Select(item => item.Entry)) { - var fileName = $"{item.Name}.bin"; + var fileName = GetSuggestedFileName(item); using (var fStream = File.OpenWrite(Path.Combine(folder, fileName))) { item.Stream.Position = 0; @@ -153,7 +153,10 @@ public BarViewModel(IEnumerable list) : SearchCommand = new RelayCommand(x => { }, x => false); } - private Window Window => Application.Current.Windows.OfType().FirstOrDefault(x => x.IsActive); + private static string GetSuggestedFileName(Bar.Entry item) => + $"{item.Name}_{item.Index}.{Helpers.GetSuggestedExtension(item.Type)}"; + + private Window Window => Application.Current.Windows.OfType().FirstOrDefault(x => x.IsActive); private string FileName { get; set; }