Escenes funcionant.

Altres correccions menors.
This commit is contained in:
2026-04-01 21:58:41 +02:00
parent 205a98bf17
commit 56807c2285
8 changed files with 515 additions and 116 deletions

View File

@@ -164,7 +164,7 @@ function caco:update_hit()
if self.step<self.death_time then
if self.step%2==0 then
-- self.frame=21
self.frame=self.anim[4]
self.frame=self.anim[#self.anim]
else
self.frame=-1
end

View File

@@ -63,7 +63,7 @@ function actor_warp_update(actor)
actor.frame = -1
elseif actor.step<actor.death_time then
if actor.step%2==0 then
actor.frame=actor.anim[4]
actor.frame=actor.anim[#actor.anim]
else
actor.frame=-1
end
@@ -289,7 +289,6 @@ function update_game()
score.draw()
fps_print()
-- viewp:print()
-- msg_print(0,14,"ABAD= "..abad.x..", "..abad.y, true)
-- msg_print(0,21,"VIEW= "..vp_x..", "..vp_y, true)

View File

@@ -1,73 +1,55 @@
o2aX = arcade_config.org2arc_escala
local abad={x=0,y=0,w=32,h=32,dx=88,dy=48,dw=32,dh=32}
local batman={x=0,y=96,w=32,h=32,dx=164,dy=48,dw=32,dh=32}
local cacaus={x=224,y=176,w=32,h=16,dx=152,dy=64,dw=32,dh=16}
local marc={x=30,y=6,w=198,h=102,color=2}
local pas_porta={x=146,y=48,w=14,h=32,color=16}
local scene_x_offset = 32
local scene_y_offset = 8
intro_wait=40
intro_step=0
function intro_init()
game_update = intro_intro
intro_wait=400
surf.cls(16)
local font_default = font.current()
font.current(font_sf)
surf.target(back)
surf.cls(16)
draw.text("INTRO INIT",0,0,15)
font.current(font_default)
surf.target(0)
surf.source(back)
draw.surf(0,0,63,10,100,100,126,20)
-- surf.source(tiles)
fade.fadein()
print("INTRO INIT")
end
function intro_intro()
intro_wait=intro_wait-1
if intro_wait==0 or key.press(key.ESCAPE) or key.press(keyShoot) or pad.press(btnShoot) or pad.press(btnPause) then
intro_wait=1
game_update = intro_update
fade.fadeoutin()
end
end
function intro_update()
fps_print()
game_init(true)
fade.fadeoutin()
end
-- RESTOS DEL X2 CACAUS
function _draw_item_intro( name, flip )
local cw = arcade_config.character_width
local ch = arcade_config.character_height
if ( name == "abad" ) then
draw.surf(0,0,cw,ch,44*o2aX,24*o2aX,cw,ch,flip)
elseif (name == "batman" ) then
draw.surf(0,48*o2aX,cw,ch,82*o2aX,24*o2aX,cw,ch,flip)
elseif (name == "cacaus" ) then
draw.surf(112*o2aX,88*o2aX,cw,ch/2,76*o2aX,32*o2aX,cw,ch/2,flip)
elseif (name == "marc" ) then
draw.rect(15*o2aX,3*o2aX,99*o2aX,51*o2aX,2)
elseif (name == "pas porta" ) then
draw.rectf(73*o2aX,24*o2aX,7*o2aX,16*o2aX,16)
end
end
function _draw_escenari ()
function draw_escenari ()
surf.cls(16)
draw_item_intro("marc",false)
view.origin(16*o2aX,4*o2aX)
view.origin(scene_x_offset, scene_y_offset)
mapa_draw(10)
-- Borrar la porta del mapa
draw_item_intro("pas porta")
end
function _intro_update()
function draw_item_intro( name, flip )
if ( name == "abad" ) then
draw.surf(abad.x, abad.y, abad.w, abad.h, abad.dx, abad.dy, abad.dw, abad.dh, flip)
elseif (name == "batman" ) then
draw.surf(batman.x, batman.y, batman.w, batman.h, batman.dx, batman.dy, batman.dw, batman.dh, flip)
elseif (name == "cacaus" ) then
draw.surf(cacaus.x, cacaus.y, cacaus.w, cacaus.h, cacaus.dx, cacaus.dy, cacaus.dw, cacaus.dh, flip)
elseif (name == "marc" ) then
draw.rect(marc.x, marc.y, marc.w, marc.h, marc.color)
elseif (name == "pas porta" ) then
draw.rectf(pas_porta.x, pas_porta.y, pas_porta.w, pas_porta.h, pas_porta.color)
end
end
function intro_init()
game_update = intro_intro
intro_wait=400
surf.source(tiles)
surf.target(0)
surf.cls(16)
fade.fadein()
font.current(font_sf)
end
function intro_intro()
intro_wait=1
game_update = intro_update
fade.fadeoutin()
end
function intro_update()
if key.press(key.ESCAPE) or pad.press(btnPause) then
game_init(true)
fade.fadeoutin()
@@ -75,10 +57,10 @@ function _intro_update()
intro_wait=1
end
intro_wait=intro_wait-1
if intro_wait==0 then
-- STEP 0
-- == INTRO_01
-- STEP 0
if intro_step==0 then
draw_escenari()
draw_item_intro("abad", true)
@@ -88,7 +70,9 @@ function _intro_update()
elseif intro_step==1 then
start_scene(scenes.intro_01,58)
intro_step=intro_step+1
-- STEP 2
-- == INTRO_02
-- STEP 2
elseif intro_step==2 then
draw_escenari()
draw_item_intro("abad", false)
@@ -98,7 +82,9 @@ function _intro_update()
elseif intro_step==3 then
start_scene(scenes.intro_02,58)
intro_step=intro_step+1
-- STEP 4
-- == INTRO_03
-- STEP 4
elseif intro_step==4 then
draw_escenari()
draw_item_intro("abad", false)
@@ -110,7 +96,9 @@ function _intro_update()
elseif intro_step==5 then
start_scene(scenes.intro_03,58)
intro_step=intro_step+1
-- STEP 6
-- == INTRO_04
-- STEP 6
elseif intro_step==6 then
draw_escenari()
draw_item_intro("abad", false)
@@ -120,7 +108,8 @@ function _intro_update()
elseif intro_step==7 then
start_scene(scenes.intro_04,58)
intro_step=intro_step+1
-- STEP 8
-- STEP 8
elseif intro_step==8 then
music.play(audio_main_song)
game_init(true)

View File

@@ -126,6 +126,5 @@ function logo_intro()
end
function logo_update()
fps_print()
intro_init()
end

View File

@@ -12,7 +12,8 @@ require "intro"
require "game"
require "switches"
require "warp"
-- require "scenes"
require "trigger"
require "scenes"
coords.set_config({
tiles_width = arcade_config.tiles_width,
@@ -116,9 +117,9 @@ function mini.init()
btnCycle2 = tonumber(config.key("btncycle2")) or pad.LEFTSHOULDER
btnPause = tonumber(config.key("btnpause")) or pad.START
-- logo_init()
logo_init()
-- intro_init()
game_init()
-- game_init()
-- final_init()
end
@@ -138,50 +139,25 @@ function mini.update()
end
function arc_text(str, x, y, col)
local curr_surf_tgt = surf.target()
local curr_surf_src = surf.source()
local sw = arcade_config.org_resolucion.width
local sh = arcade_config.org_resolucion.height
local dw = arcade_config.resolucion.width
local dh = arcade_config.resolucion.height
surf.target(textsf)
surf.cls(0)
draw.text(str,0,0,col)
-- print("arc_ "..str)
surf.source(textsf)
surf.target(curr_surf_tgt)
draw.surf(0,0,sw,sh,x,y,dw,dh)
surf.source(curr_surf_src)
font.current(font_sf)
draw.text(str,x,y,col)
end
function arc_textB(str, x, y, col, colB)
local ox, oy = view.origin()
local curr_surf_tgt = surf.target()
local curr_surf_src = surf.source()
local sw = arcade_config.org_resolucion.width
local sh = arcade_config.org_resolucion.height
local dw = arcade_config.resolucion.width
local dh = arcade_config.resolucion.height
colB = colB or 16
surf.target(textsf)
view.origin(0,0)
surf.cls(0)
draw.text(str,0,0,colB)
draw.text(str,1,0,colB)
draw.text(str,2,0,colB)
draw.text(str,0,1,colB)
draw.text(str,2,1,colB)
draw.text(str,0,2,colB)
draw.text(str,1,2,colB)
draw.text(str,2,2,colB)
function arc_textB(str, x, y, col)
font.current(font_sf)
-- Crear el borde negre
draw.text(str, x-1, y-1, 16)
draw.text(str, x , y-1, 16)
draw.text(str, x+1, y-1, 16)
draw.text(str,1,1,col)
-- print("arc_B "..str)
surf.source(textsf)
surf.target(curr_surf_tgt)
view.origin(ox,oy)
draw.surf(0,0,sw,sh,x,y,dw,dh)
surf.source(curr_surf_src)
draw.text(str, x-1, y, 16)
draw.text(str, x+1, y, 16)
draw.text(str, x-1, y+1, 16)
draw.text(str, x , y+1, 16)
draw.text(str, x+1, y+1, 16)
-- Escriure la cadena
draw.text(str,x,y,col)
end
-- DEBUG

328
data/scenes.lua Normal file
View File

@@ -0,0 +1,328 @@
-- require "final"
-- require "audio"
o2aX = arcade_config.org2arc_escala
avatar_abad_x = 3*o2aX
avatar_abad2_x = 4*o2aX
avatar_abad_y = 0
avatar_batman_x = 4*o2aX
avatar_batman_y = 48*o2aX
avatar_premiere_x = 69*o2aX
avatar_premiere_y = 20*o2aX
avatar_elalien_x = 3*o2aX
avatar_elalien_y = 16*o2aX
avatar_w = 10*o2aX
avatar_h = 10*o2aX
scenes={
intro_01= {
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20},
},
intro_02= {
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Eh! On està el","bol de cacaus???",""},die=20},
},
intro_03= {
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"ME L'HE ENDUT JO!!!", "S'HAN ACABAT ELS","CACAUS PA TU!"},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Què??","Però perquè???",""},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Estàs com una vaca!","Has de deixar de menjar", "eixes gorrinades"},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Mira'm a mi. Estic","tot buenorro i faig", "esport"},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Esport?????","I una merda!!","He de cuidar la panxa!"},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Pos t'aguantes.","Ja pots despedir-te", "dels cacaus..."},die=20},
},
intro_04= {
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Serà mamó...","",""},die=20},
},
abad_inici={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Se va a enterar eixe","imbècil de Batman","quan el pille..."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Gonna per el GPS","per a trobarlo.",""}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"I igual hi ha","algú més per ací","que em puga ajudar."}},
},
abad_corfes={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Osti, està ple de","monstruacos.",""}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Pos al que s'acoste","s'endurà una corfa","de cacau al cap!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"I si van altets","igual val la pena","ajupir-se..."}}
},
abad_portes={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Qui ha tancat totes","les portes?",""}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"A saber on està","cada interruptor","per a obrir-les..."}},
},
abad_porta_casa={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Vaja, la porta de","casa també està","tancada."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Però he de eixir!","Batman viu en la","casa de davant!"}},
},
abad_porta_batman={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Be, era de esperar","que Batman tinguera","la porta tancada."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Crec que hi havia","un passadis secret","del meu sotan al seu."}},
},
gps_trobat={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ale, ja tinc el GPS.","Ara puc trobar tot","el que necessite..."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"polsant les tecles","de l'1 al 5",""}},
},
premiere_intro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_premiere,text={"Premiere??","Qué fas per ma casa?",""}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Porca miseria!!","l'uomo pipistrello!!","m'ha llevatto il gorro!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Pipistrello??","Això ques??",""}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Il batmano!!","Incontrame il gorro","per l'amore d'un porco!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Tinc faena. A mi m'ha","furtat els cacaus i","he de trobarlos."}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Lei tenne in su quarto!","Io tengo micha clave!","Achudame i t'achudo!"}}
},
premiere_intro_gorro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_premiere,text={"Premiere??","Qué fas per ma casa?",""}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Porca miseria!!","l'uomo pipistrello!!","m'ha llevatto il gorro!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Pipistrello??","Això... be, te igual","Ací el tens, atontat."}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Per fortuna!","Grazie mille!","Come podo achudarte?"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Pos Batman m'ha furtat","els cacaus. Supose que","els te amagats."}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"In lo suo quarto!","Io tengo micha clave!","Tenne, tenne!!"}}
},
premiere_gorro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_premiere,text={"Tin, el ditxos gorro.","",""}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Bravissimo!","Che giornatta","fantastica! Figo!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Tu si que eres un","figo. On està eixa","mitja clau?"}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"Giusto! Aquí tenne!","Buona fortuna per","la tua avventura!"}},
{x=avatar_premiere_x,y=avatar_premiere_y,flip=true,audio="premiere",text={"E NON TOCARE il","Batmano! Sei molto","poderoso!"}}
},
gorro_trobat_nointro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Mira, el gorro","de Premiere.","Millor l'agafe."}}
},
gorro_trobat={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Mira, el gorro","de Premiere.","A la saca."}}
},
elalien_intro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_elalien,text={"Que passa alien?","A tu també t'ha","putejat el Batman?"}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"CAGUEN L'OU!!","ESTAVA JO TAN TRANQUIL","PODANT AL MEU GOS..."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"...I QUAN NO MIRABA","M'HA FURTAT EL","MARANÀ!!!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Es...taves podant","a un gos...?",""}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"EN JUPITER NO POTS","DEIXAR QUE LI CREIXEN","MES DE 12 PATES!!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Uh... clar...","A mi m'ha furtat","els cacaus."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"ELS TÉ EN LA SEUA","HABITACIÓ SEGUR.","TROBA EL BERENAR..."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"...I JO ET DONARÉ","LA MEITAT DE LA CLAU","PER A ENTRAR."}}
},
elalien_intro_peu={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_elalien,text={"Que passa alien?","A tu també t'ha","putejat el Batman?"}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"CAGUEN L'OU!!","ESTAVA JO TAN TRANQUIL","PODANT AL MEU GOS..."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"...I QUAN NO MIRABA","M'HA FURTAT EL","MARANÀ!!!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Podant...? be, te","igual. Açò deu ser","el teu berenar."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"OSTI QUE BÓ!!!","GRACIES AUELO!","A TU QUE T'HA FET?"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"M'ha furtat els cacaus.","Segur que els té","al seu quarto."}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"SEGUR! PERO JO TINC","LA MEITAT DE LA CLAU.","TIN, I SORT!"}}
},
elalien_peu={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",musica=audio_song_elalien,text={"Ací tens...","Uff, que peste fa...",""}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"GRACIES!!!","SÍ, EH? QUE","SUCOSET I BÓ."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Clar...","Be, i eixa","mitja clau?"}},
{x=avatar_elalien_x,y=avatar_elalien_y,flip=true,audio="elalien",text={"TIN! QUAN TINGUES","ELS CACAUS, PEGA-LI","CACAUÀ A BATMAN!"}},
},
peu_trobat_nointro={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Un peu podrit??","Qué asco!! Segur","que és d'el alien."}}
},
peu_trobat={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Joer, açò deu ser","el berenar d'el alien.","Ecs..."}}
},
habitacio_batman={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"L'habitació de Batman!","Segur que els cacaus","estàn ahí dins."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Però necessite","una clau...",""}}
},
bol_trobat={
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"PER FI, JA TINC","ELS MEUS CACAUS!!!","OLE!! OLE!!"}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Se va a enterar","Batman ara quan","el pille..."}},
{x=avatar_abad2_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ara si que li puc","pegar una bona","cacauà..."}}
},
final= {
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"AI!", "M'has fet mal!!!",""},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Aixó per furtar-me","el bol de cacaus,","imbèsil"},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Cert, esta me la","mereixia... però", "mira que be estàs!"},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Amb el que t'ha","costat pillar-me", "t'has ficat en forma"},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"No me vingues en","tonteries,","mamarratxo."},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Creus que no he","notat que falta mig","bol de cacaus?"},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Jejejeje, es que","estàn molt bons!", ""},die=20},
{x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Però si vols te","done del meu bol", "de tramussos."},die=20},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"TRAMUSSOS...","",""},die=10},
{x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"M'atreviré a","passar l'última","frontera...?"},die=40},
},
}
function start_scene(scene,offset)
--bkg=newsurf(128,96)
--setdest(bkg)
--setsource(0)
--draw.surf(0,0,128,96,0,0)
--setsource(tiles)
--setdest(0)
scenes.current_scene=scene
scenes.dnum=1
scenes.step=0
scenes.char=1
scenes.wait=0
scenes.offset=28
scenes.die=scenes.current_scene[scenes.dnum].die or 0
if scene[1].musica then
--print(scene[1].musica)
music.play(scenes.current_scene[scenes.dnum].musica)
end
if offset then scenes.offset=offset end
old_update=game_update
game_update=update_scene
end
function playtext(snd)
if snd=="abad" then
sound.play(audio_text_abad)
elseif snd=="batman" then
sound.play(audio_text_batman)
elseif snd=="premiere" then
sound.play(audio_text_premiere)
elseif snd=="elalien" then
sound.play(audio_text_elalien)
end
end
function draw_scene()
local txt_x = not scenes.current_scene[scenes.dnum].flip and 38 or 8
view.origin(0,scenes.offset*o2aX)
-- 0, 1, 2 -> Desplegar el cuadre de dialeg
if scenes.step==0 then
draw.rectf(0,16*o2aX,129*o2aX,2*o2aX,12)
draw.line(0,15*o2aX,128*o2aX,15*o2aX,16)
draw.line(0,18*o2aX,128*o2aX,18*o2aX,16)
elseif scenes.step==1 then
draw.rectf(0,8*o2aX,129*o2aX,19*o2aX,12)
draw.line(0,7*o2aX,128*o2aX,7*o2aX,16)
draw.line(0,27*o2aX,128*o2aX,27*o2aX,16)
elseif scenes.step==2 then
draw.rectf(0,0,129*o2aX,35*o2aX,12)
draw.line(0,0,128*o2aX,0,16)
draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16)
-- 3, 4 -> Desplegar el avatar
elseif scenes.step==3 then
if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,12*o2aX,24*o2aX,12*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,20*o2aX,10*o2aX)
else
draw.rectf(97*o2aX,12*o2aX,24*o2aX,12*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,13*o2aX,20*o2aX,10*o2aX,true)
end
elseif scenes.step==4 then
if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX)
else
draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true)
end
-- 5, 6, 7 -> Escriure les 3 frases de diàleg
elseif scenes.step==5 then
arc_textB(utf8.sub(scenes.current_scene[scenes.dnum].text[1],1,scenes.char),txt_x*o2aX,7*o2aX,2)
if scenes.char<#scenes.current_scene[scenes.dnum].text[1] then
scenes.step=scenes.step-1
scenes.char=scenes.char+1
playtext(scenes.current_scene[scenes.dnum].audio)
else
scenes.char=1
end
elseif scenes.step==6 then
arc_textB(utf8.sub(scenes.current_scene[scenes.dnum].text[2],1,scenes.char),txt_x*o2aX,15*o2aX,2)
if scenes.char<#scenes.current_scene[scenes.dnum].text[2] then
scenes.step=scenes.step-1
scenes.char=scenes.char+1
playtext(scenes.current_scene[scenes.dnum].audio)
else
scenes.char=1
end
elseif scenes.step==7 then
arc_textB(utf8.sub(scenes.current_scene[scenes.dnum].text[3],1,scenes.char),txt_x*o2aX,23*o2aX,2)
if scenes.char<#scenes.current_scene[scenes.dnum].text[3] then
scenes.step=scenes.step-1
scenes.char=scenes.char+1
playtext(scenes.current_scene[scenes.dnum].audio)
else
scenes.char=1
end
-- Render de tot lo anterior
elseif scenes.step==8 then
draw.rectf(0,0,129*o2aX,35*o2aX,12)
draw.line(0,0,128*o2aX,0,16)
draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16)
if not scenes.current_scene[scenes.dnum].flip then
draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX)
else
draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16)
draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true)
end
arc_textB(scenes.current_scene[scenes.dnum].text[1],txt_x*o2aX,7*o2aX,2)
arc_textB(scenes.current_scene[scenes.dnum].text[2],txt_x*o2aX,15*o2aX,2)
arc_textB(scenes.current_scene[scenes.dnum].text[3],txt_x*o2aX,23*o2aX,2)
end
if scenes.step<=8 then
scenes.step=scenes.step+1
end
view.origin(0,0)
end
function update_scene()
scenes.wait=scenes.wait+1
if scenes.wait>=6 then
scenes.wait=0
draw_scene()
if scenes.step>8 then
-- print("SCENES.DIE= "..scenes.die)
if scenes.die>0 then
scenes.die=scenes.die-1
if scenes.die==0 then
if scenes.dnum==#scenes.current_scene then
music.stop()
-- if batman.endgame then
-- final_init()
-- fade.fadeoutin()
-- else
game_update=old_update
-- end
else
scenes.dnum=scenes.dnum+1
scenes.die=scenes.current_scene[scenes.dnum].die or 0
scenes.step=2
end
end
else
if math.floor(sys.time()*2)%2==0 then
draw.surf(104*o2aX,88*o2aX,7*o2aX,5*o2aX,118*o2aX,56*o2aX)
else
draw.rectf(118*o2aX,56*o2aX,8*o2aX,6*o2aX,12)
end
end
end
end
if (key.press(key.ESCAPE) or pad.press(btnPause)) and (scenes.current_scene~=scenes.final) then
if scenes.current_scene[scenes.dnum].die then
game_init(true)
else
pause()
end
end
if scenes.step>8 then
if key.press(keyShoot) or key.press(keyDown) or key.press(keyUp) or key.press(keyLeft) or key.press(keyRight) or key.press(key.RETURN) or
pad.press(btnShoot) or pad.press(btnDown) or pad.press(btnUp) or pad.press(btnLeft) or pad.press(btnRight) then
if scenes.dnum==#scenes.current_scene then
music.stop()
-- if batman.endgame then
-- final_init()
-- fade.fadeoutin()
-- else
game_update=old_update
-- end
else
scenes.dnum=scenes.dnum+1
scenes.step=2
end
end
elseif key.press(keyShoot) or pad.press(btnShoot) then
scenes.step=8
end
end

108
data/trigger.lua Normal file
View File

@@ -0,0 +1,108 @@
trigger={}
function trigger.new(_hab,_x,_y,_fun)
return {hab=_hab,x=_x,y=_y,fun=_fun,update=trigger.update,draw=trigger.draw,bb={x=0,y=0,w=8,h=8}}
end
function trigger:draw()
-- do nothing
--rectfill(self.x,self.y,self.x+8,self.y+8,3)
end
function trigger:update()
if self.hab==abad.hab then
if aabb(abad,self) then
self:fun()
end
end
end
--function trigger:do_touched()
-- start_scene(self.scene)
-- remove_actor(self)
--end
triggers={}
function triggers:escena_abad_inici()
start_scene(scenes.abad_inici)
remove_actor(self)
end
function triggers:escena_abad_corfes()
start_scene(scenes.abad_corfes)
remove_actor(self)
end
function triggers:escena_abad_portes()
if abad.escena_portes==nil and ((abad.hab==31 and mapa_get_tile(abad.hab,2,4)~=256) or (abad.hab==71 and mapa_get_tile(abad.hab,6,3)~=256)) then
start_scene(scenes.abad_portes)
end
abad.escena_portes=true
remove_actor(self)
end
function triggers:escena_abad_porta_casa()
if mapa_get_tile(abad.hab,6,4)~=256 then
start_scene(scenes.abad_porta_casa)
end
remove_actor(self)
end
function triggers:escena_abad_porta_batman()
if mapa_get_tile(abad.hab,5,4)~=256 then
start_scene(scenes.abad_porta_batman)
end
remove_actor(self)
end
function triggers:escena_habitacio_batman()
if abad.objects.clau_premiere~=nil and abad.objects.clau_elalien~=nil then
switches.start(0,0)
abad.objects.clau_premiere=nil
abad.objects.clau_elalien=nil
remove_actor(self)
else
if batman.habitacio_porta_intro==nil then
start_scene(scenes.habitacio_batman)
batman.habitacio_porta_intro=true
end
end
end
function triggers:teleport_a()
abad.teleport=true
sound.play(audio_hit)
surf.cls(14)
imp.reset()
abad.hab=67
abad.x=24
end
function triggers:teleport_b()
if abad.teleport then
sound.play(audio_hit)
surf.cls(14)
imp.reset()
abad.hab=14
abad.x=16
end
end
function triggers:teleport_c()
abad.teleport2=true
sound.play(audio_hit)
surf.cls(14)
imp.reset()
abad.hab=61
abad.x=24
end
function triggers:teleport_d()
if abad.teleport2 then
sound.play(audio_hit)
surf.cls(14)
imp.reset()
abad.hab=29
abad.x=24
end
end

View File

@@ -103,7 +103,7 @@ function zombie:update_hit()
else
if self.step<self.death_time then
if self.step%2==0 then
self.frame=self.anim[4]
self.frame=self.anim[#self.anim]
else
self.frame=-1
end