From a38d5e46a0fa08cbf4c2e5b59a9cc090c3490dfa Mon Sep 17 00:00:00 2001 From: JailGamer Date: Sat, 28 Mar 2026 21:33:29 +0100 Subject: [PATCH] Premiere en el mon --- data/game.lua | 4 + data/premiere.lua | 210 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 data/premiere.lua diff --git a/data/game.lua b/data/game.lua index e37a260..bbe5581 100644 --- a/data/game.lua +++ b/data/game.lua @@ -12,6 +12,7 @@ require "bol" require "gorro" require "gps" require "peu" +require "premiere" local tile_w = arcade_config.tiles_width local tile_h = arcade_config.tiles_height @@ -39,6 +40,9 @@ function game_init(menu) peu.init() table.insert(actors,peu) + premiere.init() + table.insert(actors,premiere) + bol.init() table.insert(actors,bol) diff --git a/data/premiere.lua b/data/premiere.lua new file mode 100644 index 0000000..a9d35ee --- /dev/null +++ b/data/premiere.lua @@ -0,0 +1,210 @@ +o2aX = arcade_config.org2arc_escala +cxr = arcade_config.character_per_row-1 +cxr2 = arcade_config.character_per_row_base2 +cw = arcade_config.character_width +ch = arcade_config.character_height + +premiere={hab=75, + x=24, + y=24, + w=32, + h=32, + flip=true, + frame=12, + wait=0, + step=0, + anim={12,13,12,14}, + bb={x=4,y=0,w=8,h=16}, + scene_intro=false, + scene_object=false} + +function premiere.init() + -- premiere.x=24 + premiere.x=3 + -- premiere.y=24 + premiere.y=3 + premiere.w=32 + premiere.h=32 + premiere.frame=12 + premiere.wait=0 + premiere.step=0 + -- premiere.update=premiere.update_normal + premiere.update=premiere.update_stay + premiere.scene_intro=false + premiere.scene_object=false + local habs={75,44,20,0} + premiere.hab=habs[1+math.random(0,3)] + + local world_x, world_y = coords.room_to_world(premiere.hab,premiere.x,premiere.y) + premiere.x=world_x + premiere.y=world_y + print(premiere.hab) +end + +function premiere.draw() + -- draw.surf((premiere.frame&7)*16,(premiere.frame>>3)*16,16,16,premiere.x,premiere.y,16,16,premiere.flip) + -- draw.surf((premiere.frame&7)*cw,(premiere.frame>>cxr2)*ch,cw,ch,premiere.x*o2aX,premiere.y*o2aX,cw,ch,premiere.flip) + + draw.surf((premiere.frame&7)*cw,(premiere.frame>>cxr2)*ch,cw,ch,premiere.x*o2aX,premiere.y*o2aX,cw,ch,premiere.flip) + if viewp:inside(premiere.x, premiere.y, premiere.w, premiere.h) then + local scr_x, scr_y = viewp:screen_coords( premiere.x, premiere.y ) + -- draw.surf(premiere.x,premiere.y,premiere.w,premiere.h,scr_x,scr_y,premiere.w,premiere.h) + local x = (premiere.frame&7)*cw + local y = (premiere.frame>>cxr2)*ch + draw.surf(x,y,cw,ch,scr_x,scr_y,premiere.w,premiere.h,premiere.flip) + end +end + +function premiere.hit() +end + +function premiere.update_stay() + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + premiere.step=(premiere.step+1)%4 + premiere.frame=premiere.anim[premiere.step+1] + end +end + +function premiere.update_normal() + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + premiere.step=(premiere.step+1)%4 + premiere.frame=premiere.anim[premiere.step+1] + + local inc=12 if premiere.flip then inc=2 end + if not premiere.flip and premiere.x==84 then + premiere.hab=premiere.hab+1 + premiere.x=-4 + elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+14)0 then + if check_tile(premiere.hab,premiere.x+4,premiere.y-2)~=tiletype.block then + if (premiere.x+4)&7==0 or check_tile(premiere.hab,premiere.x+12,premiere.y-2)~=tiletype.block then + premiere.y=premiere.y-2 + end + end + else + premiere.hab=premiere.hab-10 + premiere.y=32 + end + elseif premiere.step>6 then + premiere.update=premiere.update_falling + end + premiere.step=premiere.step+1 + end + +end + +function premiere.update_falling() + premiere.frame=13 + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + + local inc=12 if premiere.flip then inc=2 end + if not premiere.flip and premiere.x==84 then + premiere.hab=premiere.hab+1 + premiere.x=-4 + elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+14)=tiletype.half or ((premiere.x+4)&7~=0 and check_tile(premiere.hab,premiere.x+12,premiere.y+16)>=tiletype.half)) then + premiere.update=premiere.update_normal + return + end + premiere.y=premiere.y+2 + else + premiere.hab=premiere.hab+10 + premiere.y=0 + end + end +end