private List <Formation> SetTeamFormations(Team team) { // TODO: should be in 'create new team' stage of the app var formations = SquadRepository.GetTeamFormations(team.Id); if (formations.Count == 1 && formations.First().Name.Contains("Default") && !formations.First().TeamId.HasValue) { var formation = formations.First(); formation.TeamId = team.Id; formation.Name = "4-4-2"; formation.Player_1Id = team.Squad.ElementAt(0) != null ? (int?)team.Squad.ElementAt(0).Id : null; formation.Player_2Id = team.Squad.ElementAt(1) != null ? (int?)team.Squad.ElementAt(1).Id : null; formation.Player_3Id = team.Squad.ElementAt(2) != null ? (int?)team.Squad.ElementAt(2).Id : null; formation.Player_4Id = team.Squad.ElementAt(3) != null ? (int?)team.Squad.ElementAt(3).Id : null; formation.Player_5Id = team.Squad.ElementAt(4) != null ? (int?)team.Squad.ElementAt(4).Id : null; formation.Player_6Id = team.Squad.ElementAt(5) != null ? (int?)team.Squad.ElementAt(5).Id : null; formation.Player_7Id = team.Squad.ElementAt(6) != null ? (int?)team.Squad.ElementAt(6).Id : null; formation.Player_8Id = team.Squad.ElementAt(7) != null ? (int?)team.Squad.ElementAt(7).Id : null; formation.Player_9Id = team.Squad.ElementAt(8) != null ? (int?)team.Squad.ElementAt(8).Id : null; formation.Player_10Id = team.Squad.ElementAt(9) != null ? (int?)team.Squad.ElementAt(9).Id : null; formation.Player_11Id = team.Squad.ElementAt(10) != null ? (int?)team.Squad.ElementAt(10).Id : null; formation.Id = SquadRepository.AddFormation(formation); } return(formations); }
private void SaveManager() { Manager manager = null; if (!Managers.Exists(m => m.Id == ManagerViewModel.Id)) { try { manager = new Manager() { Name = ManagerViewModel.Name, Nationality = new Nation() { Name = ManagerViewModel.Nationality.Name }, Age = ManagerViewModel.Age.Value, }; App.Managers.Add(manager); manager.Id = SquadRepository.AddManager(manager); } catch (Exception e) { // TODO: validations } } manager = App.Managers.Find(m => m.Id == ManagerViewModel.Id); Browser.Browse(new TeamDetailsArgs(BrowseArgsType.TeamDetailsArgs, manager)); }
public void Changed(ChangeArgs args) { if (args.Type != ChangeType.PlayerChanged) { return; } switch (args.Type) { case ChangeType.PlayerChanged: var changedPlayerArgs = (SoccerPlayerArgs)args; var player = changedPlayerArgs.PlayerValues; if (changedPlayerArgs.Column == ColumnName.IsCaptain) { player.IsCaptain = (bool)Team.Squad.Find(p => p.Id == player.Id).IsCaptain.Value; } // TODO: Correct position group value to DB if (changedPlayerArgs.Column == ColumnName.Position) { player.Position.Role = (PositionRole)Team.Squad.Find(p => p.Id == player.Id).Position.Value; } SquadRepository.UpdatePlayer(player); break; default: break; } }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. _spriteBatch = new SpriteBatch(GraphicsDevice); GameModel = new GameModel(Content, _graphics, _spriteBatch); var testTexture = Content.Load <Texture2D>("Enemy"); _units = new List <Unit>(); var ar = new AbilityRepository(); ar.Load(); var ur = new UnitRepository(); ur.Load(ar); var sr = new SquadRepository(); sr.Load(); var startPositions = new List <Point>() { new Point(1, 2), new Point(4, 2), new Point(0, 5), new Point(2, 3), new Point(3, 1), }; var squad = sr.Squads.First(); foreach (var unitId in squad.UnitIds) { var index = Random.Next(0, startPositions.Count); var startPoint = startPositions[index]; startPositions.RemoveAt(index); var unitModel = ur.GetById(unitId); _units.Add(new Unit(testTexture) { TilePosition = Map.PointToVector2(startPoint.X, startPoint.Y), UnitModel = unitModel, Layer = 0.6f, }); } //_state = new BattleState(GameModel, _units); _state = new HomeState(GameModel); _state.LoadContent(); }
private void DragOrDropFieldPlayer(SoccerPlayerViewModel draggedPlayer) { if (_draggedPlayer == null) { _draggedPlayer = draggedPlayer; } else { var formation = _teamModel.Formations.Find(f => f.Id == SelectedFormation.Id); UpdateFormationModel(formation, _draggedPlayer.Id, true); SquadRepository.UpdateFormation(formation); _draggedPlayer = null; } }
private void LoadTeam() { var sport = Enum.GetValues(typeof(SportType)).Cast <SportType>().First(s => s.ToString() == SelectedTeam.Sport.Name); var team = App.Teams.Find(t => t.Id == SelectedTeam.Id); team.Squad = SquadRepository.GetTeamSquad(team.Id); team.Formations = SetTeamFormations(team); switch (sport) { case SportType.Soccer: Browser.Browse(new SoccerArgs(BrowseArgsType.SoccerSquadArgs, team)); break; } }
private void ExecuteRemovePlayerConfirmed(bool isConfirmed) { if (isConfirmed) { Players.Remove(PlayerToRemove); Team.Squad.Remove(PlayerToRemove); var playerModel = _teamModel.Squad.Find(p => p.Id == PlayerToRemove.Id); _teamModel.Squad.Remove(playerModel); SquadRepository.DeletePlayer(_teamModel.Id, PlayerToRemove.Id); _changesManager.Change(new SoccerPlayerArgs(playerModel, ChangeType.PlayerDeleted)); } PlayerToRemove = null; PanelEnabled = true; ConfirmationOverlayVisible = false; }
private void AddNewPlayerToSquad() { var player = new SoccerPlayerViewModel(NewPlayer, Collections, _changesManager); Players.Remove(NewPlayer); Players.Add(player); ResetNewPlayerValues(); Players.Add(NewPlayer); Team.Squad.Add(player); var playerModel = new SoccerPlayer(player); _teamModel.Squad.Add(playerModel); playerModel.Id = player.Id = SquadRepository.AddPlayer(_teamModel.Id, _teamModel.Squad.Last()); _changesManager.Change(new SoccerPlayerArgs(playerModel, ChangeType.PlayerAdded)); }
private void SaveTeam() { var team = new Team() { ManagerId = Team.Manager.Id, Name = Team.Name, NationId = Team.Nation.Id, CityId = Team.City.Id, SportId = Team.Sport.Id, }; team.Id = SquadRepository.AddTeam(team); App.Teams.Add(team); switch (Enum.GetValues(typeof(SportType)).Cast <SportType>().First(t => t.ToString() == Team.Sport.Name)) { case SportType.Soccer: Browser.Browse(new SoccerArgs(BrowseArgsType.SoccerSquadArgs, team)); break; } }
private void SubstitutePlayers() { var firstSubX = _firstSubstitute.X; var firstSubY = _firstSubstitute.Y; var secondSubX = _secondSubstitute.X; var secondSubY = _secondSubstitute.Y; SubFrom?isInsideLineupSection = null; // VIEW MODEL // sub inside 'field details' if (SelectedFormation.Lineup.Contains(_firstSubstitute) && SelectedFormation.Lineup.Contains(_secondSubstitute)) { _firstSubstitute.X = _secondSubstitute.X; _firstSubstitute.Y = _secondSubstitute.Y; _secondSubstitute.X = firstSubX; _secondSubstitute.Y = firstSubY; } // sub first sub from 'field details' to second sub in 'lineup details' else if (SelectedFormation.Lineup.Contains(_firstSubstitute) && !SelectedFormation.Lineup.Contains(_secondSubstitute)) { SubstituteBetweenChangeables(SubFrom.FieldDetailsSection, firstSubX, firstSubY); SelectedFormation.Lineup.RemoveFirstNames(); } // sub first sub from 'lineup details' to second sub in 'field details' else if (!SelectedFormation.Lineup.Contains(_firstSubstitute) && SelectedFormation.Lineup.Contains(_secondSubstitute)) { SubstituteBetweenChangeables(SubFrom.LineupDetailsSection, secondSubX, secondSubY); SelectedFormation.Lineup.RemoveFirstNames(); } // sub inside 'lineup details' else if (!SelectedFormation.Lineup.Contains(_firstSubstitute) && !SelectedFormation.Lineup.Contains(_secondSubstitute)) { isInsideLineupSection = SubFrom.InsideLineupDetailsSection; } // MODEL SoccerPlayer firstSubModel = _teamModel.Squad.FirstOrDefault(p => p.Id == _firstSubstitute.Id); SoccerPlayer secondSubModel = _teamModel.Squad.FirstOrDefault(p => p.Id == _secondSubstitute.Id); var originalFirstSub = firstSubModel.RefferenceCopy(); var originalSecondSub = secondSubModel.RefferenceCopy(); if (isInsideLineupSection.HasValue && isInsideLineupSection.Value == SubFrom.InsideLineupDetailsSection) { firstSubModel.Rotation = (RotationTeam)_secondSubstitute.RotationTeam.Value; secondSubModel.Rotation = (RotationTeam)_firstSubstitute.RotationTeam.Value; } else { firstSubModel.Rotation = (RotationTeam)_firstSubstitute.RotationTeam.Value; secondSubModel.Rotation = (RotationTeam)_secondSubstitute.RotationTeam.Value; } var formation = _teamModel.Formations.Find(f => f.Id == SelectedFormation.Id); var originalFormation = formation.RefferenceCopy(); if (originalFormation.LineupIds.Contains(_firstSubstitute.Id)) { UpdateFormationModel(formation, _firstSubstitute.Id); } if (originalFormation.LineupIds.Contains(_secondSubstitute.Id)) { UpdateFormationModel(formation, _secondSubstitute.Id); } // DB SquadRepository.UpdatePlayer(firstSubModel); SquadRepository.UpdatePlayer(secondSubModel); if (!isInsideLineupSection.HasValue) { SquadRepository.UpdateFormation(formation); } // CHANGE if (firstSubModel == null || secondSubModel == null) { throw new InvalidOperationException("Models were not found from the view model id's"); } var subArgs = new SubstitutionArgs(ChangeType.SubConfirmed, originalFirstSub, originalSecondSub) { firstSubX = _firstSubstitute.X, firstSubY = _firstSubstitute.Y, secondSubX = _secondSubstitute.X, secondSubY = _secondSubstitute.Y, }; _changeManager.Change(subArgs); // RESET SUB VM => should be in VIEW MODEL update?? _firstSubstitute.SetIsSelectedBinding(false); _secondSubstitute.SetIsSelectedBinding(false); _firstSubstitute = null; _secondSubstitute = null; }
private SoccerPlayerViewModel SetFormationPlayer(int?playerId, int playerX, int playerY, bool isDefaultFormation, int?playerOrder = null) { SoccerPlayerViewModel player; if (!isDefaultFormation) { if (!playerId.HasValue) { return(null); } player = Team.Squad.Find(p => p.Id == playerId.Value); var playerModel = _teamModel.Squad.Find(p => p.Id == player.Id); if (playerModel.Rotation != RotationTeam.Lineup) { playerModel.Rotation = RotationTeam.Lineup; SquadRepository.UpdatePlayer(playerModel); } player.RotationTeam = new CellViewModel(RotationTeam.Lineup); player.X = playerX; player.Y = playerY; return(player); } else if (playerOrder.HasValue) { PositionRole?role = null; switch (playerOrder) { case 1: role = PositionRole.GK; break; case 2: role = PositionRole.LB; break; case 3: role = PositionRole.CB; break; case 4: role = PositionRole.CB; break; case 5: role = PositionRole.RB; break; case 6: role = PositionRole.LW; break; case 7: role = PositionRole.CM; break; case 8: role = PositionRole.CM; break; case 9: role = PositionRole.RW; break; case 10: role = PositionRole.CAM; break; case 11: role = PositionRole.ST; break; } if (role.HasValue) { player = Team.Squad.FirstOrDefault(p => (PositionRole)p.Position.Value == role.Value); player.X = playerX; player.Y = playerY; return(player); } else { throw new InvalidOperationException("playerOrder value in not between 1 and 11."); } } else { throw new InvalidOperationException("playerOrder parameter cannot be null when setting the default formation."); } }