예제 #1
0
 public void KickJudges(ListView.SelectedIndexCollection judgeIndicies)
 {
     foreach (int judgeIndex in judgeIndicies)
     {
         JudgeServer.KickJudge(judgeIndex);
     }
 }
예제 #2
0
        /// <summary>
        /// Skapa ett poäng för CurrentDive och lägg till det i Dive
        /// Skicka poängen till domarklienterna om server
        /// Skicka poängen till server om client
        /// </summary>
        /// <param name="points"></param>
        /// <param name="judgeIndex"></param>
        /// <param name="broadcastScore"></param>
        /// <returns></returns>
        private Score CreateScoreForDive(double points, int judgeIndex, bool broadcastScore = true, int roundIndex = -1, int diverIndex = -1)
        {
            if (roundIndex == -1)
            {
                roundIndex = CurrentRoundIndex;
            }

            if (diverIndex == -1)
            {
                diverIndex = CurrentDiverIndex;
            }

            Console.WriteLine(Mode.ToString() + " Scoring: " + points + " for index: " + judgeIndex + " with broadcast:" + broadcastScore.ToString());
            Console.WriteLine(Mode.ToString() + " judgeIndex: " + _currentJudgeIndex + ", roundIndex: " + roundIndex + ", diverIndex: " + diverIndex);

            Judge scoringJudge = Judges[judgeIndex];

            Score score = new Score(Divers[diverIndex].Dives[roundIndex], scoringJudge, points);

            Divers[diverIndex].Dives[roundIndex].AddScore(score); //Add score to current dive

            _view.PopulateScoreInput(score, judgeIndex, diverIndex, roundIndex);

            SkipToNonClientJudges(broadcastScore);

            if (Mode == ViewMode.Client && broadcastScore)
            {
                Console.WriteLine(Mode.ToString() + " Commiting score to client (is client)");
                _judgeClient.CommitScore(_clientJudgeIndex, score);
                _view.ToggleControls(false);
            }
            else if (Mode == ViewMode.Standalone)
            {
                Console.WriteLine(Mode.ToString() + " Broadcasting score (is server)");
                JudgeServer.BroadcastScore(score, roundIndex, diverIndex);
            }

            if (CurrentDive.Scores.Count == CurrentEvent.Judges.Count && Mode == ViewMode.Standalone)
            {
                _view.CurrentDiveScore = CurrentDive.Score;

                Database.AddScoreToDive(CurrentDive.Scores, CurrentDive);

                CurrentJudgeIndex = 0;
                CurrentDiverIndex++;

                SendStatusToClient();
                if (CurrentDiverIndex >= Divers.Count)
                {
                    CurrentDiverIndex = 0;
                    CurrentRoundIndex++;
                }
                _view.CompleteDive();
            }
            return(score);
        }
예제 #3
0
 public void Close(bool serverTerminating = false, FormClosingEventArgs e = null)
 {
     if (Mode == ViewMode.Client)
     {
         if (!serverTerminating)
         {
             _judgeClient.SendLogout(_clientJudgeIndex);
         }
         else
         {
             _view.CloseInvoke();
         }
     }
     else
     {
         _view.Hide();
         JudgeServer.TerminateServer(true);
         //JudgeServer.Stop(true);
     }
 }
예제 #4
0
        /// <summary>
        /// Hoppa över hoppare i klient-listan om bedömning sker i standalone
        /// </summary>
        private void SkipToNonClientJudges(bool next = false)
        {
            if (next)
            {
                CurrentJudgeIndex++;
            }

            while (JudgeServer.IsJudgeClient(_currentJudgeIndex) && Mode != ViewMode.Client)
            {
                Console.WriteLine(Mode.ToString() + " Current: " + _currentJudgeIndex + " is client. ++ing");
                _currentJudgeIndex++;
            }

            if (_currentJudgeIndex >= Judges.Count)
            {
                Console.WriteLine(Mode.ToString() + " Current: " + _currentJudgeIndex + " more than count");
                _currentJudgeIndex--;
                _view.ToggleControls(false);
            }
        }
예제 #5
0
 public void StopServer()
 {
     JudgeServer.Stop();
 }
예제 #6
0
 public void StartServer()
 {
     JudgeServer.Start();
 }
예제 #7
0
 public void SendStatusToClient()
 {
     JudgeServer.SendStatus();
 }
예제 #8
0
 public void RequestScoreFromClients()
 {
     JudgeServer.RequestScore();
 }