Example #1
0
        /// <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);
 }