Beispiel #1
0
        public static RlmGetRacesResponse GetRaces(int tournamentID)
        {
            IRlmRepository      repo     = RepositoryManager.GetDefaultRepository();
            RlmGetRacesResponse response = null;

            lock (_lock)
            {
                Tournament tournament = repo.LoadTournament(tournamentID);
                response = GetRaces(tournament);
            }

            return(response);
        }
Beispiel #2
0
        public static RlmGetRacesResponse GetRaces(Tournament tournament)
        {
            RlmGetRacesResponse response = new RlmGetRacesResponse();

            response.NumCars  = tournament.NumCars;
            response.NumLanes = tournament.NumLanes;
            response.NumRaces = tournament.NumRaces;
            response.Races    = tournament.Races;

            Dictionary <int, List <RlmGetRacesResponse.CarRaces.CarLaneAssignment> > carRaceDictionary = new Dictionary <int, List <RlmGetRacesResponse.CarRaces.CarLaneAssignment> >();

            foreach (IRace race in tournament.Races)
            {
                foreach (ILaneAssignment assignment in race.LaneAssignments)
                {
                    if (assignment.Car == null)
                    {
                        continue;
                    }

                    if (!carRaceDictionary.ContainsKey(assignment.Car.ID))
                    {
                        carRaceDictionary.Add(assignment.Car.ID, new List <RlmGetRacesResponse.CarRaces.CarLaneAssignment>());
                    }

                    carRaceDictionary[assignment.Car.ID].Add(new RlmGetRacesResponse.CarRaces.CarLaneAssignment()
                    {
                        RaceNum = race.RaceNumber, LaneNum = assignment.Lane
                    });
                }
            }

            List <RlmGetRacesResponse.CarRaces> racesByCar = new List <RlmGetRacesResponse.CarRaces>();

            foreach (int carID in carRaceDictionary.Keys)
            {
                RlmGetRacesResponse.CarRaces carRaces = new RlmGetRacesResponse.CarRaces();
                carRaces.Car         = tournament.Cars.Where(c => c.ID == carID).SingleOrDefault();
                carRaces.Assignments = carRaceDictionary[carID].OrderBy(c => c.RaceNum).ToList();
                racesByCar.Add(carRaces);
            }

            response.RacesByCar = racesByCar;

            return(response);
        }
Beispiel #3
0
        public static RlmGetRacesResponse GenerateRaces(int tournamentID)
        {
            IRlmRepository      repo   = RepositoryManager.GetDefaultRepository();
            RlmGetRacesResponse result = null;

            lock (_lock)
            {
                Tournament tournament = repo.LoadTournament(tournamentID);

                // generate the races
                TournamentManager.GenerateRaces(ref tournament);

                repo.SaveTournament(tournament);
                result = GetRaces(tournament);
            }

            RacesUpdated?.Invoke(tournamentID, new RacesUpdatedEventArgs(result));
            CurrentRaceChanged?.Invoke(tournamentID, new CurrentRaceChangedEventArgs(null, GetCurrentRace(tournamentID)));
            //RaceUpdated?.Invoke(tournamentID, new RaceUpdatedEventArgs(GetCurrentRace(tournamentID)));
            NextRacesUpdated?.Invoke(tournamentID, new NextRacesUpdatedEventArgs(GetNextRaces(tournamentID)));
            StandingsUpdated?.Invoke(tournamentID, new StandingsUpdatedEventArgs(GetStandings(tournamentID)));

            return(result);
        }
Beispiel #4
0
 public RacesUpdatedEventArgs(RlmGetRacesResponse races)
 {
     this.Races = races;
 }