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();
        }
Exemplo n.º 2
0
 public GameService(
     IUnitOfWork unitOfWork, 
     ImperaPlus.DataAccess.IUserProvider userProvider, 
     Domain.Services.IGameService gameService, 
     IMapTemplateProvider mapTemplateProvider,
     IVisibilityModifierFactory visibilityModifierFactory)
     : base(unitOfWork, userProvider, mapTemplateProvider, visibilityModifierFactory)
 {
     this.gameService = gameService;
 }
 public override void Apply(ImperaPlus.Domain.User user, HistoryTurn historyTurn, DTO.Games.Map.Map previousHistoryTurn)
 {
     // Do not modify anything
 }
 public override void Apply(ImperaPlus.Domain.User user, Game game)
 {
     // Do not modify anything
 }
 public override void Apply(ImperaPlus.Domain.User user, Game game)
 {
     this.ApplyMap(user, game, game.Map);
 }
 public abstract void Apply(ImperaPlus.Domain.User user, HistoryTurn historyTurn, DTO.Games.Map.Map previousMap);
 public abstract void Apply(ImperaPlus.Domain.User user, Game game);