/// <summary> /// Called whenever one or more characters have their health changed. Refresh the UI over several frames to /// visualize the health change. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void OnCharactersHealthChanged(object sender, CharactersHealthChangedEventArgs args) { int frameUpdates = 30; var healthChangeDict = new Dictionary <int, float>(); foreach (var key in args.ChangeAmount.Keys) { // Difference in health / frameUpdates, may have remainders that must be accounted for float gradualHealthChange = args.ChangeAmount[key] / ((float)frameUpdates); healthChangeDict[key] = gradualHealthChange; } var task = Task.Run(() => _uiContainer.UpdateHealthGradually(args.PreCharactersChanged, args.PostCharactersChanged, healthChangeDict, frameUpdates)); _userInput.ClearInputBuffer(); _userInput.ListenForUISkip(); task.Wait(); }
private void OnCharactersHealthChanged(object sender, CharactersHealthChangedEventArgs args) { CharactersHealthChanged?.Invoke(sender, args); }