local ____lualib = require("lualib_bundle") local __TS__Class = ____lualib.__TS__Class local __TS__ClassExtends = ____lualib.__TS__ClassExtends local __TS__New = ____lualib.__TS__New local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter local __TS__ArrayMap = ____lualib.__TS__ArrayMap local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor local __TS__AsyncAwaiter = ____lualib.__TS__AsyncAwaiter local __TS__Await = ____lualib.__TS__Await local __TS__ObjectAssign = ____lualib.__TS__ObjectAssign local __TS__StringAccess = ____lualib.__TS__StringAccess local __TS__StringSplit = ____lualib.__TS__StringSplit local __TS__ArraySplice = ____lualib.__TS__ArraySplice local ____exports = {} local ____storyteller = require("code.engine.storyteller") local ST = ____storyteller.ST local STActor = ____storyteller.STActor local STAnimation = ____storyteller.STAnimation local STContainer = ____storyteller.STContainer local STHitbox = ____storyteller.STHitbox local STMap = ____storyteller.STMap local STPoint = ____storyteller.STPoint local STSplitterResult = ____storyteller.STSplitterResult local STSprite = ____storyteller.STSprite ____exports.EXMap = __TS__Class() local EXMap = ____exports.EXMap EXMap.name = "EXMap" __TS__ClassExtends(EXMap, STMap) function EXMap.prototype.____constructor(self, ____bindingPattern0) local visual local transition local sheet local physical local objects local images local framess local file local daemons local camera local activate activate = ____bindingPattern0.activate if activate == nil then activate = function() end end camera = ____bindingPattern0.camera if camera == nil then camera = __TS__New(STPoint) end daemons = ____bindingPattern0.daemons if daemons == nil then daemons = {} end file = ____bindingPattern0.file framess = ____bindingPattern0.framess if framess == nil then framess = {} end images = ____bindingPattern0.images if images == nil then images = {} end objects = ____bindingPattern0.objects if objects == nil then objects = { {}, function() end } end physical = ____bindingPattern0.physical if physical == nil then physical = function() end end sheet = ____bindingPattern0.sheet transition = ____bindingPattern0.transition if transition == nil then transition = { 10, 0, 1, 1, 1 } end visual = ____bindingPattern0.visual if visual == nil then visual = function() end end self.canvas = love.graphics.newCanvas(ST.width * ST.scale, ST.height * ST.scale) local rooms = ST:decode((love.filesystem.read("string", file))).rooms STMap.prototype.____constructor( self, { objects = function() return {objects[1], objects[2]} end, rooms = __TS__ArrayMap( rooms, function(____, room, index) return { camera_max = room.camera_max, camera_min = room.camera_min, neighbors = room.neighbors, physical = function(self) local ____opt_0 = physical(nil, index) if ____opt_0 ~= nil then ____opt_0 = ____opt_0() end local ____opt_0_2 = ____opt_0 if ____opt_0_2 == nil then ____opt_0_2 = { {}, function() end } end local custom = ____opt_0_2 local ____array_17 = __TS__SparseArrayNew(unpack(__TS__ArrayMap( __TS__ArrayFilter( room.objects, function(____, object) return object.type == 0 end ), function(____, object) local ____STHitbox_16 = STHitbox local ____object_anchor_10 = object.anchor local ____object_position_11 = object.position local ____object_priority_12 = object.priority local ____object_rotation_13 = object.rotation local ____object_size_14 = object.size local ____object_scale_15 = object.scale local ____object_interactable_3 = object.interactable if ____object_interactable_3 == nil then ____object_interactable_3 = false end local ____object_obstacle_4 = object.obstacle if ____object_obstacle_4 == nil then ____object_obstacle_4 = false end local ____index_6 = index local function ____temp_7(self, test) if object.script == nil then return end activate( nil, test, unpack(object.script) ) end local ____object_tags_8 = object.tags local ____object_type_9 = object.type local ____object_walkable_5 = object.walkable if ____object_walkable_5 == nil then ____object_walkable_5 = false end local result = __TS__New(____STHitbox_16, { anchor = ____object_anchor_10, position = ____object_position_11, priority = ____object_priority_12, rotation = ____object_rotation_13, size = ____object_size_14, scale = ____object_scale_15, metadata = { _ = true, interactable = ____object_interactable_3, obstacle = ____object_obstacle_4, room = ____index_6, scan = true, script = ____temp_7, tags = ____object_tags_8, type = ____object_type_9, walkable = ____object_walkable_5 } }) if object.autosort then result:addTicker(function(self) self.priority = self.position.y end) end return result end ))) __TS__SparseArrayPush( ____array_17, unpack(custom[1]) ) return { {__TS__SparseArraySpread(____array_17)}, custom[2] } end, score = room.score and daemons[room.score.daemon] ~= nil and ({daemon = daemons[room.score.daemon], distance = room.score.distance or 0, gain = room.score.gain or 1, rate = room.score.rate or 1}) or nil, visual = function(self, values, sheet, index) local ____opt_18 = visual(nil, index) if ____opt_18 ~= nil then ____opt_18 = ____opt_18(sheet, index) end local ____opt_18_20 = ____opt_18 if ____opt_18_20 == nil then ____opt_18_20 = { {}, function() end } end local custom = ____opt_18_20 local ____array_21 = __TS__SparseArrayNew( __TS__New(STAnimation, {frames = sheet, frame = index, metadata = {_ = true}}):addTicker(function(self) self.priority = self.position.y end), unpack(__TS__ArrayMap( __TS__ArrayFilter( room.objects, function(____, object) return object.type ~= 0 end ), function(____, object) local result if object.type == 2 then result = __TS__New(STAnimation, { anchor = object.anchor, crop = object.crop, direction = object.direction, duration = object.duration, frame = object.frame, frames = framess[object.frames] ~= nil and framess[object.frames] or nil, metadata = {_ = true, room = index, tags = object.tags, type = object.type}, position = object.position, priority = object.priority, rotation = object.rotation, scale = object.scale, step = object.step }) else result = __TS__New(STSprite, { anchor = object.anchor, crop = object.crop, image = images[object.image] ~= nil and images[object.image] or nil, metadata = {_ = true, room = index, tags = object.tags, type = object.type}, position = object.position, priority = object.priority, rotation = object.rotation, scale = object.scale }) end if object.autosort then result:addTicker(function(self) self.priority = self.position.y end) end return result end )) ) __TS__SparseArrayPush( ____array_21, unpack(custom[1]) ) return { {__TS__SparseArraySpread(____array_21)}, custom[2] } end } end ), sheet = sheet, transition = transition } ) self.camera = camera self:addDrawer(function(self) local color = {love.graphics.getColor()} local canvas = {love.graphics.getCanvas()} love.graphics.setColor(1, 1, 1, 1) love.graphics.setCanvas(self.canvas) love.graphics.clear(0, 0, 0, 1) return function() love.graphics.push() love.graphics.replaceTransform(love.math.newTransform( 0, 0, 0, 1, 1 )) love.graphics.setCanvas(canvas) love.graphics.setColor(color) love.graphics.draw(self.canvas) love.graphics.pop() end end) end function EXMap.prototype.cleanup(self) STMap.prototype.cleanup(self) self.canvas:release() end ____exports.EXPoint = __TS__Class() local EXPoint = ____exports.EXPoint EXPoint.name = "EXPoint" function EXPoint.prototype.____constructor(self, getX, getY, setX, setY) self.getX = getX self.getY = getY self.setX = setX self.setY = setY end __TS__SetDescriptor( EXPoint.prototype, "x", { get = function(self) return self.getX() end, set = function(self, v) self.setX(v) end }, true ) __TS__SetDescriptor( EXPoint.prototype, "y", { get = function(self) return self.getY() end, set = function(self, v) self.setY(v) end }, true ) function ____exports.bb_display(character, image, height) if height == nil then height = 1 end local dims = character:getSize() or ({x = 0, y = 0}) return __TS__New(STSprite, {anchor = {x = 0.5, y = 1}, image = image, position = {x = dims.x * -character.anchor.x + dims.x / 2, y = dims.y * -character.anchor.y + -height}}) end function ____exports.bb_standard(character, image, height) return __TS__AsyncAwaiter(function(____awaiter_resolve) local display = ____exports.bb_display(character, image, height) character:attach(display) __TS__Await(display.offset:automate(10, {y = -5}, {y = -5}, {y = 0})) __TS__Await(ST:pause(20)) character:detach(display) end) end function ____exports.ezchar(properties) return __TS__New( STActor, __TS__ObjectAssign({anchor = {x = 0.5, y = 1}, facings = {down = "down", left = "left", right = "right", up = "up"}}, properties) ):addTicker(function(self) self.priority = self.position.y end) end function ____exports.ezecho(src, delay, mix, feedback, threshold, stop) if stop == nil then stop = true end return __TS__AsyncAwaiter(function(____awaiter_resolve) local ____end = math.floor(src.position.value * ST.fps + 0.5) if ____end == 0 then return ____awaiter_resolve(nil) end local position = math.max(____end - delay, 0) / ST.fps local start = math.max(delay - ____end, 0) local gain = mix local inst = stop and src or nil while gain > threshold do if inst ~= nil then inst:stop() end if start ~= 0 then __TS__Await(ST:pause(start)) end inst = src.daemon:instance_forced({gain = gain, position = position}) __TS__Await(ST:pause(delay - start)) gain = gain * feedback end if inst ~= nil then inst:stop() end end) end function ____exports.ezfade(instance) local ____instance_gain_26, ____value_27 = instance.gain, "value" ____instance_gain_26[____value_27] = ____instance_gain_26[____value_27] / 10 instance.gain:automate(7, instance.gain.value * 10) end function ____exports.keygen(value) return __TS__ArrayMap( __TS__StringSplit( __TS__StringAccess(value, 0) == " " and string.sub(value, 2) or value, " " ), function(____, key) return function() return love.keyboard.isDown(key) end end ) end function ____exports.object_updater(screen, room, metadata, generator) return function(self, from, to, physical, x, y) if to == room then if not physical then return end local existing = screen:scan(function(container) return container.metadata == metadata end):next().value if existing ~= nil then return end local container = generator(metadata) screen:attach(container) return end if not physical or from == room then return end local existing = screen:scan(function(container) return container.metadata == metadata end):next().value if existing ~= nil then screen:detach(existing) end end end function ____exports.rainGen() local angle = 105 local unit = ST:ray(angle, 1) local xextent = 240 + math.abs(unit.x * (180 / unit.y)) local pptMin = 2 local pptMax = 3 local sizeMin = 5 local sizeMax = 30 local speedMin = 10 local speedMax = 25 local thiccMin = 0.25 local thiccMax = 0.5 local alphaMin = 0.1 local alphaMax = 0.4 local p = 0 local sim = 60 local particles = {} return __TS__New(STContainer):addDrawer(function(self) while true do local ____sim_30 = sim sim = ____sim_30 - 1 if not (____sim_30 ~= 0) then break end p = pptMin + math.floor(math.random() * (pptMax - pptMin)) while true do local ____p_28 = p p = ____p_28 - 1 if not (____p_28 ~= 0) then break end local ss = math.random() local speed = speedMin + math.floor(ss * (speedMax - speedMin)) local size = sizeMin + math.floor(ss * (sizeMax - sizeMin)) particles[#particles + 1] = { -120 + math.floor(math.random() * xextent), -90 - unit.y * speed, speed, size } end local index = #particles local color = {love.graphics.getColor()} while true do local ____index_29 = index index = ____index_29 - 1 if not (____index_29 ~= 0) then break end local particle = particles[index + 1] if 90 <= particle[2] then __TS__ArraySplice(particles, index, 1) else particle[1] = particle[1] + unit.x * particle[3] particle[2] = particle[2] + unit.y * particle[3] if sim == 0 then love.graphics.setColor( 1, 1, 1, alphaMin + math.random() * (alphaMax - alphaMin) ) love.graphics.setLineWidth(thiccMin + math.random() * (thiccMax - thiccMin)) love.graphics.line(particle[1], particle[2], particle[1] + unit.x * particle[4], particle[2] + unit.y * particle[4]) end end end love.graphics.setColor(color) end sim = 1 end) end function ____exports.standardSplitter(char) repeat local ____switch64 = char local ____cond64 = ____switch64 == " " if ____cond64 then return STSplitterResult.EXCLUDE end ____cond64 = ____cond64 or ____switch64 == "-" if ____cond64 then return STSplitterResult.INCLUDE end do return STSplitterResult.NONE end until true end return ____exports