示例#1
0
        private void buttonDelayButton_Click(object sender, EventArgs e)
        {
            MarconiRaceControllerLogic rcl = oblist.SelectedObject as MarconiRaceControllerLogic;

            if (rcl == null)
            {
                return;
            }


            foreach (var item in _raceQueue.Where(p => p.RaceScheduledStartTime >= DateTime.Now && p.RaceScheduledStartTime >= rcl.RaceScheduledStartTime).ToList())
            {
                item.RaceScheduledStartTime = item.RaceScheduledStartTime.AddMinutes(5);

                var sched = Scheduler.GetSchedule(item.RaceName);

                Scheduler.RemoveSchedule(item.RaceName);

                OneTimeSchedule sc = new OneTimeSchedule(item.RaceName, item.RaceScheduledStartTime);
                sc.OnTrigger += Sc_OnTrigger;

                Scheduler.AddSchedule(sc);
            }

            oblist.SetObjects(_raceQueue, true);
            buttonDelayButton.Enabled = false;
        }
示例#2
0
        public RaceMainController()
        {
            InitializeComponent();
            Scheduler.OnSchedulerEvent += Scheduler_OnSchedulerEvent;
            relayBoard = RelayBoardDriver.Instance;
            _raceQueue = new List <MarconiRaceControllerLogic>();


            _soundPlayer = new SoundPlayer();
            Stream str = Marconi.Properties.Resources.marconi_race_sound1;

            _soundPlayer        = new System.Media.SoundPlayer();
            _soundPlayer.Stream = str;
            _soundPlayer.LoadAsync();


            dateTimePicker1.Format = DateTimePickerFormat.Time;
            dateTimePicker1.Value  = DateTime.Now.AddMinutes(1);
            internalClock          = new Timer();
            internalClock.Interval = 1000;
            internalClock.Tick    += InternalClock_Tick;
            internalClock.Start();

            panelButtons.Visible            = false;
            panelRaces.Visible              = false;
            oblist.UseAlternatingBackColors = true;

            this.Status.ImageGetter = delegate(object rowObject) {
                MarconiRaceControllerLogic s = (MarconiRaceControllerLogic)rowObject;
                if (s.LastEventCode == SailingRace.RaceEventCode.W)
                {
                    return("red");
                }
                else if (
                    s.LastEventCode == SailingRace.RaceEventCode.T1 ||
                    s.LastEventCode == SailingRace.RaceEventCode.T4 ||
                    s.LastEventCode == SailingRace.RaceEventCode.T5
                    )
                {
                    return("yellow");
                }

                else if (s.LastEventCode == SailingRace.RaceEventCode.T0)
                {
                    return("green");
                }

                else
                {
                    return("");
                }
            };

            var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

            lblVersion.Text = "Running version: " + version.ToString();
        }
示例#3
0
        private void buttonundodelay_Click(object sender, EventArgs e)
        {
            MarconiRaceControllerLogic rcl = oblist.SelectedObject as MarconiRaceControllerLogic;

            if (rcl == null)
            {
                return;
            }


            foreach (var item in _raceQueue.Where(p => p.RaceScheduledStartTime.AddMinutes(-6) >= DateTime.Now).ToList())
            {
                item.RaceScheduledStartTime = item.RaceScheduledStartTime.AddMinutes(-5);
            }

            oblist.SetObjects(_raceQueue, true);
            buttonDelayButton.Enabled = false;
        }
示例#4
0
        //Start the application, creates each race.
        private void btStartRace_Click(object sender, EventArgs e)
        {
            if (dateTimePicker1.Value <= DateTime.Now.AddSeconds(10))
            {
                DialogResult dialogResult = MessageBox.Show("The time of the first date is too soon or in the past. Select a valid time for the first race", "WARNING", MessageBoxButtons.OK);
                return;
            }
            panelStart.Visible = false;
            panel1.Visible     = true;
            AllLightsOff();

            int      _races         = int.Parse(this.textBox1.Text);
            DateTime _lastStartTime = dateTimePicker1.Value;


            panelButtons.Visible = true;
            panelRaces.Visible   = true;

            for (int x = 1; x <= _races; x++)
            {
                MarconiRaceControllerLogic _newRace = new MarconiRaceControllerLogic();

                _newRace.RaceName = "Race " + x.ToString();
                _newRace.RaceScheduledStartTime = _lastStartTime;

                _newRace.BoardDriver    = relayBoard;
                _newRace.InternalPlayer = _soundPlayer;



                OneTimeSchedule sc = new OneTimeSchedule("Race " + x.ToString(), _lastStartTime);
                sc.OnTrigger += Sc_OnTrigger;

                _raceQueue.Add(_newRace);
                Scheduler.AddSchedule(sc);

                _lastStartTime = _lastStartTime.AddMinutes(6);
            }
            oblist.SetObjects(_raceQueue, true);
        }
示例#5
0
        private void InternalClock_Tick(object sender, EventArgs e)
        {
            //update UI Clock

            this.BeginInvoke((System.Windows.Forms.MethodInvoker) delegate()
            {
                this.lblsystemtimevalue.Text = DateTime.Now.ToString(@"HH\:mm\:ss");
                this.Status.ImageGetter      = delegate(object rowObject) {
                    MarconiRaceControllerLogic s = (MarconiRaceControllerLogic)rowObject;
                    if (s.LastEventCode == SailingRace.RaceEventCode.W)
                    {
                        return("red");
                    }
                    else if (
                        s.LastEventCode == SailingRace.RaceEventCode.T1 ||
                        s.LastEventCode == SailingRace.RaceEventCode.T4 ||
                        s.LastEventCode == SailingRace.RaceEventCode.T5
                        )
                    {
                        return("yellow");
                    }

                    else if (s.LastEventCode == SailingRace.RaceEventCode.T0)
                    {
                        return("green");
                    }

                    else
                    {
                        return("");
                    }
                };
                oblist.SetObjects(_raceQueue, true);
            });


            //update status of list view
        }
示例#6
0
        private void Sc_OnTrigger(string scheduleName)
        {
            var r = _raceQueue.Where(p => p.RaceName == scheduleName).SingleOrDefault();

            if (r == null)
            {
                MessageBox.Show("The scheduled race does not exists anymore.");
            }



            _activeRace = r;

            r.NewRaceClockEvent += R_NewRaceClockEvent;

            r.NewRaceEvent += R_NewRaceEvent;

            r.StartCountDown();

            pict5minleft.Image = Marconi.Properties.Resources.race_red_light;

            pict5minleft.Image = Marconi.Properties.Resources.race_red_light;
        }
        public MarconiRaceController()
        {
            InitializeComponent();
            relayBoard = RelayBoardDriver.Instance;

            logic     = new MarconiRaceControllerLogic();
            _raceList = new List <MarconiRaceControllerLogic>();
            _raceList.Add(logic);

            if (ConfigurationManager.AppSettings["HornPatternEventT5"] != null)
            {
                logic.HornPatternEventT5 = ConfigurationManager.AppSettings["HornPatternEventT5"];
            }
            else
            {
                logic.HornPatternEventT5 = "1,1";
            }

            if (ConfigurationManager.AppSettings["HornPatternEventT4"] != null)
            {
                logic.HornPatternEventT4 = ConfigurationManager.AppSettings["HornPatternEventT4"];
            }
            else
            {
                logic.HornPatternEventT4 = "1,1";
            }


            if (ConfigurationManager.AppSettings["HornPatternEventT1"] != null)
            {
                logic.HornPatternEventT1 = ConfigurationManager.AppSettings["HornPatternEventT1"];
            }
            else
            {
                logic.HornPatternEventT1 = "1,1";
            }


            if (ConfigurationManager.AppSettings["HornPatternEventStart"] != null)
            {
                logic.HornPatternEventStart = ConfigurationManager.AppSettings["HornPatternEventStart"];
            }
            else
            {
                logic.HornPatternEventStart = "1,1";
            }


            if (ConfigurationManager.AppSettings["HornPatternEventGeneralRecall"] != null)
            {
                logic.HornPatternEventGeneralRecall = ConfigurationManager.AppSettings["HornPatternEventGeneralRecall"];
            }
            else
            {
                logic.HornPatternEventGeneralRecall = "1,1";
            }

            if (ConfigurationManager.AppSettings["HornPatternIndividualRecall"] != null)
            {
                logic.HornPatternIndividualRecall = ConfigurationManager.AppSettings["HornPatternIndividualRecall"];
            }
            else
            {
                logic.HornPatternIndividualRecall = "1,1";
            }

            System.Media.SoundPlayer _soundPlayer = new SoundPlayer();
            Stream str = Marconi.Properties.Resources.marconi_race_sound1;

            _soundPlayer        = new System.Media.SoundPlayer();
            _soundPlayer.Stream = str;
            _soundPlayer.LoadAsync();

            logic.InternalPlayer = _soundPlayer;

            logic.BoardDriver = relayBoard;
            logic.EventReset();


            this.btGeneralRecall.Enabled     = false;
            this.btnIndividualRecall.Enabled = false;



            this.lblRelayBoardStatusValue.Text = relayBoard.RelayBoardMessage;
        }