From 56807c2285ba112a5c4fff49eb2f5998a908bb2c Mon Sep 17 00:00:00 2001 From: JailGamer Date: Wed, 1 Apr 2026 21:58:41 +0200 Subject: [PATCH] Escenes funcionant. Altres correccions menors. --- data/caco.lua | 2 +- data/game.lua | 3 +- data/intro.lua | 119 ++++++++--------- data/logo.lua | 3 +- data/main.lua | 66 +++------- data/scenes.lua | 328 +++++++++++++++++++++++++++++++++++++++++++++++ data/trigger.lua | 108 ++++++++++++++++ data/zombie.lua | 2 +- 8 files changed, 515 insertions(+), 116 deletions(-) create mode 100644 data/scenes.lua create mode 100644 data/trigger.lua diff --git a/data/caco.lua b/data/caco.lua index 9f111e7..1ceb7ec 100644 --- a/data/caco.lua +++ b/data/caco.lua @@ -164,7 +164,7 @@ function caco:update_hit() if self.step 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 diff --git a/data/trigger.lua b/data/trigger.lua new file mode 100644 index 0000000..882ae17 --- /dev/null +++ b/data/trigger.lua @@ -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 diff --git a/data/zombie.lua b/data/zombie.lua index 49eade6..39d9b78 100644 --- a/data/zombie.lua +++ b/data/zombie.lua @@ -103,7 +103,7 @@ function zombie:update_hit() else if self.step