balloon={ text=nil, pos=1, ini=1, cursor={x=0,y=0}, old_update=nil, rect=nil, quick=false, show=function(txt,col,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.color=col balloon.pos=1 balloon.ini=1 balloon.obj=nil balloon.quick=false balloon.old_update=update update=balloon.update local pos=actor.x*8+8 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 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 end balloon.cursor={x=balloon.rect.x+8,y=balloon.rect.y+7} end, narrator=function(obj) balloon.rect={x=8,y=48,w=144,h=35} balloon.text="HAS ACONSEGUIT:\n"..obj.name.."!" balloon.color=8 balloon.pos=1 balloon.ini=1 balloon.obj=obj balloon.quick=false balloon.old_update=update update=balloon.update 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,15) rect(x,y,x+w,y+h,6) balloon.cursor={x=balloon.rect.x+12,y=balloon.rect.y+11} end, update=function() if anykey() then if balloon.pos<0 then update=balloon.old_update scene.cont() else balloon.quick=true end end if not beat() and not balloon.quick then return end if balloon.pos<0 then if balloon.obj then setsource(objectes) sspr(balloon.obj.x,balloon.obj.y,16,16,balloon.rect.x+balloon.rect.w-28,balloon.rect.y+10) end 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,balloon.color) balloon.pos=balloon.pos+1 --balloon.cursor.x=balloon.cursor.x+4 end end end }