public String run_next(Time time, int tick) { String log_text = ""; if (cur_process != null) { cur_process.running(tick); if (cur_process.complexity.ToMsec() == cur_process.time_worked.ToMsec()) { log_text = log_text + " Process " + cur_process.id + " done! Time worked: " + cur_process.time_worked.ToString() + ".\n"; cur_process.solve(time); done_processes.Add(cur_process); processes_queue.Remove(cur_process); cur_process = null; return(log_text); } } else { if (processes_queue.Count > 0) { cur_process = processes_queue[0]; cur_process.run(time); cur_process.running(tick); log_text = log_text + " Process " + cur_process.id + " starts.\n"; } else { log_text = log_text + " Waiting for processes.\n"; } } return(log_text); }