local ____lualib = require("lualib_bundle") local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf local __TS__New = ____lualib.__TS__New local __TS__ArrayMap = ____lualib.__TS__ArrayMap local __TS__ArraySplice = ____lualib.__TS__ArraySplice local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter local __TS__ArraySlice = ____lualib.__TS__ArraySlice local __TS__StringSlice = ____lualib.__TS__StringSlice local __TS__Delete = ____lualib.__TS__Delete local __TS__AsyncAwaiter = ____lualib.__TS__AsyncAwaiter local __TS__Await = ____lualib.__TS__Await local ____exports = {} local ____storyteller = require("code.engine.storyteller") local ST = ____storyteller.ST local STAnimation = ____storyteller.STAnimation local STAtlas = ____storyteller.STAtlas local STContainer = ____storyteller.STContainer local STFacing = ____storyteller.STFacing local STFont = ____storyteller.STFont local STHitbox = ____storyteller.STHitbox local STInput = ____storyteller.STInput local STMap = ____storyteller.STMap local STRectangle = ____storyteller.STRectangle local STScreen = ____storyteller.STScreen local STSprite = ____storyteller.STSprite local STText = ____storyteller.STText local ____utils = require("code.engine.utils") local EXPoint = ____utils.EXPoint local ____outline = require("code.shaders.outline") local outlineShader = ____outline.default local ____mixer = require("code.systems.mixer") local mixerSystem = ____mixer.default local utf8 = require("utf8") function ____exports.default() local ____require_result_0 = require("code/maps/" .. arg[__TS__ArrayIndexOf(arg, "editor") + 1 + 1]) local resourcesGen = ____require_result_0.resourcesGen local ____mixerSystem_result_1 = mixerSystem() local music = ____mixerSystem_result_1.music local sound = ____mixerSystem_result_1.sound local ____resourcesGen_result_2 = resourcesGen(music, sound) local daemons = ____resourcesGen_result_2.daemons if daemons == nil then daemons = {} end local file = ____resourcesGen_result_2.file local framess = ____resourcesGen_result_2.framess if framess == nil then framess = {} end local images = ____resourcesGen_result_2.images if images == nil then images = {} end local sheet = ____resourcesGen_result_2.sheet local map = __TS__New( STMap, { objects = function() return { {}, function() end } end, rooms = {}, sheet = sheet, transition = { 7, 0, 1, 1, 1 } } ) local wrapper wrapper = __TS__New( STContainer, { scale = 1 / 2 ^ (1 / 4), children = { map, __TS__New(STRectangle, {color = 16711935}):addTicker(function(self) self.alpha.value = wrapper.scale.x < 1 and 0.1 or 0 self.position.x = map.position.x + (map.camera_min.x - 120) self.position.y = map.position.y + (map.camera_min.y - 90) self.size.x = 240 + (map.camera_max.x - map.camera_min.x) self.size.y = 180 + (map.camera_max.y - map.camera_min.y) end), __TS__New(STRectangle, {color = 16711935, size = {x = 240, y = 180}, anchor = 0.5}):addTicker(function(self) self.alpha.value = wrapper.scale.x < 1 and 0.1 or 0 end) } } ) love.filesystem.setIdentity("dist") return ST:view( __TS__New(STScreen, {children = {wrapper}}), { ctrl = __TS__New( STInput, {function() return love.keyboard.isDown("lctrl", "rctrl") end} ), left = __TS__New( STInput, {function() return love.keyboard.isDown("a") end} ), right = __TS__New( STInput, {function() return love.keyboard.isDown("d") end} ), shift = __TS__New( STInput, {function() return love.keyboard.isDown("lshift", "rshift") end} ) }, function(screen, inputs) return __TS__AsyncAwaiter(function(____awaiter_resolve) local editor local width = ST.width local height = ST.height local data = ST:decode((love.filesystem.read("string", file))) local atlas atlas = __TS__New( STAtlas, { list = { grid = function(self) return __TS__ArrayMap( editor:list(), function(____, value) return {value} end ) end, position = {x = 0, y = 0}, next = function(self) atlas:switch("string") end, prev = function(self) atlas:switch(editor.atlas_prev) end, from = function(self, ____self, target) if target ~= "string" then ____self.position.x = 0 ____self.position.y = 0 editor.atlas_prev = target end end }, neighbors = { grid = function(self) local list = editor:room().neighbors or ({}) return __TS__ArrayMap( {"add", "index", "offset", "remove"}, function(____, item) return ST:populate( #list, function() return item end ) end ) end, position = {x = 0, y = 0}, from = function(self, ____self, target) if target == "rooms" then ____self.position.x = 0 ____self.position.y = 0 end end, prev = function(self) atlas:switch("rooms") end, next = function(self) local selection = atlas:selection() repeat local ____switch25 = selection local ____cond25 = ____switch25 == "add" if ____cond25 then if inputs.ctrl.held then local neighbors = editor:room().neighbors local ____editor_insert_11 = editor.insert local ____atlas_navigators_neighbors_position_x_10 = atlas.navigators.neighbors.position.x local ____ST_8 = ST local ____ST_decode_9 = ST.decode local ____ST_6 = ST local ____ST_encode_7 = ST.encode local ____atlas_navigators_neighbors_position_3, ____x_4 = atlas.navigators.neighbors.position, "x" local ____atlas_navigators_neighbors_position_x_5 = ____atlas_navigators_neighbors_position_3[____x_4] ____atlas_navigators_neighbors_position_3[____x_4] = ____atlas_navigators_neighbors_position_x_5 + 1 ____editor_insert_11( editor, neighbors, ____atlas_navigators_neighbors_position_x_10, ____ST_decode_9( ____ST_8, ____ST_encode_7(____ST_6, neighbors[____atlas_navigators_neighbors_position_x_5 + 1]) ) ) else local ____editor_insert_16 = editor.insert local ____table_neighbors_15 = editor:room().neighbors local ____atlas_navigators_neighbors_position_12, ____x_13 = atlas.navigators.neighbors.position, "x" local ____atlas_navigators_neighbors_position_x_14 = ____atlas_navigators_neighbors_position_12[____x_13] ____atlas_navigators_neighbors_position_12[____x_13] = ____atlas_navigators_neighbors_position_x_14 + 1 ____editor_insert_16(editor, ____table_neighbors_15, ____atlas_navigators_neighbors_position_x_14, {0, 0, 0}) end editor:refresh() break end ____cond25 = ____cond25 or ____switch25 == "offset" if ____cond25 then atlas:switch("point") break end ____cond25 = ____cond25 or ____switch25 == "remove" if ____cond25 then do local room = editor:room() local neighbors = room.neighbors if #neighbors > 1 then local index = atlas.navigators.neighbors.position.x __TS__ArraySplice(neighbors, index, 1) editor:refresh() if index == #neighbors then local ____atlas_navigators_neighbors_position_17, ____x_18 = atlas.navigators.neighbors.position, "x" ____atlas_navigators_neighbors_position_17[____x_18] = ____atlas_navigators_neighbors_position_17[____x_18] - 1 end else editor:room().neighbors = nil editor:refresh() atlas:switch("rooms") end break end end until true end }, object = { grid = function(self) return {{0, 1, 2}} end, position = {x = 0, y = 0}, next = function(self) local ____type = atlas:selection() local objects = editor:room().objects local ano = atlas.navigators.objects if #objects == 0 then ano.position.x = 0 end local ____temp_22 if editor.atlas_prev == "objects" then local ____ano_position_19, ____x_20 = ano.position, "x" local ____ano_position_x_21 = ____ano_position_19[____x_20] ____ano_position_19[____x_20] = ____ano_position_x_21 + 1 ____temp_22 = ____ano_position_x_21 else ____temp_22 = #objects - 1 end local index = ____temp_22 editor:insert(objects, index, ____type == 0 and ({type = ____type}) or (____type == 1 and ({type = ____type, image = ""}) or ({type = ____type, frames = ""}))) editor:refresh() atlas:switch("objects") ano.position.x = index + 1 ano.position.y = math.min( ano.position.y, #ano:grid(ano) - 1 ) end, from = function(self, ____self, target) if target == "rooms" or target == "objects" then ____self.position.x = 0 ____self.position.y = 0 editor.atlas_prev = target end end, prev = function(self) atlas:switch(editor.atlas_prev) end }, objects = { grid = function(self) local list = editor:room().objects local ____type = list[atlas.navigators.objects.position.x + 1].type local ____array_23 = __TS__SparseArrayNew( "add", "anchor", "autosort", "position", "rotation", "priority", "scale", "tags", unpack(____type == 0 and ({ "interactable", "obstacle", "script", "size", "walkable" }) or (____type == 1 and ({"crop_min", "crop_max", "image"}) or ({ "crop_min", "crop_max", "direction", "duration", "frame", "frames", "step" }))) ) __TS__SparseArrayPush(____array_23, "remove") return __TS__ArrayMap( {__TS__SparseArraySpread(____array_23)}, function(____, item) return ST:populate( #list, function() return item end ) end ) end, position = {x = 0, y = 0}, from = function(self, ____self, target) if target == "rooms" then ____self.position.x = 0 ____self.position.y = 0 elseif target == "object" then ____self.position.y = 0 end end, prev = function(self) atlas:switch("rooms") end, next = function(self) local selection = atlas:selection() repeat local ____switch46 = selection local ____cond46 = ____switch46 == "add" if ____cond46 then if inputs.ctrl.held then local objects = editor:room().objects local ano = atlas.navigators.objects local ____editor_insert_32 = editor.insert local ____ano_position_x_31 = ano.position.x local ____ST_29 = ST local ____ST_decode_30 = ST.decode local ____ST_27 = ST local ____ST_encode_28 = ST.encode local ____ano_position_24, ____x_25 = ano.position, "x" local ____ano_position_x_26 = ____ano_position_24[____x_25] ____ano_position_24[____x_25] = ____ano_position_x_26 + 1 ____editor_insert_32( editor, objects, ____ano_position_x_31, ____ST_decode_30( ____ST_29, ____ST_encode_28(____ST_27, objects[____ano_position_x_26 + 1]) ) ) ano.position.y = math.min( ano.position.y, #ano:grid(ano) - 1 ) editor:refresh() else atlas:switch("object") end break end ____cond46 = ____cond46 or ____switch46 == "tags" if ____cond46 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] if object.tags == nil then object.tags = {""} editor:refresh() end atlas:switch("list") break end end ____cond46 = ____cond46 or ____switch46 == "script" if ____cond46 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] if object.script == nil then object.script = {""} editor:refresh() end atlas:switch("list") break end end ____cond46 = ____cond46 or (____switch46 == "anchor" or ____switch46 == "position" or ____switch46 == "scale" or ____switch46 == "size" or ____switch46 == "crop_min" or ____switch46 == "crop_max") if ____cond46 then atlas:switch("point") break end ____cond46 = ____cond46 or (____switch46 == "image" or ____switch46 == "frames") if ____cond46 then atlas:switch("string") break end ____cond46 = ____cond46 or ____switch46 == "remove" if ____cond46 then do local room = editor:room() local objects = room.objects if #objects > 1 then local ano = atlas.navigators.objects local index = ano.position.x __TS__ArraySplice(objects, index, 1) editor:refresh() if index == #objects then local ____ano_position_33, ____x_34 = ano.position, "x" ____ano_position_33[____x_34] = ____ano_position_33[____x_34] - 1 end ano.position.y = math.min( ano.position.y, #ano:grid(ano) - 1 ) else __TS__ArraySplice( editor:room().objects, 0 ) editor:refresh() atlas:switch("rooms") end break end end until true end }, point = { grid = function(self) return {{}} end, position = {x = 0, y = 0}, from = function(self, ____self, target) editor.atlas_prev = target end }, rooms = { grid = function(self) local list = data.rooms return __TS__ArrayMap( { "add", "camera_min", "camera_max", "neighbors", "objects", "score", "remove" }, function(____, item) return ST:populate( #list, function() return item end ) end ) end, position = {x = 0, y = 0}, next = function(self) local selection = atlas:selection() repeat local ____switch63 = selection local ____cond63 = ____switch63 == "add" if ____cond63 then if inputs.ctrl.held then local ____editor_insert_45 = editor.insert local ____data_rooms_43 = data.rooms local ____atlas_navigators_rooms_position_x_44 = atlas.navigators.rooms.position.x local ____ST_41 = ST local ____ST_decode_42 = ST.decode local ____ST_39 = ST local ____ST_encode_40 = ST.encode local ____data_rooms_38 = data.rooms local ____atlas_navigators_rooms_position_35, ____x_36 = atlas.navigators.rooms.position, "x" local ____atlas_navigators_rooms_position_x_37 = ____atlas_navigators_rooms_position_35[____x_36] ____atlas_navigators_rooms_position_35[____x_36] = ____atlas_navigators_rooms_position_x_37 + 1 ____editor_insert_45( editor, ____data_rooms_43, ____atlas_navigators_rooms_position_x_44, ____ST_decode_42( ____ST_41, ____ST_encode_40(____ST_39, ____data_rooms_38[____atlas_navigators_rooms_position_x_37 + 1]) ) ) else local ____editor_insert_50 = editor.insert local ____data_rooms_49 = data.rooms local ____atlas_navigators_rooms_position_46, ____x_47 = atlas.navigators.rooms.position, "x" local ____atlas_navigators_rooms_position_x_48 = ____atlas_navigators_rooms_position_46[____x_47] ____atlas_navigators_rooms_position_46[____x_47] = ____atlas_navigators_rooms_position_x_48 + 1 ____editor_insert_50(editor, ____data_rooms_49, ____atlas_navigators_rooms_position_x_48, {objects = {}}) end editor:refresh() break end ____cond63 = ____cond63 or (____switch63 == "camera_min" or ____switch63 == "camera_max") if ____cond63 then atlas:switch("point") break end ____cond63 = ____cond63 or ____switch63 == "neighbors" if ____cond63 then do local room = editor:room() if room.neighbors == nil then room.neighbors = {{0, 0, 0}} editor:refresh() end atlas:switch("neighbors") break end end ____cond63 = ____cond63 or ____switch63 == "objects" if ____cond63 then if #editor:room().objects == 0 then atlas:switch("object") else atlas:switch("objects") end break end ____cond63 = ____cond63 or ____switch63 == "score" if ____cond63 then do local room = editor:room() if room.score == nil then room.score = {daemon = ""} editor:refresh() end atlas:switch("score") break end end ____cond63 = ____cond63 or ____switch63 == "remove" if ____cond63 then if #data.rooms > 1 then local index = atlas.navigators.rooms.position.x __TS__ArraySplice(data.rooms, index, 1) editor:refresh() if index == #data.rooms then local ____atlas_navigators_rooms_position_51, ____x_52 = atlas.navigators.rooms.position, "x" ____atlas_navigators_rooms_position_51[____x_52] = ____atlas_navigators_rooms_position_51[____x_52] - 1 end else __TS__ArraySplice(data.rooms, 0) editor:save() atlas:switch(nil) screen:detach(editor.display) love.event.quit() end break end until true end }, score = { grid = function(self) return { {"daemon"}, {"distance"}, {"gain"}, {"rate"}, {"remove"} } end, position = {x = 0, y = 0}, from = function(self, ____self, target) if target == "rooms" then ____self.position.x = 0 ____self.position.y = 0 end end, next = function(self) repeat local ____switch79 = atlas:selection() local ____cond79 = ____switch79 == "daemon" if ____cond79 then atlas:switch("string") break end ____cond79 = ____cond79 or ____switch79 == "remove" if ____cond79 then editor:room().score = nil atlas:switch("rooms") break end until true end, prev = function(self) atlas:switch("rooms") end }, string = { grid = function(self) return {{}} end, position = {x = 0, y = 0}, from = function(self, ____self, target) if target == "list" then editor.atlas_list = true else editor.atlas_list = false editor.atlas_prev = target end end } } ) local outline = outlineShader({color = {red = 0, green = 0, blue = 0}, alpha = 0.5, thickness = 1}) editor = { atlas_list = false, atlas_prev = nil, charmap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$_", display = __TS__New( STText, { anchor = {y = 1}, scale = 0.75, font = __TS__New(STFont, "fonts/helloplayer.csv", "fonts/helloplayer.png"), position = {x = -115, y = 85}, spacing = {y = -0.5} } ):addTicker(function(self) repeat local ____switch86 = atlas.target local ____cond86 = ____switch86 == "list" if ____cond86 then do local list = editor:list() self.content = editor:render( { atlas.navigators.objects.position.y == 7 and "Tags" or "Script", unpack(__TS__ArrayMap( list, function(____, value) return ("> \"" .. value) .. "\"" end )) }, atlas.navigators.list.position.y + 1, function() return 16776960 end ) break end end ____cond86 = ____cond86 or ____switch86 == "neighbors" if ____cond86 then do local index = atlas.navigators.neighbors.position.x local neighbors = editor:room().neighbors local neighbor = neighbors[index + 1] self.content = editor:render( { (("Neighbor " .. tostring(index)) .. " / ") .. tostring((neighbors and #neighbors) - 1), ("Index (" .. tostring(neighbor[1])) .. ")", ((("Offset (" .. tostring(neighbor[2])) .. ", ") .. tostring(neighbor[3])) .. ")", "Remove" }, atlas.navigators.neighbors.position.y, function(index) return index == 0 and 8355839 or (index == 3 and 16727871 or 16776960) end ) break end end ____cond86 = ____cond86 or ____switch86 == "object" if ____cond86 then do self.content = ("Object (" .. ({"Hitbox", "Sprite", "Animation"})[atlas.navigators.object.position.x + 1]) .. ")" break end end ____cond86 = ____cond86 or ____switch86 == "objects" if ____cond86 then do local index = atlas.navigators.objects.position.x local objects = editor:room().objects local object = objects[index + 1] local ____array_108 = __TS__SparseArrayNew(((((("Object " .. tostring(index)) .. " / ") .. tostring(#objects - 1)) .. " (") .. (object.type == 0 and "Hitbox" or (object.type == 1 and "Sprite" or "Animation"))) .. ")") local ____opt_55 = object.anchor local ____temp_59 = ____opt_55 and ____opt_55.x or 0 local ____opt_57 = object.anchor __TS__SparseArrayPush( ____array_108, ((("Anchor (" .. tostring(____temp_59)) .. ", ") .. tostring(____opt_57 and ____opt_57.y or 0)) .. ")" ) local ____object_autosort_60 = object.autosort if ____object_autosort_60 == nil then ____object_autosort_60 = false end __TS__SparseArrayPush( ____array_108, ("Autosort (" .. tostring(____object_autosort_60)) .. ")" ) local ____opt_61 = object.position local ____temp_65 = ____opt_61 and ____opt_61.x or 0 local ____opt_63 = object.position __TS__SparseArrayPush( ____array_108, ((("Position (" .. tostring(____temp_65)) .. ", ") .. tostring(____opt_63 and ____opt_63.y or 0)) .. ")", ("Rotation (" .. tostring(object.rotation or 0)) .. ")", ("Priority (" .. tostring(object.priority or 0)) .. ")" ) local ____opt_66 = object.scale local ____temp_70 = ____opt_66 and ____opt_66.x or 1 local ____opt_68 = object.scale __TS__SparseArrayPush( ____array_108, ((("Scale (" .. tostring(____temp_70)) .. ", ") .. tostring(____opt_68 and ____opt_68.y or 1)) .. ")" ) local ____opt_71 = object.tags __TS__SparseArrayPush( ____array_108, ("Tags [" .. tostring(____opt_71 and #____opt_71 or 0)) .. "]" ) local ____temp_107 if object.type == 0 then local ____object_interactable_73 = object.interactable if ____object_interactable_73 == nil then ____object_interactable_73 = false end local ____array_83 = __TS__SparseArrayNew(("Interactable (" .. tostring(____object_interactable_73)) .. ")") local ____object_obstacle_74 = object.obstacle if ____object_obstacle_74 == nil then ____object_obstacle_74 = false end __TS__SparseArrayPush( ____array_83, ("Obstacle (" .. tostring(____object_obstacle_74)) .. ")" ) local ____opt_75 = object.script __TS__SparseArrayPush( ____array_83, ("Script [" .. tostring(____opt_75 and #____opt_75 or 0)) .. "]" ) local ____opt_77 = object.size local ____temp_81 = ____opt_77 and ____opt_77.x or 0 local ____opt_79 = object.size __TS__SparseArrayPush( ____array_83, ((("Size (" .. tostring(____temp_81)) .. ", ") .. tostring(____opt_79 and ____opt_79.y or 0)) .. ")" ) local ____object_walkable_82 = object.walkable if ____object_walkable_82 == nil then ____object_walkable_82 = false end __TS__SparseArrayPush( ____array_83, ("Walkable (" .. tostring(____object_walkable_82)) .. ")" ) ____temp_107 = {__TS__SparseArraySpread(____array_83)} else local ____temp_106 if object.type == 1 then local ____opt_84 = object.crop local ____temp_88 = ____opt_84 and ____opt_84.top or 0 local ____opt_86 = object.crop local ____temp_94 = ((("Crop Top Left <" .. tostring(____temp_88)) .. ", ") .. tostring(____opt_86 and ____opt_86.left or 0)) .. ">" local ____opt_89 = object.crop local ____temp_93 = ____opt_89 and ____opt_89.bottom or 0 local ____opt_91 = object.crop ____temp_106 = { ____temp_94, ((("Crop Bottom Right <" .. tostring(____temp_93)) .. ", ") .. tostring(____opt_91 and ____opt_91.right or 0)) .. ">", ("Image \"" .. object.image) .. "\"" } else local ____opt_95 = object.crop local ____temp_99 = ____opt_95 and ____opt_95.top or 0 local ____opt_97 = object.crop local ____temp_105 = ((("Crop Top Left <" .. tostring(____temp_99)) .. ", ") .. tostring(____opt_97 and ____opt_97.left or 0)) .. ">" local ____opt_100 = object.crop local ____temp_104 = ____opt_100 and ____opt_100.bottom or 0 local ____opt_102 = object.crop ____temp_106 = { ____temp_105, ((("Crop Bottom Right <" .. tostring(____temp_104)) .. ", ") .. tostring(____opt_102 and ____opt_102.right or 0)) .. ">", ("Direction (" .. tostring(object.direction or 0)) .. ")", ("Duration (" .. tostring(object.duration or 0)) .. ")", ("Frame (" .. tostring(object.frame or 0)) .. ")", ("Frames \"" .. object.frames) .. "\"", ("Step (" .. tostring(object.step or 0)) .. ")" } end ____temp_107 = ____temp_106 end __TS__SparseArrayPush( ____array_108, unpack(____temp_107) ) __TS__SparseArrayPush(____array_108, "Remove") local lines = {__TS__SparseArraySpread(____array_108)} self.content = editor:render( lines, atlas.navigators.objects.position.y, function(index) return index == 0 and 8355839 or (index == #lines - 1 and 16727871 or 16776960) end ) break end end ____cond86 = ____cond86 or ____switch86 == "point" if ____cond86 then do local value = editor:point() self.content = ((((("{color=0x7f7fff}" .. (editor.atlas_prev == "neighbors" and "Offset" or (editor.atlas_prev == "objects" and (atlas.navigators.objects.position.y == 1 and "Anchor" or (atlas.navigators.objects.position.y == 3 and "Position" or (atlas.navigators.objects.position.y == 6 and "Scale" or (atlas.navigators.objects.position.y == 8 and "Crop Top Left" or (atlas.navigators.objects.position.y == 9 and "Crop Bottom Right" or "Size"))))) or (atlas.navigators.rooms.position.y == 1 and "Camera Min" or "Camera Max")))) .. " (") .. tostring(value.x)) .. ", ") .. tostring(value.y)) .. ")" break end end ____cond86 = ____cond86 or ____switch86 == "rooms" if ____cond86 then do local index = atlas.navigators.rooms.position.x local room = data.rooms[index + 1] local ____editor_render_124 = editor.render local ____array_123 = __TS__SparseArrayNew((("Room " .. tostring(index)) .. " / ") .. tostring(#data.rooms - 1)) local ____opt_109 = room.camera_min local ____temp_113 = ____opt_109 and ____opt_109.x or 0 local ____opt_111 = room.camera_min __TS__SparseArrayPush( ____array_123, ((("Camera Min (" .. tostring(____temp_113)) .. ", ") .. tostring(____opt_111 and ____opt_111.y or 0)) .. ")" ) local ____opt_114 = room.camera_max local ____temp_118 = ____opt_114 and ____opt_114.x or 0 local ____opt_116 = room.camera_max __TS__SparseArrayPush( ____array_123, ((("Camera Max (" .. tostring(____temp_118)) .. ", ") .. tostring(____opt_116 and ____opt_116.y or 0)) .. ")" ) local ____opt_119 = room.neighbors __TS__SparseArrayPush( ____array_123, ("Neighbors [" .. tostring(____opt_119 and #____opt_119 or 0)) .. "]" ) local ____opt_121 = room.objects __TS__SparseArrayPush( ____array_123, ("Objects [" .. tostring(____opt_121 and #____opt_121 or 0)) .. "]", "Score " .. (room.score == nil and "" or ((((((("<" .. room.score.daemon) .. ", ") .. tostring(room.score.distance or 0)) .. ", ") .. tostring(room.score.gain or 1)) .. ", ") .. tostring(room.score.rate or 1)) .. ">"), "Remove" ) self.content = ____editor_render_124( editor, {__TS__SparseArraySpread(____array_123)}, atlas.navigators.rooms.position.y, function(index) return index == 0 and 8355839 or (index == 6 and 16727871 or 16776960) end ) break end end ____cond86 = ____cond86 or ____switch86 == "score" if ____cond86 then do local index = atlas.navigators.score.position.y local score = editor:room().score self.content = editor:render( { ("Daemon \"" .. score.daemon) .. "\"", ("Distance (" .. tostring(score.distance or 0)) .. ")", ("Gain (" .. tostring(score.gain or 1)) .. ")", ("Rate (" .. tostring(score.rate or 1)) .. ")", "Remove" }, index, function(index) return index == 4 and 16727871 or 16776960 end ) break end end ____cond86 = ____cond86 or ____switch86 == "string" if ____cond86 then do local value = editor:string() local index = atlas.navigators.objects.position.y local object = editor:room().objects[atlas.navigators.objects.position.x + 1] local ____temp_125 if editor.atlas_prev == "objects" then ____temp_125 = index == 7 or index == 10 and (object.type ~= 1 or images[value] ~= nil) or framess[value] ~= nil else ____temp_125 = daemons[value] ~= nil end self.content = ((((("{color=" .. tostring(____temp_125 and 8355839 or 16727871)) .. "}") .. (editor.atlas_prev == "objects" and (index == 7 and (("Tag " .. tostring(atlas.navigators.list.position.y)) .. " / ") .. tostring(#editor:list() - 1) or (index == 10 and (object.type == 1 and "Image" or (("Script " .. tostring(atlas.navigators.list.position.y)) .. " / ") .. tostring(#editor:list() - 1)) or "Frames")) or "Daemon")) .. " \"") .. value) .. "\"" break end end until true end):addDrawer(outline.drawer), mouse = {click = {x = 0, y = 0}, value_camera = {x = 0, y = 0}}, generate = function(self) map.rooms = __TS__ArrayMap( data.rooms, function(____, room) return { neighbors = room.neighbors, physical = function(self) return { {unpack(__TS__ArrayMap( __TS__ArrayFilter( __TS__ArrayMap( room.objects, function(____, object, index) return {object, index} end ), function(____, ____bindingPattern0) local object object = ____bindingPattern0[1] return object.type == 0 end ), function(____, ____bindingPattern0) local index local object object = ____bindingPattern0[1] index = ____bindingPattern0[2] local result = __TS__New(STRectangle, { anchor = object.anchor, position = object.position, priority = object.priority, rotation = object.rotation, size = object.size, scale = object.scale, color = {red = object.obstacle and 255 or 31, green = object.interactable and 255 or 31, blue = object.walkable and 255 or 31} }):addTicker(function(self) self.alpha.value = (atlas.target == "objects" or atlas.target == "object" or editor.atlas_prev == "objects") and atlas.navigators.objects.position.x == index and 0.7 or ((object.obstacle or object.interactable or object.walkable) and 0.35 or 0.175) end):addDrawer(function(self) return function() if self.size.x ~= 0 and self.size.y ~= 0 then love.graphics.rectangle( "line", self.offset.x + self.size.x * -self.anchor.x, self.offset.y + self.size.y * -self.anchor.y, self.size.x, self.size.y ) end if atlas.target ~= "objects" and atlas.target ~= "object" and editor.atlas_prev ~= "objects" or atlas.navigators.objects.position.x ~= index then return end love.graphics.circle("line", 0, 0, 2) love.graphics.line(0, 0, self.size.x + self.size.x * self.anchor.x, 0) end end) if object.autosort then result:addTicker(function(self) self.priority = self.position.y end) end return result end ))}, function() end } end, camera_max = room.camera_max, camera_min = room.camera_min, score = room.score ~= nil and daemons[room.score.daemon] ~= nil and ({gain = room.score.gain or 1, rate = room.score.rate or 1, distance = room.score.distance or 0, daemon = daemons[room.score.daemon]}) or nil, visual = function(self, values, sheet, index1) return { { __TS__New(STAnimation, {frames = sheet, frame = index1, priority = -1}), unpack(__TS__ArrayMap( __TS__ArrayFilter( __TS__ArrayMap( room.objects, function(____, object, index2) return {object, index2} end ), function(____, ____bindingPattern0) local object object = ____bindingPattern0[1] return object.type ~= 0 end ), function(____, ____bindingPattern0) local index2 local object object = ____bindingPattern0[1] index2 = ____bindingPattern0[2] local result if object.type == 2 then local ____STAnimation_132 = STAnimation local ____object_anchor_127 = object.anchor local ____object_crop_128 = object.crop local ____object_direction_129 = object.direction local ____object_duration_130 = object.duration local ____object_frame_131 = object.frame local ____temp_126 if framess[object.frames] ~= nil then ____temp_126 = framess[object.frames] else ____temp_126 = nil end result = __TS__New(____STAnimation_132, { anchor = ____object_anchor_127, crop = ____object_crop_128, direction = ____object_direction_129, duration = ____object_duration_130, frame = ____object_frame_131, frames = ____temp_126, position = object.position, priority = object.priority, rotation = object.rotation, scale = object.scale, step = object.step }) else local ____STSprite_136 = STSprite local ____object_anchor_134 = object.anchor local ____object_crop_135 = object.crop local ____temp_133 if images[object.image] ~= nil then ____temp_133 = images[object.image] else ____temp_133 = nil end result = __TS__New(____STSprite_136, { anchor = ____object_anchor_134, crop = ____object_crop_135, image = ____temp_133, position = object.position, priority = object.priority, rotation = object.rotation, scale = object.scale }) end if atlas.navigators.rooms.position.x == index1 then result:addTicker(function(self) self.alpha.value = atlas.navigators.objects.position.x == index2 and 1 or 0.5 end) else result.alpha.value = 0.5 end if object.autosort then result:addTicker(function(self) self.priority = self.position.y end) end return result end )) }, function() end } end } end ) end, insert = function(self, list, position, value) local ____list_138 = list local ____array_137 = __TS__SparseArrayNew( 0, #list, unpack(__TS__ArraySlice(list, 0, position + 1)) ) __TS__SparseArrayPush( ____array_137, value, unpack(__TS__ArraySlice(list, position + 1)) ) __TS__ArraySplice( ____list_138, __TS__SparseArraySpread(____array_137) ) end, list = function(self) if atlas.navigators.objects.position.y == 7 then return editor:room().objects[atlas.navigators.objects.position.x + 1].tags else return editor:room().objects[atlas.navigators.objects.position.x + 1].script end end, point = function(self) repeat local ____switch132 = editor.atlas_prev local ____cond132 = ____switch132 == "neighbors" if ____cond132 then do local neighbor = editor:room().neighbors[atlas.navigators.neighbors.position.x + 1] return __TS__New( EXPoint, function() return neighbor[2] end, function() return neighbor[3] end, function(v) local ____v_139 = v neighbor[2] = ____v_139 return ____v_139 end, function(v) local ____v_140 = v neighbor[3] = ____v_140 return ____v_140 end ) end end ____cond132 = ____cond132 or ____switch132 == "objects" if ____cond132 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] repeat local ____switch139 = atlas.navigators.objects.position.y local ____cond139 = ____switch139 == 1 if ____cond139 then return __TS__New( EXPoint, function() return (object.anchor or ({})).x or 0 end, function() return (object.anchor or ({})).y or 0 end, function(v) local ____object_141, ____anchor_142 = object, "anchor" if ____object_141[____anchor_142] == nil then ____object_141[____anchor_142] = {} end local ____v_144 = v object.anchor.x = ____v_144 return ____v_144 end, function(v) local ____object_145, ____anchor_146 = object, "anchor" if ____object_145[____anchor_146] == nil then ____object_145[____anchor_146] = {} end local ____v_148 = v object.anchor.y = ____v_148 return ____v_148 end ) end ____cond139 = ____cond139 or ____switch139 == 3 if ____cond139 then return __TS__New( EXPoint, function() return (object.position or ({})).x or 0 end, function() return (object.position or ({})).y or 0 end, function(v) local ____object_149, ____position_150 = object, "position" if ____object_149[____position_150] == nil then ____object_149[____position_150] = {} end local ____v_152 = v object.position.x = ____v_152 return ____v_152 end, function(v) local ____object_153, ____position_154 = object, "position" if ____object_153[____position_154] == nil then ____object_153[____position_154] = {} end local ____v_156 = v object.position.y = ____v_156 return ____v_156 end ) end ____cond139 = ____cond139 or ____switch139 == 6 if ____cond139 then return __TS__New( EXPoint, function() return (object.scale or ({})).x or 1 end, function() return (object.scale or ({})).y or 1 end, function(v) local ____object_157, ____scale_158 = object, "scale" if ____object_157[____scale_158] == nil then ____object_157[____scale_158] = {} end local ____v_160 = v object.scale.x = ____v_160 return ____v_160 end, function(v) local ____object_161, ____scale_162 = object, "scale" if ____object_161[____scale_162] == nil then ____object_161[____scale_162] = {} end local ____v_164 = v object.scale.y = ____v_164 return ____v_164 end ) end ____cond139 = ____cond139 or ____switch139 == 8 if ____cond139 then do local ____object_165, ____crop_166 = object, "crop" if ____object_165[____crop_166] == nil then ____object_165[____crop_166] = {bottom = 0, left = 0, right = 0, top = 0} end local crop = object.crop return __TS__New( EXPoint, function() return crop.left end, function() return crop.top end, function(v) local ____v_168 = v crop.left = ____v_168 return ____v_168 end, function(v) local ____v_169 = v crop.top = ____v_169 return ____v_169 end ) end end ____cond139 = ____cond139 or ____switch139 == 9 if ____cond139 then do local ____object_170, ____crop_171 = object, "crop" if ____object_170[____crop_171] == nil then ____object_170[____crop_171] = {bottom = 0, left = 0, right = 0, top = 0} end local crop = object.crop return __TS__New( EXPoint, function() return crop.right end, function() return crop.bottom end, function(v) local ____v_173 = v crop.right = ____v_173 return ____v_173 end, function(v) local ____v_174 = v crop.bottom = ____v_174 return ____v_174 end ) end end do return __TS__New( EXPoint, function() return (object.size or ({})).x or 0 end, function() return (object.size or ({})).y or 0 end, function(v) local ____object_175, ____size_176 = object, "size" if ____object_175[____size_176] == nil then ____object_175[____size_176] = {} end local ____v_178 = v object.size.x = ____v_178 return ____v_178 end, function(v) local ____object_179, ____size_180 = object, "size" if ____object_179[____size_180] == nil then ____object_179[____size_180] = {} end local ____v_182 = v object.size.y = ____v_182 return ____v_182 end ) end until true end end do if atlas.navigators.rooms.position.y == 1 then return __TS__New( EXPoint, function() return (editor:room().camera_min or ({})).x or 0 end, function() return (editor:room().camera_min or ({})).y or 0 end, function(v) local ____temp_183, ____camera_min_184 = editor:room(), "camera_min" if ____temp_183[____camera_min_184] == nil then ____temp_183[____camera_min_184] = {} end local ____v_186 = v editor:room().camera_min.x = ____v_186 return ____v_186 end, function(v) local ____temp_187, ____camera_min_188 = editor:room(), "camera_min" if ____temp_187[____camera_min_188] == nil then ____temp_187[____camera_min_188] = {} end local ____v_190 = v editor:room().camera_min.y = ____v_190 return ____v_190 end ) else return __TS__New( EXPoint, function() return (editor:room().camera_max or ({})).x or 0 end, function() return (editor:room().camera_max or ({})).y or 0 end, function(v) local ____temp_191, ____camera_max_192 = editor:room(), "camera_max" if ____temp_191[____camera_max_192] == nil then ____temp_191[____camera_max_192] = {} end local ____v_194 = v editor:room().camera_max.x = ____v_194 return ____v_194 end, function(v) local ____temp_195, ____camera_max_196 = editor:room(), "camera_max" if ____temp_195[____camera_max_196] == nil then ____temp_195[____camera_max_196] = {} end local ____v_198 = v editor:room().camera_max.y = ____v_198 return ____v_198 end ) end end until true end, prev = function(self) if atlas.target == "point" then atlas:switch(editor.atlas_prev) elseif atlas.target == "string" then atlas:switch(editor.atlas_list and "list" or editor.atlas_prev) else atlas:prev() end end, refresh = function(self) editor:save() editor:generate() local ____opt_199 = map.task if ____opt_199 ~= nil then ____opt_199.complete(atlas.navigators.rooms.position.x) end end, render = function(self, lines, menuIndex, highlight) return table.concat( __TS__ArrayMap( lines, function(____, line, index) return (index == menuIndex and ("{color=" .. tostring(highlight(index))) .. "}" or "{color=0xffffff}") .. line end ), "\n" ) end, rewrite = function(self, char) if atlas.target ~= "string" then return end local value = editor:string() if char == nil then local length = utf8.len(value) if length > 0 then value = __TS__StringSlice( value, 0, utf8.offset(value, length) - 1 ) else return end else value = value .. char end if editor.atlas_prev == "objects" then local index = atlas.navigators.objects.position.y repeat local ____switch190 = index local ____cond190 = ____switch190 == 7 or ____switch190 == 10 if ____cond190 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] if index == 10 and object.type == 1 then object.image = value else editor:list()[atlas.navigators.list.position.y + 1] = value end break end end do editor:room().objects[atlas.navigators.objects.position.x + 1].frames = value end until true else editor:room().score.daemon = value end editor:refresh() end, room = function(self) return data.rooms[atlas.navigators.rooms.position.x + 1] end, round = function(self, value) return math.floor(value * 1000 + 0.5) / 1000 end, save = function(self) for ____, room in ipairs(data.rooms) do if room.camera_max ~= nil then if room.camera_max.x == 0 then __TS__Delete(room.camera_max, "x") end if room.camera_max.y == 0 then __TS__Delete(room.camera_max, "y") end if room.camera_max.x == nil and room.camera_max.y == nil then __TS__Delete(room, "camera_max") end end if room.camera_min ~= nil then if room.camera_min.x == 0 then __TS__Delete(room.camera_min, "x") end if room.camera_min.y == 0 then __TS__Delete(room.camera_min, "y") end if room.camera_min.x == nil and room.camera_min.y == nil then __TS__Delete(room, "camera_min") end end for ____, object in ipairs(room.objects) do if object.anchor ~= nil then if object.anchor.x == 0 then __TS__Delete(object.anchor, "x") end if object.anchor.y == 0 then __TS__Delete(object.anchor, "y") end if object.anchor.x == nil and object.anchor.y == nil then __TS__Delete(object, "anchor") end end if object.autosort == false then __TS__Delete(object, "autosort") end if object.position ~= nil then if object.position.x == 0 then __TS__Delete(object.position, "x") end if object.position.y == 0 then __TS__Delete(object.position, "y") end if object.position.x == nil and object.position.y == nil then __TS__Delete(object, "position") end end if object.priority == 0 then __TS__Delete(object, "priority") end if object.rotation == 0 then __TS__Delete(object, "rotation") end if object.scale ~= nil then if object.scale.x == 1 then __TS__Delete(object.scale, "x") end if object.scale.y == 1 then __TS__Delete(object.scale, "y") end if object.scale.x == nil and object.scale.y == nil then __TS__Delete(object, "scale") end end repeat local ____switch223 = object.type local ____cond223 = ____switch223 == 0 if ____cond223 then if object.interactable == false then __TS__Delete(object, "interactable") end if object.obstacle == false then __TS__Delete(object, "obstacle") end if object.size ~= nil then if object.size.x == 0 then __TS__Delete(object.size, "x") end if object.size.y == 0 then __TS__Delete(object.size, "y") end if object.size.x == nil and object.size.y == nil then __TS__Delete(object, "size") end end if object.walkable == false then __TS__Delete(object, "walkable") end break end ____cond223 = ____cond223 or ____switch223 == 1 if ____cond223 then local ____opt_201 = object.crop if (____opt_201 and ____opt_201.bottom) == 0 and object.crop.left == 0 and object.crop.right == 0 and object.crop.top == 0 then __TS__Delete(object, "crop") end break end ____cond223 = ____cond223 or ____switch223 == 2 if ____cond223 then local ____opt_203 = object.crop if (____opt_203 and ____opt_203.bottom) == 0 and object.crop.left == 0 and object.crop.right == 0 and object.crop.top == 0 then __TS__Delete(object, "crop") end if object.direction == 0 then __TS__Delete(object, "direction") end if object.duration == 0 then __TS__Delete(object, "duration") end if object.frame == 0 then __TS__Delete(object, "frame") end if object.step == 0 then __TS__Delete(object, "step") end break end until true end if room.score ~= nil then if room.score.distance == 0 then __TS__Delete(room.score, "distance") end if room.score.gain == 1 then __TS__Delete(room.score, "gain") end if room.score.rate == 1 then __TS__Delete(room.score, "rate") end end end love.filesystem.write( file, ST:encode(data) ) end, string = function(self) if editor.atlas_prev == "objects" then local index = atlas.navigators.objects.position.y repeat local ____switch245 = index local ____cond245 = ____switch245 == 7 or ____switch245 == 10 if ____cond245 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] if index == 10 and object.type == 1 then return object.image else return editor:list()[atlas.navigators.list.position.y + 1] end end end do return editor:room().objects[atlas.navigators.objects.position.x + 1].frames end until true else return editor:room().score.daemon end end, unit = function(self) return inputs.shift.held and (inputs.ctrl.held and 10 or 1) or (inputs.ctrl.held and 100 or 10) end } inputs.left:addDown(function() repeat local ____switch252 = atlas.target local ____cond252 = ____switch252 == "list" if ____cond252 then do local list = editor:list() if #list > 1 then local index = atlas.navigators.list.position.y __TS__ArraySplice(list, index, 1) editor:refresh() if index == #list then local ____atlas_navigators_list_position_205, ____y_206 = atlas.navigators.list.position, "y" ____atlas_navigators_list_position_205[____y_206] = ____atlas_navigators_list_position_205[____y_206] - 1 end else if atlas.navigators.objects.position.y == 7 then __TS__Delete( editor:room().objects[atlas.navigators.objects.position.x + 1], "tags" ) else __TS__Delete( editor:room().objects[atlas.navigators.objects.position.x + 1], "script" ) end editor:refresh() atlas:prev() end break end end ____cond252 = ____cond252 or ____switch252 == "neighbors" if ____cond252 then if atlas.navigators.neighbors.position.y == 1 then local neighbor = editor:room().neighbors[atlas.navigators.neighbors.position.x + 1] if neighbor[1] > 0 then neighbor[1] = neighbor[1] - 1 editor:refresh() end end break end ____cond252 = ____cond252 or ____switch252 == "objects" if ____cond252 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] repeat local ____switch262 = atlas.navigators.objects.position.y local ____cond262 = ____switch262 == 2 if ____cond262 then object.autosort = object.autosort ~= true editor:refresh() break end ____cond262 = ____cond262 or ____switch262 == 4 if ____cond262 then if object.rotation == nil then object.rotation = 0 end object.rotation = object.rotation - editor:unit() editor:refresh() break end ____cond262 = ____cond262 or ____switch262 == 5 if ____cond262 then if object.priority == nil then object.priority = 0 end object.priority = object.priority - editor:unit() editor:refresh() break end ____cond262 = ____cond262 or ____switch262 == 8 if ____cond262 then if object.type == 0 then object.interactable = object.interactable ~= true editor:refresh() end break end ____cond262 = ____cond262 or ____switch262 == 9 if ____cond262 then if object.type == 0 then object.obstacle = object.obstacle ~= true editor:refresh() end break end ____cond262 = ____cond262 or ____switch262 == 10 if ____cond262 then if object.type == 2 then object.direction = ({1, -1, 0})[(object.direction or 0) + 1 + 1] editor:refresh() end break end ____cond262 = ____cond262 or ____switch262 == 11 if ____cond262 then if object.type == 2 then if object.duration == nil then object.duration = 0 end if object.duration > 0 then object.duration = object.duration - 1 editor:refresh() end end break end ____cond262 = ____cond262 or ____switch262 == 12 if ____cond262 then if object.type == 0 then object.walkable = object.walkable ~= true editor:refresh() elseif object.type == 2 then if object.frame == nil then object.frame = 0 end if object.frame > 0 then object.frame = object.frame - 1 editor:refresh() end end break end ____cond262 = ____cond262 or ____switch262 == 14 if ____cond262 then if object.type == 2 then if object.step == nil then object.step = 0 end if object.step > 0 then object.step = object.step - 1 editor:refresh() end end break end until true break end end ____cond252 = ____cond252 or ____switch252 == "rooms" if ____cond252 then if atlas.navigators.rooms.position.y == 0 then local ____opt_207 = map.task if ____opt_207 ~= nil then ____opt_207.complete(atlas.navigators.rooms.position.x) end end break end ____cond252 = ____cond252 or ____switch252 == "score" if ____cond252 then do local score = editor:room().score repeat local ____switch275 = atlas.navigators.score.position.y local ____cond275 = ____switch275 == 1 if ____cond275 then if score.distance == nil then score.distance = 0 end if score.distance > 0 then score.distance = math.max( editor:round(score.distance - 1 / editor:unit()), 0 ) editor:refresh() end break end ____cond275 = ____cond275 or ____switch275 == 2 if ____cond275 then if score.gain == nil then score.gain = 1 end if score.gain > 0 then score.gain = math.max( editor:round(score.gain - 1 / editor:unit()), 0 ) editor:refresh() end break end ____cond275 = ____cond275 or ____switch275 == 3 if ____cond275 then if score.rate == nil then score.rate = 1 end if score.rate > 0 then score.rate = math.max( editor:round(score.rate - 1 / editor:unit()), 0 ) editor:refresh() end break end until true break end end until true end) inputs.right:addDown(function() repeat local ____switch280 = atlas.target local ____cond280 = ____switch280 == "list" if ____cond280 then do if inputs.ctrl.held then local list = editor:list() local ____editor_insert_213 = editor.insert local ____atlas_navigators_list_position_y_212 = atlas.navigators.list.position.y local ____atlas_navigators_list_position_209, ____y_210 = atlas.navigators.list.position, "y" local ____atlas_navigators_list_position_y_211 = ____atlas_navigators_list_position_209[____y_210] ____atlas_navigators_list_position_209[____y_210] = ____atlas_navigators_list_position_y_211 + 1 ____editor_insert_213(editor, list, ____atlas_navigators_list_position_y_212, list[____atlas_navigators_list_position_y_211 + 1]) else local ____editor_insert_218 = editor.insert local ____temp_217 = editor:list() local ____atlas_navigators_list_position_214, ____y_215 = atlas.navigators.list.position, "y" local ____atlas_navigators_list_position_y_216 = ____atlas_navigators_list_position_214[____y_215] ____atlas_navigators_list_position_214[____y_215] = ____atlas_navigators_list_position_y_216 + 1 ____editor_insert_218(editor, ____temp_217, ____atlas_navigators_list_position_y_216, "") end editor:refresh() break end end ____cond280 = ____cond280 or ____switch280 == "neighbors" if ____cond280 then if atlas.navigators.neighbors.position.y == 1 then local ____table_neighbors_index_219, ____1_220 = editor:room().neighbors[atlas.navigators.neighbors.position.x + 1], 1 ____table_neighbors_index_219[____1_220] = ____table_neighbors_index_219[____1_220] + 1 editor:refresh() end break end ____cond280 = ____cond280 or ____switch280 == "objects" if ____cond280 then do local object = editor:room().objects[atlas.navigators.objects.position.x + 1] repeat local ____switch286 = atlas.navigators.objects.position.y local ____cond286 = ____switch286 == 2 if ____cond286 then object.autosort = object.autosort ~= true editor:refresh() break end ____cond286 = ____cond286 or ____switch286 == 4 if ____cond286 then if object.rotation == nil then object.rotation = 0 end object.rotation = object.rotation + editor:unit() editor:refresh() break end ____cond286 = ____cond286 or ____switch286 == 5 if ____cond286 then if object.priority == nil then object.priority = 0 end object.priority = object.priority + editor:unit() editor:refresh() break end ____cond286 = ____cond286 or ____switch286 == 8 if ____cond286 then if object.type == 0 then object.interactable = object.interactable ~= true editor:refresh() end break end ____cond286 = ____cond286 or ____switch286 == 9 if ____cond286 then if object.type == 0 then object.obstacle = object.obstacle ~= true editor:refresh() end break end ____cond286 = ____cond286 or ____switch286 == 10 if ____cond286 then if object.type == 2 then object.direction = ({0, 1, -1})[(object.direction or 0) + 1 + 1] editor:refresh() end break end ____cond286 = ____cond286 or ____switch286 == 11 if ____cond286 then if object.type == 2 then if object.duration == nil then object.duration = 0 end object.duration = object.duration + 1 editor:refresh() end break end ____cond286 = ____cond286 or ____switch286 == 12 if ____cond286 then if object.type == 0 then object.walkable = object.walkable ~= true editor:refresh() elseif object.type == 2 then if object.frame == nil then object.frame = 0 end object.frame = object.frame + 1 editor:refresh() end break end ____cond286 = ____cond286 or ____switch286 == 14 if ____cond286 then if object.type == 2 then if object.step == nil then object.step = 0 end object.step = object.step + 1 editor:refresh() end break end until true break end end ____cond280 = ____cond280 or ____switch280 == "score" if ____cond280 then do local score = editor:room().score repeat local ____switch295 = atlas.navigators.score.position.y local ____cond295 = ____switch295 == 1 if ____cond295 then if score.distance == nil then score.distance = 0 end if score.distance < 1 then score.distance = math.min( editor:round(score.distance + 1 / editor:unit()), 1 ) editor:refresh() end break end ____cond295 = ____cond295 or ____switch295 == 2 if ____cond295 then if score.gain == nil then score.gain = 1 end if score.gain < 1 then score.gain = math.min( editor:round(score.gain + 1 / editor:unit()), 1 ) editor:refresh() end break end ____cond295 = ____cond295 or ____switch295 == 3 if ____cond295 then if score.rate == nil then score.rate = 1 end if score.rate < 1 then score.rate = math.min( editor:round(score.rate + 1 / editor:unit()), 1 ) editor:refresh() end break end until true break end end until true end) love.mousepressed = function(x, y, b) repeat local ____switch300 = b local ____cond300 = ____switch300 == 1 if ____cond300 then if inputs.shift.held and atlas.target == "objects" then local objects = editor:room().objects if #objects < 2 then break end local cc = map:cam_clamped() local win_width, win_height = love.window.getMode() local scale = width / height < win_width / win_height and win_height / height or win_width / width local rx = cc.x + (x - win_width / 2) / scale / wrapper.scale.x local ry = cc.y + (y - win_height / 2) / scale / wrapper.scale.y local cb = __TS__New(STHitbox, {anchor = 0.5, size = 1, position = {x = rx, y = ry}}) local ano = atlas.navigators.objects local cur = ano.position.x local idx = cur while true do idx = idx + 1 if not (idx ~= cur) then break end if idx == #objects then idx = 0 if cur == 0 then break end end local object = objects[idx + 1] local ____STHitbox_230 = STHitbox local ____object_anchor_229 = object.anchor local ____temp_228 if object.size ~= nil then ____temp_228 = object.size else local ____temp_227 if object.frames ~= nil then local ____STAnimation_223 = STAnimation local ____object_frame_222 = object.frame local ____temp_221 if framess[object.frames] ~= nil then ____temp_221 = framess[object.frames] else ____temp_221 = nil end ____temp_227 = __TS__New(____STAnimation_223, {frame = ____object_frame_222, frames = ____temp_221}):getSize() or 0 else local ____temp_226 if object.image ~= nil then local ____STSprite_225 = STSprite local ____temp_224 if images[object.image] ~= nil then ____temp_224 = images[object.image] else ____temp_224 = nil end ____temp_226 = __TS__New(____STSprite_225, {image = ____temp_224}):getSize() or 0 else ____temp_226 = 0 end ____temp_227 = ____temp_226 end ____temp_228 = ____temp_227 end local ob = __TS__New(____STHitbox_230, { anchor = ____object_anchor_229, size = ____temp_228, position = object.position, scale = object.scale, rotation = object.rotation }) cb:calculate() ob:calculate() if cb:test(ob) then ano.position.x = idx ano.position.y = math.min( ano.position.y, #ano:grid(ano) - 1 ) break end end else atlas:next() end break end ____cond300 = ____cond300 or ____switch300 == 4 if ____cond300 then editor:prev() break end until true end love.keypressed = function(key) if key == "backspace" then editor:rewrite(nil) end end love.textinput = function(text) editor:rewrite(text) end love.wheelmoved = function(x, y) if love.mouse.isDown(3) then wrapper.scale:set(y < 0 and wrapper.scale.x / 2 ^ (1 / 4) or wrapper.scale.x * 2 ^ (1 / 4)) else local ex = love.mouse.isDown(2) if atlas.target == "point" then local value = editor:unit() * (y < 0 and 1 or -1) if editor.atlas_prev == "objects" and atlas.navigators.objects.position.y == 1 then local point = editor:point() point[ex and "x" or "y"] = editor:round(point[ex and "x" or "y"] + 1 / value) else local ____temp_231, ____temp_232 = editor:point(), ex and "x" or "y" ____temp_231[____temp_232] = ____temp_231[____temp_232] + value end editor:refresh() else atlas:seek(ex and (y < 0 and STFacing.RIGHT or STFacing.LEFT) or (y < 0 and STFacing.DOWN or STFacing.UP)) if ex then repeat local ____switch319 = atlas.target local ____cond319 = ____switch319 == "rooms" if ____cond319 then local ____opt_233 = map.task if ____opt_233 ~= nil then ____opt_233.complete(atlas.navigators.rooms.position.x) end break end ____cond319 = ____cond319 or ____switch319 == "objects" if ____cond319 then do local ano = atlas.navigators.objects ano.position.y = math.min( ano.position.y, #ano:grid(ano) - 1 ) break end end until true end end end end map:addTicker(function() local width, height = love.window.getMode() local x = love.mouse.getX() * (ST.width / width) local y = love.mouse.getY() * (ST.height / height) if love.mouse.isDown(3) then map.camera.x = ST:clamp(editor.mouse.value_camera.x - (x - editor.mouse.click.x) / wrapper.scale.x, map.camera_min.x, map.camera_max.x) map.camera.y = ST:clamp(editor.mouse.value_camera.y - (y - editor.mouse.click.y) / wrapper.scale.y, map.camera_min.y, map.camera_max.y) else editor.mouse.value_camera.x = map.camera.x editor.mouse.value_camera.y = map.camera.y editor.mouse.click.x = x editor.mouse.click.y = y end end) if #data.rooms == 0 then local ____data_rooms_235 = data.rooms ____data_rooms_235[#____data_rooms_235 + 1] = {objects = {}} end atlas:switch("rooms") editor:generate() screen:attach(editor.display) __TS__Await(map:view(atlas.navigators.rooms.position.x)) return ____awaiter_resolve( nil, function() outline:release() end ) end) end ) end return ____exports