Exemple #1
0
        public void Tick()
        {
            List <string> valid      = new List <string>();
            List <Gate>   toActivate = Gates.Select(g => g).ToList();

            while (toActivate.Count > 0)
            {
                List <Gate> activable = toActivate.Where(g => IsActivable(g, valid)).ToList();
                foreach (Gate gate in activable)
                {
                    gate.Tick(_registers);
                    valid.Add(gate.Output);
                    toActivate.Remove(gate);
                }
            }
        }