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("")); } }
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); } }