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__DecorateLegacy = ____lualib.__TS__DecorateLegacy
local ____exports = {}
local ____decorators = require("decorators")
local Exported = ____decorators.Exported
local ____console = require("functions.console")
local printEnabled = ____console.printEnabled
local ____Feature = require("classes.private.Feature")
local Feature = ____Feature.Feature
local ____DebugDisplayBomb = require("classes.features.other.debugDisplay.DebugDisplayBomb")
local DebugDisplayBomb = ____DebugDisplayBomb.DebugDisplayBomb
local ____DebugDisplayDoor = require("classes.features.other.debugDisplay.DebugDisplayDoor")
local DebugDisplayDoor = ____DebugDisplayDoor.DebugDisplayDoor
local ____DebugDisplayEffect = require("classes.features.other.debugDisplay.DebugDisplayEffect")
local DebugDisplayEffect = ____DebugDisplayEffect.DebugDisplayEffect
local ____DebugDisplayFamiliar = require("classes.features.other.debugDisplay.DebugDisplayFamiliar")
local DebugDisplayFamiliar = ____DebugDisplayFamiliar.DebugDisplayFamiliar
local ____DebugDisplayKnife = require("classes.features.other.debugDisplay.DebugDisplayKnife")
local DebugDisplayKnife = ____DebugDisplayKnife.DebugDisplayKnife
local ____DebugDisplayLaser = require("classes.features.other.debugDisplay.DebugDisplayLaser")
local DebugDisplayLaser = ____DebugDisplayLaser.DebugDisplayLaser
local ____DebugDisplayNPC = require("classes.features.other.debugDisplay.DebugDisplayNPC")
local DebugDisplayNPC = ____DebugDisplayNPC.DebugDisplayNPC
local ____DebugDisplayPickup = require("classes.features.other.debugDisplay.DebugDisplayPickup")
local DebugDisplayPickup = ____DebugDisplayPickup.DebugDisplayPickup
local ____DebugDisplayPit = require("classes.features.other.debugDisplay.DebugDisplayPit")
local DebugDisplayPit = ____DebugDisplayPit.DebugDisplayPit
local ____DebugDisplayPlayer = require("classes.features.other.debugDisplay.DebugDisplayPlayer")
local DebugDisplayPlayer = ____DebugDisplayPlayer.DebugDisplayPlayer
local ____DebugDisplayPoop = require("classes.features.other.debugDisplay.DebugDisplayPoop")
local DebugDisplayPoop = ____DebugDisplayPoop.DebugDisplayPoop
local ____DebugDisplayPressurePlate = require("classes.features.other.debugDisplay.DebugDisplayPressurePlate")
local DebugDisplayPressurePlate = ____DebugDisplayPressurePlate.DebugDisplayPressurePlate
local ____DebugDisplayProjectile = require("classes.features.other.debugDisplay.DebugDisplayProjectile")
local DebugDisplayProjectile = ____DebugDisplayProjectile.DebugDisplayProjectile
local ____DebugDisplayRock = require("classes.features.other.debugDisplay.DebugDisplayRock")
local DebugDisplayRock = ____DebugDisplayRock.DebugDisplayRock
local ____DebugDisplaySlot = require("classes.features.other.debugDisplay.DebugDisplaySlot")
local DebugDisplaySlot = ____DebugDisplaySlot.DebugDisplaySlot
local ____DebugDisplaySpikes = require("classes.features.other.debugDisplay.DebugDisplaySpikes")
local DebugDisplaySpikes = ____DebugDisplaySpikes.DebugDisplaySpikes
local ____DebugDisplayTear = require("classes.features.other.debugDisplay.DebugDisplayTear")
local DebugDisplayTear = ____DebugDisplayTear.DebugDisplayTear
local ____DebugDisplayTNT = require("classes.features.other.debugDisplay.DebugDisplayTNT")
local DebugDisplayTNT = ____DebugDisplayTNT.DebugDisplayTNT
____exports.DebugDisplay = __TS__Class()
local DebugDisplay = ____exports.DebugDisplay
DebugDisplay.name = "DebugDisplay"
__TS__ClassExtends(DebugDisplay, Feature)
function DebugDisplay.prototype.____constructor(self, mod)
    Feature.prototype.____constructor(self)
    self.player = __TS__New(DebugDisplayPlayer)
    self.tear = __TS__New(DebugDisplayTear)
    self.familiar = __TS__New(DebugDisplayFamiliar)
    self.bomb = __TS__New(DebugDisplayBomb)
    self.pickup = __TS__New(DebugDisplayPickup)
    self.slot = __TS__New(DebugDisplaySlot)
    self.laser = __TS__New(DebugDisplayLaser)
    self.knife = __TS__New(DebugDisplayKnife)
    self.projectile = __TS__New(DebugDisplayProjectile)
    self.effect = __TS__New(DebugDisplayEffect)
    self.npc = __TS__New(DebugDisplayNPC)
    self.rock = __TS__New(DebugDisplayRock)
    self.pit = __TS__New(DebugDisplayPit)
    self.spikes = __TS__New(DebugDisplaySpikes)
    self.tnt = __TS__New(DebugDisplayTNT)
    self.poop = __TS__New(DebugDisplayPoop)
    self.door = __TS__New(DebugDisplayDoor)
    self.pressurePlate = __TS__New(DebugDisplayPressurePlate)
    self.mod = mod
end
function DebugDisplay.prototype.setPlayerDisplay(self, textCallback)
    self.player.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPlayerDisplay", true)
function DebugDisplay.prototype.setTearDisplay(self, textCallback)
    self.tear.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setTearDisplay", true)
function DebugDisplay.prototype.setFamiliarDisplay(self, textCallback)
    self.familiar.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setFamiliarDisplay", true)
function DebugDisplay.prototype.setBombDisplay(self, textCallback)
    self.bomb.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setBombDisplay", true)
function DebugDisplay.prototype.setPickupDisplay(self, textCallback)
    self.pickup.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPickupDisplay", true)
function DebugDisplay.prototype.setSlotDisplay(self, textCallback)
    self.slot.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setSlotDisplay", true)
function DebugDisplay.prototype.setLaserDisplay(self, textCallback)
    self.laser.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setLaserDisplay", true)
function DebugDisplay.prototype.setKnifeDisplay(self, textCallback)
    self.knife.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setKnifeDisplay", true)
function DebugDisplay.prototype.setProjectileDisplay(self, textCallback)
    self.projectile.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setProjectileDisplay", true)
function DebugDisplay.prototype.setEffectDisplay(self, textCallback)
    self.effect.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setEffectDisplay", true)
function DebugDisplay.prototype.setNPCDisplay(self, textCallback)
    self.npc.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setNPCDisplay", true)
function DebugDisplay.prototype.setRockDisplay(self, textCallback)
    self.rock.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setRockDisplay", true)
function DebugDisplay.prototype.setPitDisplay(self, textCallback)
    self.pit.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPitDisplay", true)
function DebugDisplay.prototype.setSpikesDisplay(self, textCallback)
    self.spikes.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setSpikesDisplay", true)
function DebugDisplay.prototype.setTNTDisplay(self, textCallback)
    self.tnt.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setTNTDisplay", true)
function DebugDisplay.prototype.setPoopDisplay(self, textCallback)
    self.poop.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPoopDisplay", true)
function DebugDisplay.prototype.setDoorDisplay(self, textCallback)
    self.door.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setDoorDisplay", true)
function DebugDisplay.prototype.setPressurePlateDisplay(self, textCallback)
    self.pressurePlate.textCallback = textCallback
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "setPressurePlateDisplay", true)
function DebugDisplay.prototype.toggleFeature(self, feature, featureName, force)
    local shouldInit = not feature.initialized
    if force ~= nil then
        shouldInit = force
    end
    if shouldInit then
        self.mod:initFeature(feature)
    else
        self.mod:uninitFeature(feature)
    end
    printEnabled(nil, feature.initialized, featureName .. " display")
end
function DebugDisplay.prototype.togglePlayerDisplay(self, force)
    self:toggleFeature(self.player, "player", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePlayerDisplay", true)
function DebugDisplay.prototype.toggleTearDisplay(self, force)
    self:toggleFeature(self.tear, "tear", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleTearDisplay", true)
function DebugDisplay.prototype.toggleFamiliarDisplay(self, force)
    self:toggleFeature(self.familiar, "familiar", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleFamiliarDisplay", true)
function DebugDisplay.prototype.toggleBombDisplay(self, force)
    self:toggleFeature(self.bomb, "bomb", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleBombDisplay", true)
function DebugDisplay.prototype.togglePickupDisplay(self, force)
    self:toggleFeature(self.pickup, "pickup", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePickupDisplay", true)
function DebugDisplay.prototype.toggleSlotDisplay(self, force)
    self:toggleFeature(self.slot, "slot", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleSlotDisplay", true)
function DebugDisplay.prototype.toggleLaserDisplay(self, force)
    self:toggleFeature(self.laser, "laser", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleLaserDisplay", true)
function DebugDisplay.prototype.toggleKnifeDisplay(self, force)
    self:toggleFeature(self.knife, "knife", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleKnifeDisplay", true)
function DebugDisplay.prototype.toggleProjectileDisplay(self, force)
    self:toggleFeature(self.projectile, "projectile", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleProjectileDisplay", true)
function DebugDisplay.prototype.toggleEffectDisplay(self, force)
    self:toggleFeature(self.effect, "effect", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleEffectDisplay", true)
function DebugDisplay.prototype.toggleNPCDisplay(self, force)
    self:toggleFeature(self.npc, "NPC", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleNPCDisplay", true)
function DebugDisplay.prototype.toggleRockDisplay(self, force)
    self:toggleFeature(self.rock, "rock", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleRockDisplay", true)
function DebugDisplay.prototype.togglePitDisplay(self, force)
    self:toggleFeature(self.pit, "pit", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePitDisplay", true)
function DebugDisplay.prototype.toggleSpikesDisplay(self, force)
    self:toggleFeature(self.spikes, "spikes", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleSpikesDisplay", true)
function DebugDisplay.prototype.toggleTNTDisplay(self, force)
    self:toggleFeature(self.tnt, "tnt", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleTNTDisplay", true)
function DebugDisplay.prototype.togglePoopDisplay(self, force)
    self:toggleFeature(self.poop, "poop", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePoopDisplay", true)
function DebugDisplay.prototype.toggleDoorDisplay(self, force)
    self:toggleFeature(self.door, "door", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "toggleDoorDisplay", true)
function DebugDisplay.prototype.togglePressurePlateDisplay(self, force)
    self:toggleFeature(self.pressurePlate, "pressure plate", force)
end
__TS__DecorateLegacy({Exported}, DebugDisplay.prototype, "togglePressurePlateDisplay", true)
return ____exports
