/// <summary> /// Formats data to send to the client on the start of a new turn in battle. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void OnStartOfTurn(object sender, StartOfTurnEventArgs args) { int turnExpiration = (int)(args.TurnExpiration - DateTime.Now).TotalSeconds; dynamic actionPointsChanged = null; if (args.ActionPointData != null && args.AffectedEntities != null) { // Get action points changed for CombatEntities that are not in AffectedEntities actionPointsChanged = args.ActionPointData.Select(kvp => new { FormationId = kvp.Key, ActionPointData = kvp.Value }).ToList(); } // Todo: Send delayed abilities too await _battleHubContext.Clients.Users(args.ParticipantIds).SendAsync("startOfTurn", new { args.ActiveEntities, args.AffectedEntities, args.IsDefendersTurn, actionPointsChanged, turnExpiration }); }
/// <summary> /// Provides the UI character manager with an updated set of round order ids at the start of a new turn. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void OnStartOfTurn(object sender, StartOfTurnEventArgs args) { _uiCharacterManager.CurrentRoundOrderIds = args.CurrentRoundOrderIds; _uiCharacterManager.NextRoundOrderIds = args.NextRoundOrderIds; _defaultsHandler.IsInCommandPanel = true; }