public override void Apply(ImperaPlus.Domain.User user, HistoryTurn historyTurn, DTO.Games.Map.Map previousMap)
        {
            if (historyTurn.Game.State == GameState.Ended)
            {
                return;
            }

            // Apply to current turn
            this.Apply(user, historyTurn.Game);

            // Apply to previous turn map
            this.ApplyMap(user, historyTurn.Game, previousMap);

            var visibleCountries = new HashSet<string>(previousMap.Countries.Select(x => x.Identifier));

            var visibleActions = new List<HistoryEntry>();
            foreach(var action in historyTurn.Actions.ToArray())
            {
                // Check that at least origin or destination of each action is visible, or no country is involved
                if ((action.OriginIdentifier == null && action.DestinationIdentifier == null)
                    || visibleCountries.Contains(action.OriginIdentifier)
                    || visibleCountries.Contains(action.DestinationIdentifier))
                {
                    visibleActions.Add(action);
                }
            }

            historyTurn.Actions = visibleActions.ToArray();
        }
 public override void Apply(ImperaPlus.Domain.User user, HistoryTurn historyTurn, DTO.Games.Map.Map previousHistoryTurn)
 {
     // Do not modify anything
 }
 public abstract void Apply(ImperaPlus.Domain.User user, HistoryTurn historyTurn, DTO.Games.Map.Map previousMap);