56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using Nitrox.Launcher.Models.Design;
|
|
using Nitrox.Launcher.Models.Validators;
|
|
using Nitrox.Launcher.ViewModels.Abstract;
|
|
using NitroxModel.Helper;
|
|
using NitroxModel.Server;
|
|
|
|
namespace Nitrox.Launcher.ViewModels;
|
|
|
|
public partial class CreateServerViewModel : ModalViewModelBase
|
|
{
|
|
private readonly IKeyValueStore keyValueStore;
|
|
|
|
[ObservableProperty]
|
|
[NotifyCanExecuteChangedFor(nameof(CreateCommand))]
|
|
[NotifyDataErrorInfo]
|
|
[Required]
|
|
[FileName]
|
|
[NotEndsWith(".")]
|
|
[NitroxUniqueSaveName(nameof(SavesFolderDir))]
|
|
private string name;
|
|
|
|
[ObservableProperty]
|
|
private NitroxGameMode selectedGameMode = NitroxGameMode.SURVIVAL;
|
|
|
|
private string SavesFolderDir => keyValueStore.GetSavesFolderDir();
|
|
|
|
public CreateServerViewModel()
|
|
{
|
|
}
|
|
|
|
public CreateServerViewModel(IKeyValueStore keyValueStore)
|
|
{
|
|
this.keyValueStore = keyValueStore;
|
|
}
|
|
|
|
public void CreateEmptySave(string saveName, NitroxGameMode saveGameMode)
|
|
{
|
|
string saveDir = Path.Combine(SavesFolderDir, saveName);
|
|
ServerEntry.CreateNew(saveDir, saveGameMode);
|
|
}
|
|
|
|
[RelayCommand(CanExecute = nameof(CanCreate))]
|
|
private async Task CreateAsync()
|
|
{
|
|
await Task.Run(() => CreateEmptySave(Name, SelectedGameMode));
|
|
Close(ButtonOptions.Ok);
|
|
}
|
|
|
|
private bool CanCreate() => !HasErrors;
|
|
}
|