diff --git a/data/batarang.lua b/data/batarang.lua new file mode 100644 index 0000000..91c0e64 --- /dev/null +++ b/data/batarang.lua @@ -0,0 +1,39 @@ +require "mapa" + +batarang = { + items = {}, + cooldown = 0, + dx = 8, + + draw = function() + surf.source(batman.surface) + for i, k in pairs(batarang.items) do + local flip_h, flip_v = false, false + if k.s==1 or k.s==2 then flip_v = true end + if k.s==2 or k.s==3 then flip_h = true end + draw.surf(123,27,5,5,k.x,k.y,5,5, flip_h, flip_v) + end + end, + + update = function() + if batarang.cooldown > 0 then batarang.cooldown = batarang.cooldown - 1 end + for i, k in pairs(batarang.items) do + local tx, ty = ((k.x+2)//8), ((k.y+2)//8) + if (mapa.isSolid(tx,ty)) then + batarang.items[i] = nil + else + k.x = k.x + k.dx + k.s = k.s + 1 + if (k.s==4) then k.s = 0 end + end + end + end, + + new = function(x,y,flip) + --if batarang.cooldown == 0 then + table.insert(batarang.items, {x=x, y=y, s=0, dx=flip and -8 or 8}) + -- batarang.cooldown = 5 + --end + end, + +} \ No newline at end of file diff --git a/data/batman.gif b/data/batman.gif index 63029e3..7e691c5 100644 Binary files a/data/batman.gif and b/data/batman.gif differ diff --git a/data/batman.lua b/data/batman.lua index 7994bd7..8f0a360 100644 --- a/data/batman.lua +++ b/data/batman.lua @@ -1,6 +1,8 @@ +require "batarang" + batman = { - states = {IDLE=1, WALK=2, JUMP=3, FALL=4, STAIRS=5, GRAPPLING=6, PROPELLED=7}, + states = {IDLE=1, WALK=2, JUMP=3, FALL=4, STAIRS=5, GRAPPLING=6, PROPELLED=7, SHOOT=8}, x = 7*8, y = 14*8, surface = nil, @@ -35,6 +37,15 @@ batman = { batman.frame = batman.frame + 1 if batman.frame > #batman.frames then batman.frame = 1 end + if batman.state == batman.states.SHOOT then + if batman.frame == 3 then + batarang.new(batman.x+8, batman.y+8, batman.flip) + elseif batman.frame == 5 then + batman.state = batman.states.IDLE + batman.frames = {0} + batman.frame = 1 + end + end -- Si està IDLE if batman.state == batman.states.IDLE then -- Mirem si comença a caminar @@ -79,6 +90,12 @@ batman = { batman.frames = {6} batman.frame = 1 end + elseif key.down(key.Z) then + --if batarang.cooldown==0 then + batman.state = batman.states.SHOOT + batman.frames = {5,6,7,7,7} + batman.frame = 1 + --end end -- Mirem si ha de caure local tx1, tx2, ty = ((batman.x+4)//8), ((batman.x+10)//8), ((batman.y+16)//8) @@ -119,6 +136,12 @@ batman = { if key.down(key.X) then batman.state = batman.states.JUMP batman.jump_counter = 0 + elseif key.down(key.Z) then + --if batarang.cooldown==0 then + batman.state = batman.states.SHOOT + batman.frames = {5,6,7,7,7} + batman.frame = 1 + -- end end end diff --git a/data/game.lua b/data/game.lua index 1e74169..6d2b7b2 100644 --- a/data/game.lua +++ b/data/game.lua @@ -1,5 +1,6 @@ require "mapa" require "batman" +require "batarang" game = { num = 1, @@ -20,12 +21,14 @@ game = { surf.cls(66) mapa.draw(1) + batarang.draw() if batman.layer==1 then batman.draw() end mapa.draw(2) if batman.layer==2 then batman.draw() end if sys.beat() then batman.update() + batarang.update() end --view.origin(0,0)