Warning: session_start(): open(/var/lib/php/sessions/sess_cn0mqno7vbta79i6tj9a0t3pea, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
srecord noeq G22ChallengePanel(G22Challenge challenge) is Swingable {
transient int randomSeed = randomInt();
transient JPanel imagesPanel = jline();
transient L images = syncL();
transient GazelleV_LeftArrowScript.Script parsedScript;
transient settable new G22Utils g22utils;
settable double timeoutPerImage = 10.0;
settable int imagesToPaint = 3;
settable int interval = 1000;
visualize {
awtCalcEvery(imagesPanel, interval, r _paintAnImage);
ret withCenteredBoldTitle(str(challenge),
withTopMargin(jvsplit(
northAndCenterWithMargin(
jRightAlignedLine(withLabel("Random seed:", jlabel(intToHex_upper(randomSeed)))),
jCenteredRaisedSection("Images", jscrollHorizontal(imagesPanel))
),
jCenteredSection("Analysis",
jTodo()
)
)));
}
void _paintAnImage {
if (l(images) >= imagesToPaint) ret;
try {
if (parsedScript == null) {
var parser = g22utils.leftArrowParser();
parsedScript = parser.parse(challenge.code);
}
var result = evalWithTimeout(timeoutPerImage, -> parsedScript.get(ctx));
if (result.isA()) {
var returnedObject = result.a();
if (returnedObject instanceof MakesBufferedImage
|| returnedObject instaneceof Image)
returnedObject = toBufferedImage(returnedObject);
if (returnedObject cast BufferedImage) {
images.add(returnedObject);
addToContainer(imagesPanel, g22utils.stdImageSurface(returnedObject));
} else {
images.add(null);
addToContainer(imagesPanel, jcenteredlabel("Script did not return an image but instead " + aOrAn(className(returnedObject))));
}
} else {
images.add(null);
addToContainer(imagesPanel, jcenteredlabel("Script timed out after " + nSeconds(iceil(timeoutPerImage))));
}
} catch print e {
images.add(null);
addToContainer(imagesPanel, jError(e));
}
}
}