private void RocketLeagueWorker_DoWork(object sender, DoWorkEventArgs e) { var sw = new Stopwatch(); sw.Start(); while (!RocketLeagueWorker.CancellationPending) { // Refresh address every second if (sw.ElapsedMilliseconds > 1000) { // Ensure process is still running if (MainController.MainModel.RocketLeagueProcess.HasExited) { MainController.MainModel.Status = "Game not found"; LogitechGSDK.LogiLedRestoreLighting(); return; } sw.Restart(); } // Update model boost amount MainController.MainModel.GetBoostAmount(); FadeInIfHigher(MainController.MainModel); // Generate new bitmap var bitmap = CreateBoostBitmap(MainController.MainModel); // Post it to device LogitechGSDK.LogiLedSetLightingFromBitmap(OrionController.BitmapToByteArray(bitmap)); Thread.Sleep(100); } }
public void FadeInIfHigher(MainModel mainModel) { if (mainModel.BoostAmount <= mainModel.PreviousBoost) { return; } const int amountOfSteps = 6; var difference = mainModel.BoostAmount - mainModel.PreviousBoost; var differenceStep = difference / amountOfSteps; var differenceStepRest = difference % amountOfSteps; mainModel.BoostAmount = mainModel.PreviousBoost; for (var i = 0; i < amountOfSteps; i++) { if (differenceStepRest > 0) { differenceStepRest -= 1; mainModel.BoostAmount += 1; } mainModel.BoostAmount += differenceStep; var bitmap = CreateBoostBitmap(mainModel); LogitechGSDK.LogiLedSetLightingFromBitmap(OrionController.BitmapToByteArray(bitmap)); Thread.Sleep(50); } }
public RocketLeagueController(MainController mainController) { // Setup Logitech SDK OrionController.SetupSdk(); MainController = mainController; RocketLeagueWorker = new BackgroundWorker(); RocketLeagueWorker.DoWork += RocketLeagueWorker_DoWork; }