$ show TeamWheelWizard/WheelWizard
WheelWizard is a cross-platform desktop application (Windows, Linux, macOS) built with Avalonia and .NET that serves as a comprehensive mod manager, Mii editor, and game launcher for Mario Kart Wii. It integrates deeply with the Dolphin emulator and the WiiCompiled (Recomp) native PC port, providing a unified interface for managing game modifications, custom distributions (Retro Rewind), and online community features (room browser, leaderboard, player profiles). The application handles complex binary Wii data formats, including Mii character serialization, game save files (rksys.dat), and disc image parsing. The architecture is modular, employing dependency injection extensively to separate concerns between the UI (Avalonia views), business logic (feature modules), and data access (external APIs, local filesystem). It features a sophisticated real-time 3D Mii rendering engine using OpenGL and a custom native library (FFL), complete with a keyframe-based animation system for character expressions and idle behaviors. The codebase demonstrates high craftsmanship in its error handling (OperationResult pattern), caching strategies (MiiHeadStore), and cross-platform process management. While primarily an application, it contains significant data engineering components, such as binary format parsers for Wii archives (U8, Yaz0, BRSAR), patch conversion pipelines, and game baseline analysis. The project is actively maintained with a comprehensive test suite, modern dependency management, and a strong focus on code quality, making it a valuable reference for developers working on game tooling, cross-platform desktop applications, or complex UI systems.
The LLM identified 8 files worth highlighting for reuse:
Implements a generic OperationResult<T> monad that encapsulates success/failure states with detailed error information. This pattern is used pervasively across the codebase to avoid exceptions for control flow, providing a consistent and predictable error handling contract. It is fully self-contained and could be extracted into a standalone library for any .NET project.
Provides a generic, window-local modal dialog stack with support for animations, backdrop blur, focus management, and dismissal. It abstracts the complexity of managing multiple overlapping modals and is designed to be reusable across any Avalonia application. The pattern demonstrates a clean separation between the modal host and its content.
An LRU cache for pre-built Mii head rendering parameters. It handles deduplication of build requests, background processing of expensive 3D model generation, and cooperative cancellation. This is a highly optimized solution for a performance-critical rendering pipeline and demonstrates advanced caching and concurrency patterns.
Provides atomic file writing operations using a temporary file and rename pattern, with optional backup creation. This prevents data corruption from partial writes or application crashes. It is a small, self-contained utility that is critical for any application that persists data to disk.
A base class for creating periodic background polling services. It integrates with a pluggable IPollingScheduler and notifies IPollingListener implementations. This pattern is used for live features like room status and player presence, and is designed for testability and reusability.
A keyframe-based animation playback engine for character rigs. It supports cross-fading between clips, event markers, particle effects, and look-layer targeting. This is a non-trivial system that demonstrates deep understanding of animation pipelines and real-time interpolation.
Provides cross-platform command-line argument quoting and escaping for Windows (CMD) and Unix (Bash) shells. This solves a notoriously tricky problem in process management and is a highly reusable utility for any application that launches external processes.
A pattern for defining user-facing messages using enums, with support for translatable strings and parameterized replacements. This provides type safety and discoverability for UI messages, making it easier to maintain and localize the application.