public MemoryDefinition(string gameVersion, string gameStorefront)
        {
            bKnownVersion = true;
            pointers      = PointerInfoReader.getPointersForVersion(gameVersion, gameStorefront);
            Debug.WriteLine("Done reading XML pointers...");


            if (pointers.Count == 0) // If we're using an unknown version, or atleast one in which we don't have the pointers.
            {
                Debug.WriteLine($"Unknown pointers for: {gameVersion}");
                bKnownVersion = false;
                return;
            }

            if (pointers.ContainsKey("loading"))
            {
                isLoadingInfo  = pointers["loading"];
                isLoadingState = new MemoryWatcher <int>(isLoadingInfo.ptr);
            }

            if (pointers.ContainsKey("mainMenu"))
            {
                isMainMenuInfo  = pointers["mainMenu"];
                isMainMenuState = new MemoryWatcher <int>(isMainMenuInfo.ptr);
            }

            if (pointers.ContainsKey("levelSplits"))
            {
                levelSplitsInfo  = pointers["levelSplits"];
                levelSplitsState = new MemoryWatcher <int>(levelSplitsInfo.ptr);
            }

            this.AddRange(this.GetType().GetProperties().Where(p => !p.GetIndexParameters().Any()).Select(p => p.GetValue(this, null) as MemoryWatcher).Where(p => p != null));
        }
        public Borderlands3Component(LiveSplitState state)
        {
            Debug.Listeners.Clear();
            Debug.Listeners.Add(BL3TraceListener.Instance);

            pointerFilePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + pointerFileName;
            if (!File.Exists(pointerFilePath))
            {
                DownloadPointerFile();
            }
            else
            {
                CheckPointerFileForUpdate();
            }

            PointerInfoReader.Initialize();

            timerModel = new TimerModel()
            {
                CurrentState = state
            };
            settings  = new Borderlands3Settings();
            memReader = new MemoryReader(timerModel, settings);

            CounterHandler.Init(settings);

            state.OnStart += memReader.OnTimerStart;
        }