Ejemplo n.º 1
0
        internal void ExecuteInstructions(ImmutableList <Action> actions)
        {
            var assignments = actions.Where(a => a is Assignment).Cast <Assignment>();

            AssignBots(assignments, _bots, Logger);

            actions = actions.RemoveRange(assignments);

            var transfers = actions.Cast <Transfer>().ToImmutableList();

            while (transfers.Count > 0)
            {
                var readyBot    = _bots.First(b => b.Value.ReadyForTransfer).Value;
                var instruction = transfers.Find(a => a.BotNumber == readyBot.Number) !;
                var(high, low) = readyBot.GetValues(Logger);

                ApplyTarget(readyBot, instruction.LowTarget, low, _outputs, _bots, Logger);
                ApplyTarget(readyBot, instruction.HighTarget, high, _outputs, _bots, Logger);
                transfers = transfers.Remove(instruction);
            }