layer.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. --[[
  2. @module Sled.layers command
  3. layers [current id] [list new rename merge]
  4. ]]
  5. local lume = require(LIB_PATH.."lume")
  6. local Command = require "command"
  7. return Command("layer", {
  8. { "list", function ()
  9. local out = ""
  10. local sep = ", "
  11. local layers_tbl = Sled.current_map.layers.tbl
  12. for k, l in ipairs(layers_tbl) do
  13. if k == #layers_tbl then sep = "." end
  14. if l == Sled.current_layer then out = out .. "*" end
  15. out = out .. l.name .. " z: [" .. l.z .. "]" .. sep
  16. end
  17. return out
  18. end },
  19. { "new", function (layer_name)
  20. if not Sled.current_map then return "no current map" end
  21. Sled.current_map.layers:add(layer_name)
  22. end
  23. },
  24. { "merge", function(layer_name)
  25. if not layer_name then
  26. return "no name given"
  27. end
  28. local l = Sled.current_map.layers:get(layer_name)
  29. Sled.current_layer:paste(l)
  30. lume.remove(Sled.current_map.layers.tbl, l)
  31. end
  32. },
  33. { "switch", function (id)
  34. if not id then return "no name given" end
  35. local layer = Sled.current_map.layers:get(id)
  36. if not layer then return "no layer " .. id .. "found"
  37. else Sled.current_layer = layer
  38. end
  39. end
  40. },
  41. { "clear", function (l_name)
  42. local layer = l_name and Sled.current_map.layers:get(l_name) or Sled.current_layer
  43. layer:clear()
  44. return "Layer " .. layer.name .. " cleared."
  45. end
  46. },
  47. { "discard", function (id)
  48. if not id then return "no name given" end
  49. local layer = Sled.current_map.layers:get(id)
  50. if not layer then return "no layer " .. id .. " found"
  51. else
  52. Sled.current_map.layers:discard(id)
  53. return "layer " .. id.. " discarded"
  54. end
  55. end,
  56. },
  57. { "rename", function (name)
  58. if not name then return "no name given" end
  59. local layer = Sled.current_layer
  60. local n = layer.name
  61. layer.name = name
  62. return n .. " renamed to " .. layer.name
  63. end
  64. }
  65. })