Files
jailsadventure2/data/balloon.lua
Raimon Zamora 6a1aafe4d4 - FIX: Els accents no se veïen
- Proves amb tamanys i posició del bocadills de chamó i text
2023-01-31 18:02:49 +01:00

115 lines
3.6 KiB
Lua

balloon={
text=nil,
pos=1,
ini=1,
cursor={x=0,y=0},
old_update=nil,
rect=nil,
show=function(txt,actorname,below,rectangle)
local actor = actors.search(actorname)
if not actor then return end
if rectangle==nil then
balloon.rect={x=8,y=actor.y*8-4,w=144,h=35}
else
balloon.rect={}
balloon.rect.x=rectangle.x*8
balloon.rect.y=actor.y*8-4
balloon.rect.w=rectangle.w*8
balloon.rect.h=rectangle.h*9+8
end
balloon.text=txt
balloon.pos=1
balloon.ini=1
balloon.old_update=update
update=balloon.update
local pos,height=actor.x*8+4,actor.y*8-4
if below==nil or below==false then
balloon.rect.y=balloon.rect.y-balloon.rect.h-16
local x,y,w,h=balloon.rect.x,balloon.rect.y,balloon.rect.w,balloon.rect.h
rectfill(x+1,y+1,x+w+1,y+h+1,5)
rectfill(x,y,x+w,y+h,8)
rect(x,y,x+w,y+h,6)
if pos<80 then
for i=0,4 do rect(pos,y+h+(4-i),pos+i,y+h+(4-i),8) end
line(pos-1,y+h+1,pos-1,y+h+6,6)
line(pos+4,y+h+1,pos-1,y+h+6,6)
else
pos=pos-5
for i=0,4 do rect(pos+i,y+h+i,pos+4,y+h+i,8) end
line(pos+5,y+h+1,pos+5,y+h+6,6)
line(pos,y+h+1,pos+5,y+h+6,6)
end
height=height+7
else
balloon.rect.y=balloon.rect.y+16
local x,y,w,h=balloon.rect.x,balloon.rect.y,balloon.rect.w,balloon.rect.h
rectfill(x+1,y+1,x+w+1,y+h+1,5)
rectfill(x,y,x+w,y+h,8)
rect(x,y,x+w,y+h,6)
if pos<80 then
for i=0,4 do rect(pos,y-(4-i),pos+i,y-(4-i),8) end
line(pos-1,y,pos-1,y-6,6)
line(pos+5,y,pos-1,y-6,6)
else
pos=pos-5
for i=0,4 do rect(pos+i,y-i,pos+4,y-i,8) end
line(pos+5,y,pos+5,y-6,6)
line(pos-1,y,pos+5,y-6,6)
end
height=height+7
end
balloon.cursor={x=balloon.rect.x+8,y=balloon.rect.y+7}
--text("12345678901234567890123456789012\n3",16,height, 2)
--text("UNO DOS TRES",16,height+9, 2)
--text("UNO DOS TRES",16,height+18, 2)
end,
update=function()
if balloon.pos<0 and anykey() then
update=balloon.old_update
scene.cont()
end
if not beat() then return end
if balloon.pos<0 then
local col=8
if flr(time()*4)%2==0 then col=10 end
local x,y=balloon.rect.x+balloon.rect.w-8, balloon.rect.y+balloon.rect.h-6
line(x,y,x+4,y,col)
line(x+1,y+1,x+3,y+1,col)
line(x+2,y+2,x+2,y+2,col)
if btnp(KEY_SPACE) then
update=balloon.old_update
end
else
local txt=string.sub(balloon.text,balloon.ini,balloon.pos)
local char=string.sub(balloon.text,balloon.pos,balloon.pos)
if char=='' then
-- final
balloon.pos=-1
--update=balloon.old_update
elseif char=='\n' then
-- salt de linea
balloon.pos=balloon.pos+1
balloon.ini=balloon.pos
--balloon.cursor.x=balloon.rect.x+8
balloon.cursor.y=balloon.cursor.y+9
else
text(txt,balloon.cursor.x,balloon.cursor.y,2)
balloon.pos=balloon.pos+1
--balloon.cursor.x=balloon.cursor.x+4
end
end
end
}