public UnrealLoadsComponent(LiveSplitState state, ITimerModel timer, IGameMemory gameMemory, IUnrealLoadsSettings settings)
        {
            bool debug = false;

#if DEBUG
            debug = true;
#endif
            Trace.WriteLine("[NoLoads] Using LiveSplit.UnrealLoads component version " + Assembly.GetExecutingAssembly().GetName().Version + " " + ((debug) ? "Debug" : "Release") + " build");

            _state        = state;
            _timer        = timer;
            _splitHistory = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
            Settings      = settings;

            _state.OnStart += _state_OnStart;

            _gameMemory                = gameMemory;
            _gameMemory.OnReset       += gameMemory_OnReset;
            _gameMemory.OnStart       += gameMemory_OnStart;
            _gameMemory.OnSplit       += _gameMemory_OnSplit;
            _gameMemory.OnLoadStarted += gameMemory_OnLoadStarted;
            _gameMemory.OnLoadEnded   += gameMemory_OnLoadEnded;
            _gameMemory.OnMapChange   += _gameMemory_OnMapChange;

            _gameMemory.StartMonitoring();
        }