A Windows desktop application that syncs local data with VPDB.
A program that runs in the background on your cab and fills the gap between PinballX and VPDB.
It also comes with a nice UI for configuring and monitoring it. Oh, and it's completely real-time, meaning if you change stuff locally or on VPDB, VPDB Agent will know immediately and react.
The MVP should have the following features:
- Match local games against releases at VPDB
- Update local games automatically from VPDB where enabled
- Download starred games automatically from VPDB if enabled
From there, we can imaginate more features such as media management, browsing, rating and so forth.
For more details, see FEATURES.
- Microsoft .NET 4.5 WPF Application
- Asynchronous backend with Rx Extensions
- UI wiring using ReactiveUI
- Refit for type-safe REST access
- Mahapps.Metro for easy custom styling
- INI File Parser for parsing PinballX config
- Humanizer for all kind of formatting tricks
- NLog for our logging needs
- Akavache for settings storage and image caching
- NotifyIcon for tray features
- OpenMcdf for reading and writing VP's OLE Compound format
- XUnit, Moq and Fluent Assertions for unit tests
Tests are written with XUnit and Fluent Assertions. When using Resharper, use the plugin so you can easily debug. Coverage is still poor but increasing.
The goal is to touch current XML files that make the PinballX database only
when necessary (i.e. a release is updated). Instead, we keep a vpdb.json
in
each folder that contains the additional data we need to work with. This file
basically serves as our local database and is updated as the XMLs are changed
manually or by another application.
As for adding new games, the user can choose between a separate custom list or the original XML.
We're using Squirrel for packaging the builds. In order to release a new version:
-
Bump to release version at
AssemblyInfo.cs
ANDvpdb-agent.nuspec
. Also update release in the NU specs. -
Build Release
-
Add new
.dll
s tovpdb-agent.nuspec
if necessary. -
In the Package Manager Console, type:
PM> nuget pack .\VpdbAgent\VpdbAgent.nuspec PM> squirrel --releasify .\VpdbAgent.0.0.x.nupkg
-
Run
.\Releases\Setup.exe
and test -
If all good, commit, tag and push
-
Package
setup.exe
asvpdb-agent-0.0.x.zip
-
Create release on GitHub and attach zip
-
Bump to snapshot version.
-
Error and crash reporting for VPDB Agent has kindly been provided by Raygun. And by the way, it also works with a ton of other platforms!
-
@andreaskoepf for some really helpful Rx suggestions
GPLv2, see LICENSE.