var canSetHTMLColors=false;
var canDump=true;
var canYoutube=false;
var recordingStartsFromLevel=0;
var inputHistory=[];
var compiledText;
var canOpenEditor=true;
var IDE=true;
solving = false;
var debugger_turnIndex=0;
var debug_visualisation_array=[];
var diffToVisualize=null;
function convertLevelToString() {
var out = '';
var seenCells = {};
var i = 0;
for (var y = 0; y < level.height; y++) {
for (var x = 0; x < level.width; x++) {
var bitmask = level.getCell(x + y * level.width);
var objs = [];
for (var bit = 0; bit < 32 * STRIDE_OBJ; ++bit) {
if (bitmask.get(bit)) {
objs.push(state.idDict[bit])
}
}
objs.sort();
objs = objs.join(" ");
/* replace repeated object combinations with numbers */
if (!seenCells.hasOwnProperty(objs)) {
seenCells[objs] = i++;
out += objs + ":";
}
out += seenCells[objs] + ",";
}
out += '\n';
}
return out;
}
function stripHTMLTags(html_str){
var div = document.createElement("div");
div.innerHTML = html_str;
var text = div.textContent || div.innerText || "";
return text.trim();
}
function dumpTestCase() {
//compiler error data
var levelDat = compiledText;
var errorStrings_stripped = errorStrings.map(stripHTMLTags);
var resultarray = [levelDat,errorStrings_stripped,errorCount];
var resultstring = JSON.stringify(resultarray);
resultstring = `
[
"${state.metadata.title||"untitled test"}",
${resultstring}
],`;
selectableint++;
var tag = 'selectable'+selectableint;
consolePrint("
Compilation error/warning data (for error message tests - errormessage_testdata.js):
"+resultstring+"
",true);
//normal session recording data
var levelDat = compiledText;
var input = inputHistory.concat([]);
var outputDat = convertLevelToString();
var resultarray = [levelDat,input,outputDat,recordingStartsFromLevel,loadedLevelSeed];
var resultstring = JSON.stringify(resultarray);
resultstring = `
[
"${state.metadata.title||"untitled test"}",
${resultstring}
],`;
selectableint++;
var tag = 'selectable'+selectableint;
consolePrint("
Recorded play session data (for play session tests - testdata.js):
"+resultstring+"
",true);
}
function clearInputHistory() {
if (canDump===true) {
inputHistory=[];
recordingStartsFromLevel = curlevel;
}
}
function pushInput(inp) {
if (canDump===true) {
inputHistory.push(inp);
}
}