コード例 #1
0
        public void TryToCreateTrainingWar()
        {
            using (var trs = transactionScopeProvider.CreateTransactionScope())
                if (warRepository.Any(w => w.IsTrainingWar) == false)
                {
                    var anyCountry  = countryRepository.First();
                    var anyRegion   = anyCountry.Regions.First();
                    var trainingWar = new War()
                    {
                        AttackerCountryID = anyCountry.ID,
                        DefenderCountryID = anyCountry.ID,
                        Active            = true,
                        StartDay          = GameHelper.CurrentDay,
                        IsTrainingWar     = true
                    };

                    warRepository.Add(trainingWar);
                    warRepository.SaveChanges();

                    var battle = new Battle()
                    {
                        Active     = true,
                        WarID      = trainingWar.ID,
                        WallHealth = 99999,
                        RegionID   = anyRegion.ID,
                        StartTime  = DateTime.Now,
                        StartDay   = GameHelper.CurrentDay,
                    };

                    battleRepository.Add(battle);
                    battleRepository.SaveChanges();

                    trs.Complete();
                }
        }
コード例 #2
0
        public Battle CreateBattle(War war, int regionID, WarSideEnum attackingSide)
        {
            using (var transaction = transactionScopeProvider.CreateTransactionScope())
            {
                var    region             = regionRepository.GetById(regionID);
                double startingWallHealth = CalculateWallHealth(region);

                var battle = new Battle()
                {
                    RegionID   = regionID,
                    WallHealth = (decimal)startingWallHealth,
                    War        = war,
                    Active     = true,
                    StartTime  = DateTime.Now,
                    StartDay   = GameHelper.CurrentDay,
                    AttackerInitiatedBattle = attackingSide == WarSideEnum.Attacker
                };

                var gold = warService.GetGoldNeededToStartBattle(war, region);
                MakeBattleStartTransaction(war, war.GetMainCountry(attackingSide), gold);

                SendMessageAboutAttack(war, attackingSide, region);

                war.AttackerOfferedSurrender = null;

                battleRepository.Add(battle);
                ConditionalSaveChanges(battleRepository);
                battleEventService.AddEvent(battle, BattleStatusEnum.Started);
                transaction?.Complete();
                return(battle);
            }
        }
コード例 #3
0
        public async Task <IActionResult> PostBattle(Battle battle)
        {
            try
            {
                await _battleRepository.Add(battle);

                await _battleRepository.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return(BadRequest($"Erro: {ex.Message}"));
            }

            return(CreatedAtAction("Batalha criada com sucesso!", battle));
        }