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); } }