76 lines
2.1 KiB
Lua
76 lines
2.1 KiB
Lua
dialeg={
|
|
list = {},
|
|
}
|
|
|
|
dialegs = {}
|
|
|
|
function dialeg.update()
|
|
for i,d in ipairs(dialegs) do
|
|
if distancia(d.actor1, d.actor2, d.direccio)<=d.distancia and d.enabled then
|
|
dialeg.new(d.text, d.actor1)
|
|
d.enabled=false
|
|
end
|
|
end
|
|
end
|
|
|
|
function dialeg.new( _text, _actor )
|
|
print(_text)
|
|
table.insert(
|
|
dialeg.list,
|
|
{
|
|
actor= _actor,
|
|
text=_text,
|
|
time = 120,
|
|
w = math.floor(4.6*#_text),
|
|
h = 20,
|
|
} )
|
|
end
|
|
|
|
function dialeg.draw( )
|
|
local i = 1
|
|
while i <= #dialeg.list do
|
|
local d = dialeg.list[i]
|
|
|
|
if d.time>0 and d.actor then
|
|
if viewp:inside(d.actor.x, d.actor.y, d.actor.w, d.actor.h) then
|
|
local x = 0
|
|
local y = 0
|
|
|
|
y = d.actor.y-20
|
|
if d.actor.flip then
|
|
x = d.actor.x-d.w
|
|
else
|
|
x = d.actor.x+d.actor.w
|
|
end
|
|
|
|
x, y = viewp:screen_coords( x, y )
|
|
|
|
draw.rrectf(x, y, d.w, d.h, 5, 2)
|
|
|
|
if d.actor.flip then
|
|
draw.line(x+d.w, y+d.h-1+5, x+d.w-20, y+d.h-1, 2)
|
|
draw.line(x+d.w, y+d.h-1+5, x+d.w-18, y+d.h-1, 2)
|
|
draw.line(x+d.w, y+d.h-1+5, x+d.w-14, y+d.h-1, 2)
|
|
draw.line(x+d.w, y+d.h-1+5, x+d.w-12, y+d.h-1, 2)
|
|
else
|
|
draw.line(x, y+d.h-1+5, x+20, y+d.h-1, 2)
|
|
draw.line(x, y+d.h-1+5, x+18, y+d.h-1, 2)
|
|
draw.line(x, y+d.h-1+5, x+14, y+d.h-1, 2)
|
|
draw.line(x, y+d.h-1+5, x+12, y+d.h-1, 2)
|
|
end
|
|
|
|
local font_curr = font.current()
|
|
font.current(font_default)
|
|
draw.text(d.text, x+5,y+7, 16)
|
|
font.current(font_curr)
|
|
|
|
d.time = d.time-1
|
|
end
|
|
i = i + 1
|
|
else
|
|
table.remove(dialeg.list, i)
|
|
end
|
|
end
|
|
end
|
|
|
|
return dialeg |