コード例 #1
0
        public ActionResult GetBattleStartInformation(int warID, int regionID)
        {
            try
            {
                var entity = SessionHelper.CurrentEntity;



                var war = warRepository.GetById(warID);
                var attackingCountry = warService.GetControlledCountryInWar(entity, war);
                var region           = regionRepository.GetById(regionID);
                var goldNeeded       = warService.GetGoldNeededToStartBattle(war, region);

                var vm = new BattleStartInformationViewModel(goldNeeded);

                return(PartialView(vm));
            }
            catch (UserReadableException e)
            {
                throw;
            }
            catch (Exception)
            {
                return(Content(""));
            }
        }
コード例 #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);
            }
        }