Exemple #1
0
        public CreateSoldierEvent GetCreateSoldierEvent(Guid gameId, Army army, string troopType, string ownerUserId, bool immediately = false)
        {
            var    snap           = _domain.GetGameSnapshot(gameId);
            var    game           = snap?.Payload as GameAggregate;
            double productionTime = 0;

            if (!immediately)
            {
                productionTime = _gameSettings.ProductionTime;
                if (game != null)
                {
                    productionTime = productionTime * GameSpeedHelper.GetSpeedValue(game.Speed);
                }
            }
            var @event = new CreateSoldierEvent(army,
                                                troopType, DateTime.UtcNow,
                                                TimeSpan.FromMinutes(productionTime),
                                                ownerUserId);

            return(@event);
        }
        private CreateSoldierEvent GetLatestProductionTime(Guid gameId, Army army)
        {
            CreateSoldierEvent latestEvent = _domain.GetLatestEvent <CreateSoldierEvent>(gameId, e => e.Army == army);

            return(latestEvent);
        }