def __init__(self, position, targetScene, targetPosition):
        super().__init__()
        self.setType("teleportation")

        self.uniqid = uuid.uuid4()
        self.action = ActionDispatcher(self.uniqid, position[0], position[1])
        self.receiver = ActionReceiver(self.uniqid)
        self.receiver.on(self.doTeleport)

        texture = Image("assets/icons/door.png")
        texture.setSize(64, 64)
        texture.setOffsetPosition(93, 300)
        texture.setDepth(101)
        self.assignDrawable(texture)

        self.setPosition(position[0], position[1])

        self.targetScene = targetScene
        self.targetPosition = targetPosition

        Render.set(texture)
    def __init__(self, direction="right", speed=2, characterName=None):
        super().__init__()
        self.setType("character")

        self.direction = direction
        self.walking = True
        self.speed = speed
        self.reachBorder = False
        self.characterName = characterName

        self.dialogStarted = False
        self.assignedDialog = None

        # assign a action dispatcher on the character
        self.uniqid = uuid.uuid4()
        self.functionsToCallWhenAction = []
        self.dispatcher = ActionDispatcher(self.uniqid, 0, 0)
        self.receiver = ActionReceiver(self.uniqid)
        self.receiver.on(self.callFunctions)

        # character texture
        self.sprites = {
            "walking":
            Sprite("assets/characters/" + characterName + "/walking.png"),
            "static":
            Sprite("assets/characters/" + characterName + "/static.png")
        }

        # sprite settings
        self.sprites['walking'].setSpeed(6)
        self.sprites['walking'].setSize(256, 256)

        self.sprites['static'].setSpeed(1)
        self.sprites['static'].setSize(256, 256)

        self.setSize(256, 256)
        self.assignDrawable(self.sprites['static'])
        self.setDepth(50)

        characters.append(self)