Example #1
0
        private async void DoMemoryReadout()
        {
            while (running)
            {
                try
                {
                    //Read data from memory
                    currentMemoryReadout = memReader.DoReadout();
                }
                catch (Exception e)
                {
                    if (running)
                    {
                        Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace);
                    }
                }

                OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs()
                {
                    memoryReadout = currentMemoryReadout
                });

                //Print memreadout if debug is enabled
                currentMemoryReadout.Print();

                await Task.Delay(100);
            }
        }
Example #2
0
        private async void DoMemoryReadout()
        {
            float lastTimer = currentMemoryReadout.songTimer;

            while (running)
            {
                try
                {
                    //Read data from memory
                    currentMemoryReadout = memReader.DoReadout();
                }
                catch (Exception e)
                {
                    if (running)
                    {
                        Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace);
                    }
                }

                OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs()
                {
                    memoryReadout = currentMemoryReadout
                });

                //var mem = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / (1024 * 1024);
                //Logger.Log(string.Format("Memory@tick: {0}mb", mem));
                switch (Environment.OSVersion.Platform)
                {
                case PlatformID.MacOSX:
                case PlatformID.Unix:
                    if (currentMemoryReadout.gameState.ToLower().Contains("game") && Math.Abs(currentMemoryReadout.songTimer - lastTimer) > 1)
                    {
                        // scan for note data from memory if required
                        memReader.DoPointerScanMacOS();
                        lastTimer = currentMemoryReadout.songTimer;
                    }
                    break;

                default:
                    //if (Math.Abs(currentMemoryReadout.songTimer - lastTimer) > 1)
                    //{
                    //    // scan for note data from memory if required
                    //    memReader.DoPointerScanWin32();
                    //    lastTimer = currentMemoryReadout.songTimer;
                    //}
                    break;
                }
                //Print memreadout if debug is enabled
                currentMemoryReadout.Print();

                await Task.Delay(100);
            }
        }
Example #3
0
        private async void DoMemoryReadout()
        {
            while (running)
            {
                await Task.Delay(100);

                RSMemoryReadout newReadout = null;

                try
                {
                    //Read data from memory
                    newReadout = memReader.DoReadout();
                }
                catch (Exception e)
                {
                    if (running)
                    {
                        Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace);
                    }
                }

                if (newReadout == null)
                {
                    continue;
                }

                if (newReadout.songID != currentMemoryReadout.songID || (currentCDLCDetails == null || !currentCDLCDetails.IsValid()))
                {
                    var newDetails = cache.Get(newReadout.songID);

                    if (newDetails != null && newDetails.IsValid())
                    {
                        currentCDLCDetails = cache.Get(newReadout.songID);
                        OnSongChanged?.Invoke(this, new OnSongChangedArgs {
                            songDetails = currentCDLCDetails
                        });
                        currentCDLCDetails.Print();
                    }
                }

                newReadout.CopyTo(ref currentMemoryReadout);

                OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs()
                {
                    memoryReadout = currentMemoryReadout
                });

                //Print memreadout if debug is enabled
                currentMemoryReadout.Print();
            }
        }