/// <summary> /// When a schedule changes open or close gates /// </summary> /// <param name="schedule"></param> private void ScheduleHasChanged(AirplaneSchedule schedule) { if (schedule.Active) { OpenGate(schedule.GateId); } else { CloseGate(schedule.GateId); } }
/// <summary> /// Get the schedule in string format /// </summary> /// <returns></returns> public override string ToString() { string s = ""; for (int i = 0; i < Schedules.Length; i++) { AirplaneSchedule cur = Schedules[i]; s += $"Destination: {cur.Destination} Gate: {cur.GateId} Opens: {cur.OpenGate.ToString("HH.mm")} Leaving: {cur.Leaving.ToString("HH.mm")} Is Open {cur.Active}\n"; } return(s); }
/// <summary> /// Get the current opens gates /// </summary> /// <returns></returns> public uint[] GetCurrentOpenGates() { List <uint> ids = new List <uint>(); for (int i = 0; i < Schedules.Length; i++) { AirplaneSchedule cur = Schedules[i]; if (cur.OpenGate <= DateTime.Now && cur.Leaving > DateTime.Now) { ids.Add(cur.GateId); } } return(ids.ToArray()); }
/// <summary> /// Loads the air plane schedule /// </summary> /// <param name="path"></param> public void LoadAirPlaneSchedule() { string[] data; try { data = File.ReadAllLines(Path); } catch (Exception e) { throw e; } schedules = new AirplaneSchedule[data.Length]; for (int i = 0; i < schedules.Length; i++) { schedules[i] = new AirplaneSchedule(); schedules[i].ReadData(data[i]); } }
/// <summary> /// Check whether the schedule is active or not /// </summary> protected override void ThreadWork() { while (true) { for (int i = 0; i < Schedules.Length; i++) { AirplaneSchedule cur = Schedules[i]; if (cur.OpenGate <= DateTime.Now && cur.Leaving > DateTime.Now) { cur.Active = true; } else { cur.Active = false; } } // Don't let the cpu spin Thread.Sleep(1000); } }
/// <summary> /// Called when the schedule is changed /// </summary> /// <param name="schedule"></param> static void ShowChanges(AirplaneSchedule schedule) { CentralManager.Instance.ConsoleLogger.Write(CentralManager.Instance.ScheduleManager.ToString()); CentralManager.Instance.ConsoleLogger.Append($"Press [0 - {CentralManager.Instance.ScheduleManager.Schedules.Length - 1}] to forcefully open/close schedules gates"); }