$ show anoyetta/ACT.Hojoring
This repository contains a collection of Advanced Combat Tracker (ACT) plugins designed to enhance Final Fantasy XIV gameplay. The main components include SpecialSpellTimer for ability cooldown tracking, UltraScouter for combat information overlays, TTSYukkuri for text-to-speech alerts, and XIVLog for gameplay video capture. The architecture follows a modular plugin pattern with shared functionality in FFXIV.Framework, utilizing WPF and MVVM for UI components. The system integrates with game memory reading via Sharlayan, processes combat logs for real-time event detection, and provides user-configurable overlays and alerts.
The LLM identified 4 files worth highlighting for reuse:
Provides robust audio playback functionality using NAudio with proper buffering, streaming, and disposal patterns. Implements IDisposable correctly and handles audio state management in a thread-safe manner. This component could be easily extracted for use in any .NET application requiring audio playback capabilities.
Defines an abstract base class for text-to-speech engines with a clean interface for initialization, speech synthesis, and resource management. Implements the strategy pattern to support multiple TTS engines (AquesTalk, VOICEVOX, OpenJTalk, etc.) through a unified interface. This abstraction allows for easy extension to new TTS engines without modifying core logic.
Thread-safe singleton that provides access to Final Fantasy XIV game data through memory reading. Encapsulates the complexity of interacting with game memory via Sharlayan and provides structured access to combatants, player status, zone information, and other game state. Demonstrates proper singleton implementation with lazy initialization and efficient data caching.
Configuration settings class that combines XML serialization with INotifyPropertyChanged for automatic UI updates when properties change. Implements a robust pattern for persistent configuration that survives application restarts while keeping the UI in sync with configuration changes. Uses [Serializable] attributes and property change notifications effectively.