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
|