local oldprint = print function print(t,x,y,col1,col2) if col2 then for i=-1,1 do for j=-1,1 do oldprint(t, x+i, y+j, col2) end end end return oldprint(t, x, y, col1) end function str_width(str) return print(str,0,-8) end function print_shade(t,x,y,col1,col2) print(t,x,y+1,col2) print(t,x+1,y+1,col2) print(t,x,y,col1) end function set_state(state, ...) local args = {...} if gs and gs._leave then gs._leave() end gs = state if gs and gs._enter then gs._enter(unpack(args)) end end -- -- Returns the indices of found occurences of `o` within `tbl` -- function find(tbl, o) local indices = {} for k,v in ipairs(tbl) do if v == o then add(indices, k) end end return indices end function contains(tbl, o) for v in all(tbl) do if v == o then return true end end return false end -- -- Makes a shallow table copy -- function copy(tbl) return map(tbl, function (o) return o end) end -- -- Table equality - shallow comparison -- function equal(tbl1, tbl2) for k, _ in ipairs(tbl1) do if tbl1[k] ~= tbl2[k] then return false end end return true end