private void LoadRacersInTournametBracket(XmlDocument raceTemplateXml) { // Get a node list of all the Bracket seeds XmlNodeList bracketSeedList = raceTemplateXml.SelectNodes("/tournamentTemplate/bracketTemplate/bracket"); foreach (XmlNode bracketnode in bracketSeedList) { int seed = Convert.ToInt32(bracketnode.FirstChild.Attributes["index"].Value); int seed2 = Convert.ToInt32(bracketnode.ChildNodes[1].Attributes["index"].Value); string key = bracketnode.Attributes["raceKey"].Value; TournamentRace tourRace = RaceDataStore.TournamentRaces[key]; //HACK: if (seed < RaceDataStore.Sweet16Racers.Count) { tourRace.Racer1 = RaceDataStore.Sweet16Racers[seed]; } //HACK: if (seed2 < RaceDataStore.Sweet16Racers.Count) { tourRace.Racer2 = RaceDataStore.Sweet16Racers[seed2]; } // Load the Race Keys in our Queue RaceDataStore.RaceKeyQueue.Enqueue(key); } }
public void RunRace(Race activeRace) { // Play our Rev Start wave _wavePlayer.SoundLocation = "StartRev.wav"; _wavePlayer.PlaySync(); // Are we in emulate mode? if (RaceDataStore.EmulateRace) { RunEmulatedRace(activeRace); } else { // Store a reference to the active Race _activeRace = activeRace; // Make sure the tournament race object is null _activeTournamentRace = null; _trackCommunication.StartRace(); } _wavePlayer.SoundLocation = "EndRev.wav"; _wavePlayer.PlaySync(); }
private void toolStripButtonNextRace_Click(object sender, EventArgs e) { //TODO: Close race // Is the current race completed? if (this.IsRaceRecorded().Equals(false)) { // Tell the user we can't continue MessageBox.Show(this, "Active race has not been completed.", "Are you sure", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } try { // Advance the winner to the next round if (RaceDataStore.RaceProc.AdvanceWinner(_activeRace)) { // Get the next race _activeRace = RaceDataStore.RaceProc.GetNextTournamentRace(); this.LoadRacerData(); } } catch (NoMoreRacersException) { // Mark our heat as complete and increment the // heat number RaceDataStore.PrelimHeatCompleted = false; RaceDataStore.PrelimHeatNumber++; // Are we done with the prelims? if (RaceDataStore.PrelimHeatNumber > 4) { if (OnPrelimCompleteEvent != null) { OnPrelimCompleteEvent(); } MessageBox.Show("The prelims have completed. Stay tuned for the posting of the Sweet 16 Racers."); this.Close(); } else { this.toolStripLabelHeat.Text = String.Concat("Heat ", RaceDataStore.PrelimHeatNumber); this.ClearAllTextBoxes(this); RaceDataStore.RaceProc.LoadNextHeat(); // Get the next race //_activeRace = RaceDataStore.RaceProc.GetNextRace(); this.LoadRacerData(); } } }
private void FormPrelimRaceCommand_Load(object sender, EventArgs e) { // NOTE: The first heat was already loaded by the Prelim Race Form // Get the next race _activeRace = RaceDataStore.RaceProc.GetNextTournamentRace(); // Hook into the race complete event RaceDataStore.RaceProc.OnRaceComplete += new RaceProcessor.OnRaceCompleteHandler(RaceProc_OnRaceComplete); this.LoadRacerData(); }
public void RunTournamentRace(TournamentRace activeRace) { // Store a reference to the tournament race _activeTournamentRace = activeRace; // Make sure the active race object is null _activeRace = null; // Play our Rev Start wave _wavePlayer.SoundLocation = "StartRev.wav"; _wavePlayer.PlaySync(); if (RaceDataStore.EmulateRace) { Random randomTimeGenerator = new Random(); double time1 = randomTimeGenerator.NextDouble(); double time2 = randomTimeGenerator.NextDouble(); time1 += randomTimeGenerator.Next(3, 6); time2 += randomTimeGenerator.Next(3, 6); activeRace.Racer1.RaceTime = time1; activeRace.Racer2.RaceTime = time2; if (time1 < time2) { activeRace.Racer1.RecordRaceResult(true); activeRace.Racer2.RecordRaceResult(false); } else { activeRace.Racer1.RecordRaceResult(false); activeRace.Racer2.RecordRaceResult(true); } this.OnRaceComplete(); //// Advance the winner to the next round //this.AdvanceWinner(activeRace); } else { _trackCommunication.StartRace(); } // Play the tire wave _wavePlayer.SoundLocation = "EndRev.wav"; _wavePlayer.PlaySync(); }
public TournamentRace GetNextTournamentRace() { TournamentRace tournyRace = null; if (RaceDataStore.RaceKeyQueue.Count > 0) { string key = RaceDataStore.RaceKeyQueue.Dequeue(); // Get the next race to run from the Queue tournyRace = RaceDataStore.TournamentRaces[key]; tournyRace.Key = key; } return(tournyRace); }
private void LoadRaceView() { // Do we have any nodes in our tree? if (this.treeView1.Nodes.Count > 0) { this.treeView1.Nodes.Clear(); } // Add our root node TreeNode rootNode = new TreeNode("Sweet 16 Tournament"); foreach (string key in RaceDataStore.TournamentRaces.Keys) { TournamentRace tourRace = RaceDataStore.TournamentRaces[key]; // Make our key look nicer string keyExpanded = key; keyExpanded = keyExpanded.Replace("R", "Round "); keyExpanded = keyExpanded.Replace("B", "Bracket "); TreeNode raceNode = new TreeNode(keyExpanded); //HACK: string racerNodeText = tourRace.Racer1 == null ? "Empty" : tourRace.Racer1.Racer.GetScoreboardDisplay(); string racer2NodeText = tourRace.Racer2 == null ? "Empty" : tourRace.Racer2.Racer.GetScoreboardDisplay(); TreeNode racer1Node = new TreeNode(racerNodeText); if (tourRace.Racer1 != null) { racer1Node.Tag = tourRace.Racer1.Racer; } TreeNode racer2Node = new TreeNode(racer2NodeText); if (tourRace.Racer2 != null) { racer2Node.Tag = tourRace.Racer2.Racer; } raceNode.Nodes.AddRange(new TreeNode[] { racer1Node, racer2Node }); rootNode.Nodes.Add(raceNode); } this.treeView1.Nodes.Add(rootNode); }
private void LoadTournamentBrackets() { XmlDocument raceTemplateXml = this.LoadTournamentTemplate(); // Iterate over the brackets and build tournement objects XmlNodeList bracketList = raceTemplateXml.SelectNodes("/tournamentTemplate/raceTemplate/race"); foreach (XmlNode raceNode in bracketList) { TournamentRace tournamentRace = new TournamentRace(raceNode.Attributes["winnerKey"].Value.ToString()); string key = raceNode.Attributes["key"].Value.ToString(); RaceDataStore.TournamentRaces.Add(key, tournamentRace); } this.LoadRacersInTournametBracket(raceTemplateXml); }
public bool AdvanceWinner(TournamentRace activeRace) { bool moreRaces = true; string winnerKey = activeRace.WinnerKey; Sweet16Racer winningRacer = activeRace.Racer1.IsEliminated == false ? activeRace.Racer1 : activeRace.Racer2; if (winnerKey == string.Empty) { System.Windows.Forms.MessageBox.Show(winningRacer.Racer.GetScoreboardDisplay(), "We have a winner!"); moreRaces = false; return(moreRaces); } // Get a reference to the tournament race mathing the // winnners key TournamentRace race = RaceDataStore.TournamentRaces[winnerKey]; // Is racer1 empty? if (race.Racer1 == null) { race.Racer1 = winningRacer; } else { race.Racer2 = winningRacer; } if (race.Racer1 != null && race.Racer2 != null) { RaceDataStore.RaceKeyQueue.Enqueue(winnerKey); } return(moreRaces); }