public void Stop()
 {
     if (State == PluginState.Running)
     {
         reader          = null;
         state           = PluginState.Ready;
         control.Enabled = true;
     }
 }
 public void Start()
 {
     if (State == PluginState.Paused)
     {
         state = PluginState.Running;
     }
     else if (State == PluginState.Ready)
     {
         control.Enabled = false;
         state           = PluginState.Running;
         control.Stream.Seek(0, SeekOrigin.Begin);
         reader = new AntVideoReader(control.Stream);
     }
 }
        private void UpdateUi()
        {
            if (Stream != null)
            {
                roundsLabel.Text  = string.Empty;
                playerLabel.Text  = string.Empty;
                stateLabel.Text   = string.Empty;
                infoPanel.Visible = true;

                loadingProgressBar.Value   = 0;
                loadingProgressBar.Visible = true;
                try
                {
                    Stream.Seek(0, SeekOrigin.Begin);
                    AntVideoReader  reader    = new AntVideoReader(Stream);
                    SimulationState lastState = reader.Read();
                    loadingProgressBar.Maximum = lastState.TotalRounds;
                    while (!reader.Complete)
                    {
                        lastState = reader.Read();
                        loadingProgressBar.Value = lastState.CurrentRound;
                    }
                    roundsLabel.Text = lastState.CurrentRound.ToString();
                    stateLabel.Text  = lastState.CurrentRound == lastState.TotalRounds ? "Finished" : "Not Finished";
                    playerLabel.Text = string.Join("\r\n", lastState.ColonyStates.Select(c => c.ColonyName));
                }
                catch (Exception ex)
                {
                    infoPanel.Visible = false;

                    MessageBox.Show(ex.Message);

                    Stream.Close();
                    Stream.Dispose();
                    Stream = null;
                }

                loadingProgressBar.Visible = false;
            }
            else
            {
                infoPanel.Visible          = false;
                loadingProgressBar.Visible = false;
            }
        }