return function atMonitorForWorld(){ var timeMins = utils.time24(world); if (timeMins === lastRun){ return; } if (lastRun === null ){ lastRun = timeMins - 1; }else { lastRun = lastRun % 1440; } var worldSchedule = atTasks[worldName]; if (!worldSchedule){ return; } while ( lastRun > timeMins ? (lastRun <= 1440) : ( lastRun < timeMins ) ){ var tasks = worldSchedule[lastRun++]; if (!tasks){ continue; } utils.foreach(tasks, function(task, i){ if (!task){ return; } setTimeout(task.callback.bind(null, timeMins, world), 1); if (!task.repeat){ tasks[i] = null; } }); } };
function tasksToString(){ var result = ''; for (var world in atTasks){ result += 'world: ' + world +'\n'; for (var time in atTasks[world]){ var scheduledFuncs = atTasks[world][time]; for (var i = 0;i < scheduledFuncs.length; i++){ result += ' ' + time + ': ' + scheduledFuncs[i].constructor + '\n'; } } result += '(current world time: ' + utils.time24(world) + ')\n'; } return result; }