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;
            }
        }
        public void CreateState(ref SimulationState simulationState)
        {
            if (reader != null)
            {
                simulationState = reader.Read();

                if (reader.Complete)
                {
                    control.Invoke((MethodInvoker)Stop);
                }
            }
        }
        public void CreateState(ref SimulationState state)
        {
            if (reader != null)
            {
                state = reader.Read();
            }

            if (reader.Complete)
            {
                control.Invoke((MethodInvoker)(() =>
                {
                    Stop();
                }));
            }
        }