$ show AM2R-Community-Developers/AM2RLauncher
AM2RLauncher is a cross-platform GUI application for managing the AM2R (Another Metroid 2 Remake) game and its community mods. It simplifies installing base game updates via xdelta patching, managing multiple game profiles, creating Android APKs, and providing automatic updates for both the launcher and game content. The architecture consists of platform-specific WPF (Windows), GTK (Linux), and macOS projects sharing a .NET Standard 2.0 core library. Key features include profile-based game isolation, mod management, APK creation requiring external tools (Java, Apktool), and integration with community platforms. The application uses Eto.Forms for UI, log4net for logging, and XML serialization for configuration and profiles.
The LLM identified 4 files worth highlighting for reuse:
Provides static methods to detect the operating system (Windows, Linux, macOS, Wine, Flatpak) with minimal dependencies. This self-contained utility isolates platform detection logic, making it reusable in any .NET application needing runtime environment awareness without tight coupling to UI or game-specific code.
Encapsulates cross-platform operations like opening URLs, selecting folders, applying xdelta patches, and executing Java. Each method abstracts platform differences internally, offering a clean, reusable API for common system interactions that could be extracted to a shared library with minimal modification.
A generic XML serializer/deserializer handling versioning, default values, and error reduction. This pattern eliminates boilerplate for XML-based configuration and profiles, allowing reuse across projects by simply defining data model classes and calling static Load/Save methods.
A base button class for Eto.Forms providing consistent hover/disabled states using theme colors. Derived controls (BigColorButton, SmallColorButton, LauncherCheckbox) reuse this foundation, demonstrating a DRY approach to UI theming that can be packaged as a reusable control library for Eto.Forms applications.