var stead={};stead["instead_js.lua"]="DEBUG = false\nSTANDALONE = true\nlocal INSTEAD_THEME_NAME = ''\n\nINSTEAD_PLACEHOLDER = function()\n return\nend\n\nINSTEAD_EMPTYSTR = function()\n return ''\nend\n\nINSTEAD_NOTIMPLEMENTED = function(fn)\n js.run('Lua.logWarning(\"' .. fn .. ' : not implemented in instead.js\");')\nend\n\n-- call JS function with given parameters\ninsteadjs_call = function(jsfn, arg)\n local arguments = ''\n for i,v in ipairs(arg) do\n arguments = arguments .. '\"' .. tostring(v) .. '\",'\n end\n arguments = arguments:sub(1, -2)\n js.run(jsfn .. '(' .. arguments .. ')')\nend\n\ntable_get_maxn = function(tbl)\n\tlocal c=0\n\tfor k in pairs(tbl) do\n\t\tif type(k)=='number' and (c == nil or k > c) then\n\t\t\tc=k\n\t\tend\n\tend\n\treturn c\nend\n\nlocal INSTEAD_GAMEPATH = ''\n\njs_instead_gamepath = function(path)\n INSTEAD_GAMEPATH=path\nend\n\ninstead_gamepath=function()\n return INSTEAD_GAMEPATH\nend\n\ninstead_realpath = INSTEAD_EMPTYSTR\ninstead_savepath = INSTEAD_EMPTYSTR\ninstead_exepath = INSTEAD_EMPTYSTR\n\n-- theme\nfunction instead_theme_var(name, value)\n if (value) then\n js.run('insteadThemeSet(\"' .. tostring(name) .. '\",\"' .. tostring(value) .. '\")')\n else\n return js.run_string('insteadThemeGet(\"' .. tostring(name) .. '\")')\n end\nend\n\nfunction js_instead_theme_name(theme)\n INSTEAD_THEME_NAME=theme\nend\n\nfunction instead_theme_name()\n return INSTEAD_THEME_NAME\nend\n\n-- timer\ninstead_timer = function(t)\n js.run('instead_settimer(\"' .. tostring(t) .. '\")')\nend\n\n-- sound\ninstead_sound = INSTEAD_PLACEHOLDER\ninstead_sound_load = INSTEAD_PLACEHOLDER\ninstead_sound_free = INSTEAD_PLACEHOLDER\ninstead_sounds_free = INSTEAD_PLACEHOLDER\ninstead_sound_channel = function()\n INSTEAD_NOTIMPLEMENTED('sound_channel')\nend\ninstead_sound_volume = function()\n INSTEAD_NOTIMPLEMENTED('sound_volume')\nend\ninstead_sound_panning = function()\n INSTEAD_NOTIMPLEMENTED('sound_panning')\nend\ninstead_sound_load_mem = function()\n INSTEAD_NOTIMPLEMENTED('sound_load_mem')\nend -- stead 3\ninstead_music_callback = function()\n INSTEAD_NOTIMPLEMENTED('music_callback')\nend -- stead 3\n\n-- sprites are not supported (yet?)\nsprite_descriptors = {}\nfont_descriptors = {}\n\ninstead_font_load = function(filename, size)\n js.run('Sprite.font(\"' .. tostring(filename) .. '\",\"' .. tostring(size) .. '\")')\n return font_descriptors[filename .. size]\nend\njs_instead_font_load = function(font, id)\n font_descriptors[font] = id\nend\ninstead_font_free = function()\n -- fonts are not taking much memory, no need to 'free' them\n return\nend\ninstead_font_scaled_size = function(size)\n -- TODO: return size as-is\n return size\nend\ninstead_sprite_alpha = function()\n INSTEAD_NOTIMPLEMENTED('sprite.sprite_alpha')\nend\ninstead_sprite_dup = function()\n INSTEAD_NOTIMPLEMENTED('sprite.dup')\nend\ninstead_sprite_scale = function()\n INSTEAD_NOTIMPLEMENTED('sprite.scale')\nend\ninstead_sprite_rotate = function()\n INSTEAD_NOTIMPLEMENTED('sprite.rotate')\nend\ninstead_sprite_text = function(font, text, col, style)\n local arguments = ''\n arguments = arguments .. '\"' .. tostring(font) .. '\",'\n arguments = arguments .. '\"' .. tostring(text) .. '\",'\n arguments = arguments .. '\"' .. tostring(col) .. '\",'\n arguments = arguments .. '\"' .. tostring(style) .. '\"'\n js.run('Sprite.text(' .. arguments .. ')')\n return sprite_descriptors[font]\nend\njs_instead_sprite_text = function(font, id)\n sprite_descriptors[font] = id\nend\ninstead_sprite_text_size = function()\n INSTEAD_NOTIMPLEMENTED('sprite.text_size')\n return 16 -- default font size\nend\ninstead_sprite_draw = function(...)\n insteadjs_call('Sprite.draw', {...})\nend\ninstead_sprite_copy = function(...)\n insteadjs_call('Sprite.copy', {...})\nend\ninstead_sprite_compose = function(...)\n insteadjs_call('Sprite.compose', {...})\nend\ninstead_sprite_fill = function(...)\n insteadjs_call('Sprite.fill', {...})\nend\ninstead_sprite_pixel = function(...)\n insteadjs_call('Sprite.pixel', {...})\nend\ninstead_sprite_load = function(filename)\n js.run('Sprite.load(\"' .. tostring(filename) .. '\")')\n return sprite_descriptors[filename]\nend\njs_instead_sprite_load = function(filename, id)\n sprite_descriptors[filename] = id\nend\ninstead_sprite_free = function(descriptor)\n js.run('Sprite.free(\"' .. tostring(descriptor) .. '\")')\nend\ninstead_sprite_size = function()\n INSTEAD_NOTIMPLEMENTED('sprite.size')\nend\ninstead_sprites_free = INSTEAD_PLACEHOLDER\ninstead_sprite_colorkey = INSTEAD_PLACEHOLDER\ninstead_ticks = function()\n return js.run_string('Date.now()')\nend\ninstead_mouse_pos = INSTEAD_PLACEHOLDER\ninstead_mouse_show = INSTEAD_PLACEHOLDER\ninstead_finger_pos = INSTEAD_PLACEHOLDER\nfunction instead_mouse_filter(...)\n insteadjs_call('console.log', {...})\nend\ninstead_busy = INSTEAD_PLACEHOLDER\n\n-- click\ninstead_click = function(x,y)\n local cmd = iface:input('mouse', true, 1, x, y, x, y)\n if (cmd) then\n return iface:cmd(cmd)\n end\nend\n\n-- scene helper\njs_instead_getscene = function(invmode)\n local scene = {}\n scene['sound'] = instead.get_sound()\n scene['music'] = instead.get_music()\n scene['title'] = instead.get_title()\n scene['ways'] = instead.get_ways()\n scene['inv'] = instead.get_inv(invmode)\n scene['pic'] = instead.get_picture()\n return scene\nend\n";stead["instead_fs.lua"]="-- io.open proxy\nlocal mock_handle = {}\n\nio.open = function (filename, mode)\n\tmock_handle[filename] = {}\n\tmock_handle[filename].lines = {}\n mock_handle[filename].content = ''\n\tmock_handle[filename].mode = mode\n local i = 0\n\treturn {\n name = filename,\n lines = function (_)\n instead_file_set_content(tostring(_.name), js.run_string('Lua.openFile(\"' .. tostring(_.name) .. '\")'))\n local n = #mock_handle[_.name].lines\n return function ()\n i = i + 1\n if i < n then return mock_handle[_.name].lines[i] end\n end\n end,\n\t\tsetvbuf = function (_, s)\n\t\t\treturn\n\t\tend,\n write = function(_, ...)\n local a = { ... }\n for i,v in ipairs(a) do\n mock_handle[_.name].content = mock_handle[_.name].content .. tostring(v)\n end\n end,\n flush = INSTEAD_PLACEHOLDER,\n close = function(_)\n if (mock_handle[_.name].content ~= '') then\n js.run('Lua.saveFile(\"' .. _.name .. '\")')\n end\n end\n\t}\nend\n\nos.remove = INSTEAD_PLACEHOLDER\nos.rename = INSTEAD_PLACEHOLDER\n\ninstead_file_get_content = function(file)\n return mock_handle[file].content\nend\n\ninstead_file_set_content = function(file, content)\n mock_handle[file] = {}\n mock_handle[file].content = ''\n if (content ~= '') then\n mock_handle[file].content = content\n end\n local t = {}\n local function helper(line) table.insert(t, line) return \"\" end\n helper((content:gsub(\"(.-)\\r?\\n\", helper)))\n mock_handle[file].lines = t\nend\n\n-- loadfile proxy\nloadfile = function(file)\n local content = js.run_string('Lua.loadFile(\"' .. file .. '\")')\n if (content ~= '') then\n return assert(loadstring(content))\n end\nend\n\n-- stead3\nif (std ~= nil) then\n std.loadfile = loadfile;\nend\n";stead["instead_init.lua"]="require 'instead_js'\nrequire 'stead'\nrequire 'ext/gui'\nrequire 'ext/paths'\nrequire 'ext/sound'\nrequire 'ext/sprites'\nrequire 'ext/timer'\n\nstead:init()\n\nrequire 'instead_fs'\n";module.exports=stead;