summaryrefslogtreecommitdiff
path: root/textTrigger.lua
blob: 5202a8c343426a87a9d9b5fcac082d11d2de319f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
local Entity = require("entity")

local TextTrigger = {}
TextTrigger.__index = TextTrigger

function TextTrigger.new(entity)
    local self = setmetatable({}, TextTrigger)

    self.x = entity.x
    self.y = entity.y
    self.width = entity.width
    self.height = entity.height

    self.text = entity:get("text", "")
    self.timesToShow = tonumber(entity:get("times_to_show", 1)) or 1

    self.body = nil
    self.fixture = nil
    self.isTextTrigger = true

    return self
end

function TextTrigger:setWorldPhysics(world)
    local cx = self.x + self.width / 2
    local cy = self.y + self.height / 2

    self.body = love.physics.newBody(world, cx, cy, "static")
    local shape = love.physics.newRectangleShape(self.width, self.height)

    self.fixture = love.physics.newFixture(self.body, shape)
    self.fixture:setSensor(true)
    self.fixture:setUserData(self)
end

function TextTrigger:syncFromPhysicsBody() end

function TextTrigger:trigger(world, player)
    if self.timesToShow < 1 then return end

    world.playerTextbox:show(
        self.text,
        { player.x + player.width/2, player.y - 20, "center" },
        "write",
        { life = 3, fontSize = 9, centeredText = true, wrapToFit = true }
    )

    self.timesToShow = self.timesToShow - 1
end

function TextTrigger:update(dt) end

function TextTrigger:draw() end

return TextTrigger