This is the fully refactored version of the KCD2 Mod Manager featuring a modern MVVM architecture, dependency injection, and clean code structure.
- ✅ Fully implemented MVVM pattern
- ✅ Dependency Injection using Microsoft.Extensions.DependencyInjection
- ✅ Service layer for all business logic
- ✅ ViewModels use commands instead of event handlers
- ✅ Async/await for all IO and HTTP operations
KCD2 mod manager/
├── Models/ # Domain models
├── ViewModels/ # ViewModels
├── Services/ # Service implementations
├── Views/ # (Prepared for future separation)
├── Resources/ # (Prepared for localization)
└── Tests/ # (Prepared for unit tests)
- .NET 10 SDK
- Visual Studio 2022 or newer (or VS Code with C# extension)
dotnet builddotnet rundotnet test- IModManifestService: Manifest parsing and generation
- IFileService: File and directory operations
- INexusService: Nexus Mods API integration
- IModInstallerService: Mod installation and management
- IDialogService: Dialog wrapper
- IAppSettings: Settings management
- ILog: Logging functionality
- MainWindowViewModel: Main logic for MainWindow
- Mod: Mod representation
- ModVersionInfo: Version information
- NexusModFile: Nexus Mods API models
Logs are stored in the logs/ directory with daily rolling.
- Some UI-specific event handlers remain in the code-behind (Drag & Drop, context menus)
- SettingsWindowViewModel still needs to be created
- Unit tests still need to be written
- Localization (.resx) still needs to be implemented
- Mod installation from ZIP/RAR/7z
- Mod installation from folder
- Mod update functionality
- Nexus SSO login
- Mod order management (drag & drop)
- Backup creation
- Theme switching (dark/light mode)
- Search functionality
- Sort functionality
- Create service interface (e.g.,
INewService) - Create service implementation (e.g.,
NewService) - Register it in
App.xaml.cs - Inject into the ViewModel and use it
- Add a property using
SetProperty - Create a command using
RelayCommand - Bind it in XAML
See CHANGELOG.md for detailed changes.
- Original developer: coolzumjax