math.randomseed(os.time()) function assertf(bool,fmt,...) assert(bool,string.format(fmt,unpack({...}))) end function printf(fmt,...) print(string.format(fmt,unpack({...}))) end -- Override tostring to display more info about the table --local old_tostring = tostring --local numtabs = 0 --function tostring(el) --if type(el) == "table" then --numtabs = numtabs + 1 --local strbuilder = {"{"} --for k,v in pairs(el) do --strbuilder[#strbuilder + 1] = string.format("%s%s : %s", string.rep("\t",numtabs), tostring(k), tostring(v)) --end --strbuilder[#strbuilder + 1] = "}" --numtabs = numtabs - 1 --return table.concat(strbuilder,"\n") --end --return old_tostring(el) --end local w,h = scrw(),scrh() --gui elements local textlabel = gui.newlabel({{20,0},{w-20,h - 80}},"") local hintbox = gui.newlabel({{20,h-80},{w-20,h-40}},"") local cmdbox = gui.neweditbox({{20,h-40},{w-50,h-20}}) local cmdbut = gui.newbutton({{w-50,h-40},{w-20,h-20}},"->") local fail_hint_tex = video.newtexturefromfile("../data/res/fail_hint_box.png") local fail_hint_guiimg = gui.newiguiimage({w,h-200},true,fail_hint_tex) local faillabel = gui.newlabel({{w + 30,h-180},{w+220,h-100}},"") multibox = gui.neweditbox({{20,h/2},{w-20,h-100}},"") multibox:set_multiline(true) multibox:setvisible(false) multibox_donebut = gui.newbutton({{w-100,h-100},{w-20,h-80}},"Done") multibox_donebut:setvisible(false) cmdbox:focus() --width=200,height=120 function out(text) local prev = textlabel:gettext() textlabel:settext(prev .. "\n" .. text) end function cls() textlabel:settext("") end function set_hints(...) local t = table.concat({...},"\t") hintbox:settext(t) end function enable_multibox(bool) multibox:settext("") multibox_donebut:setvisible(bool) multibox:setvisible(bool) end function get_multibox() return multibox end function get_multibox_donebut() return multibox_donebut end function clear_cmdbox() cmdbox:settext("") end local cmd_hooks = {} function add_cmdbox_hook(func) table.insert(cmd_hooks,func) end local cmds cmdbox.onChange = function() for k,v in pairs(cmd_hooks) do v(cmdbox) end end local fail_anim = 0 local fail_queue = {} function fail_hint(...) fail_queue[#fail_queue + 1] = table.concat({...}) end function fail_hintf(fmt,...) s = string.format(fmt,unpack({...})) fail_hint(s) end function GAME.drawPostGui() if fail_anim > 0 then if fail_anim < 11 then fail_hint_guiimg:move({30,0}) faillabel:move({30,0}) end fail_anim = fail_anim - 1 if fail_anim == 0 then for i = 1,#fail_queue do fail_queue[i] = fail_queue[i + 1] end end else if #fail_queue > 0 then fail_anim = 100 fail_hint_guiimg:move({-300,0}) faillabel:settext(fail_queue[1]) faillabel:move({-300,0}) end end end --function command_over(text) --end local function run_command() print("Got command") local command = cmdbox:gettext() local parts = {} for word in string.gmatch(command,"([^%s]+)") do parts[#parts + 1] = word end print("Command parts:") for k,v in pairs(parts) do print(k,":",v) end local root = parts[1] for i = 1,#parts do --Remove the first part from the command. parts[i] = parts[i + 1] end if command_over then command_over(command) else if cmds[root] and cmds["can_" .. root] and cmds["can_" .. root]() then print("found command, calling with:") for k,v in pairs(parts) do print(k,":",v) end cmds[root](unpack(parts)) cmdbox:settext("") print("Done calling command") else fail_hintf("Unkown command: %s",root) end end end --multibox_donebut.onClick = function(self) --print("Ran multibutton click command") --print("Over multibut click:", over_multibut_click) --if over_multibut_click then --over_multibut_click(self) --end --end cmdbox.onEnter = run_command cmdbut.onClick = run_command GAME.setbackgroundcolor({224,248,208}) local world = require("world") local locations = require("locations") print("about to load localplayer") print("done loading localplayer") require("loc_city") require("loc_beach") require("loc_forest") require("loc_mountains") require("loc_fields") local player = require("localplayer") require("interface") cmds = require("commands") --local house = require("house") --local save = require("save") --local nhouse = house.create_new(text) --local house_data = save.table_to_string(nhouse) --print("Made house:",house_data)