void Run(DeserializedProgram program) { foreach (Wire wire in program.TurnRunning) { DoSmth(program.WiresDictionary[wire.Id]); } }
void DoSmth(IBlock block) { if (block is StartBlock) { //вывод сообщения - программа запущена return; } if (block is ConfigurableMethodCall) { //get Name //get Ports //get Values //set getting is true or setting is true //wait answer return; } if (block is ConfigurableWaitFor) { //set getting is true while (true) { ; //value != condition } } if (block is ConfigurableWhileLoop) { //set getting is true do //value != condition { DeserializedProgram dp = new DeserializedProgram(); //dp - get data from loop //Run(((ConfigurableWhileLoop)block)); } while (true); } if (block is PairedConfigurableMethodCall) { //get value //switch (value) { //case by cases //dp //Run() } } }