public IActionResult AssignToFleet(Guid id, Guid shipId, Guid fleetId) { var gs = gsRepo.GetById(id).Result; var pawn = gs.Pawns.First(x => x.Id == shipId); pawn.FleetId = fleetId; gsRepo.Save(gs); return(RedirectToAction("Index", "StrategicView", new { id })); }
public PartialViewResult Action(Guid id, BattleAction vm) { var gs = _gsRepo.GetById(id).Result; var pawnToAffect = gs.Pawns.Single(x => x.Id == vm.PawnId); var internalRoles = vm.NumRolls; var localLog = new List <string>(); localLog.Add($"== Simulating {vm.NumRolls} Internals =="); var sim = new MultiRoundDamageAllocationSimulator(); for (int i = 0; i < internalRoles; i++) { var result = sim.TakeDamage(pawnToAffect); localLog.Add(result.TrackNumber + " - " + result.AffectedUnitCode); } pawnToAffect.BattleLog.InsertRange(0, localLog); var excessDamageRemaining = pawnToAffect.ComponentsRemaining["Excess Damage"]; pawnToAffect.Destroyed = excessDamageRemaining <= 0; _gsRepo.Save(gs); vm.GameState = gs; this.ViewBag.PostActionGameState = JsonConvert.SerializeObject(vm.GameState); return(PartialView("_Pawn", pawnToAffect)); }
public void SaveGameIfRequested(GameState gameState) { if (saveGameAtTheEndOfCurrentFrame) { saveGameAtTheEndOfCurrentFrame = false; var repository = new GameStateRepository(); repository.Save(gameState); gameState.Events.Add(new GameSaved()); } }
public IActionResult BeginGame(Guid?id, GameStateSpecificationViewModel vm) { var shipsToCreate = vm.SelectedShips.Where(x => x.ShipId != null || !string.IsNullOrWhiteSpace(x.Code)); GameState gs; if (id != null) { gs = _gsRepo.GetById(id.Value).Result; } else { gs = new GameState { Id = Guid.NewGuid() } }; gs.Name = vm.GameName; foreach (var shipToCreate in shipsToCreate) { Pawn pawn; if (shipToCreate.ShipId == null) { var spec = GameRules.GetShipByCode(shipToCreate.Code); pawn = Pawn.FromSpecification(spec); pawn.GameStateId = gs.Id.Value; gs.Pawns.Add(pawn); } else { pawn = gs.Pawns.First(x => x.Id == shipToCreate.ShipId.Value); } pawn.Name = shipToCreate.Name; } _gsRepo.Save(gs); return(RedirectToAction("Index", "StrategicView", new { id })); } }