diff --git a/data/game.lua b/data/game.lua index 4b02945..180ee40 100644 --- a/data/game.lua +++ b/data/game.lua @@ -1,8 +1,20 @@ game = { chg_adv = {x=0, y=0}, chg_step = 0, + back_buf = 0, + circ_buf = 0, + + water_pal = {6,6,21,21,6,21,6,22,22,22,22,22,22,22,22,21,21,22,22,22,22,21,22,22,21,22,22,22,22,6,6,6}, + fade_pal = {1,1,3,1,1,3,29,29,3,3,3,3,3,6,6,29,29,3,3,3,3,29,6,29,29,6,29,6,6,1,1,1}, + + light_strobe_value = 0, + light_strobe_dir = 1, enable = function() + if game.back_buf == 0 then + game.back_buf = surf.new(160,104) + game.circ_buf = surf.new(160,104) + end app.update = game.update sys.beat(2) --shader.enable(); @@ -10,7 +22,7 @@ game = { update = function() view.origin(0,0) - surf.target(0) + surf.target(game.back_buf) view.clip() score.draw() @@ -20,6 +32,26 @@ game = { sprites.update() --sprites.update_hero() + view.origin(0,0) + surf.target(0) + --surf.source(game.back_buf) + --draw.surf(0,0,160,104,0,0,160,104) + for y=0,103 do + for x=0,159 do + surf.source(game.back_buf) + local pixel = surf.pixel(x,y) + surf.source(game.circ_buf) + local light = surf.pixel(x,y) + if light==0 then + surf.pixel(x,y,1) + elseif light==1 then + surf.pixel(x,y,game.fade_pal[pixel+1]) + else + surf.pixel(x,y,pixel) + end + end + end + if key.press(key.ESCAPE) or key.press(key.F9) then editor.enable() end @@ -55,5 +87,17 @@ game = { sprites.pause_ia = false app.pop() end + end, + + draw_light = function(x,y,size) + surf.target(game.circ_buf) + local s = size+game.light_strobe_value + draw.circf(x,y,s,1) + draw.circf(x,y,2*(s/3),2) + game.light_strobe_value = game.light_strobe_value + game.light_strobe_dir + if math.abs(game.light_strobe_value)==1 then + game.light_strobe_dir = -game.light_strobe_dir + end + --surf.target(game.circ_buf) end } \ No newline at end of file diff --git a/data/rooms.lua b/data/rooms.lua index fef978a..dc146eb 100644 --- a/data/rooms.lua +++ b/data/rooms.lua @@ -108,7 +108,7 @@ rooms = { if rooms.is_visible(LAYER_FOREGROUND) then map.draw() end -- Pintem els sprites - if rooms.is_visible(LAYER_SPRITES) then + if rooms.is_visible(LAYER_SPRITES) then sprites.draw() --draw.surf(0, 0, 16, 17, 20, 15, 16, 17) end diff --git a/data/rooms_background.gif b/data/rooms_background.gif index 59833d2..d4f53f1 100644 Binary files a/data/rooms_background.gif and b/data/rooms_background.gif differ diff --git a/data/rooms_foreground.gif b/data/rooms_foreground.gif index cd40a12..e95eee8 100644 Binary files a/data/rooms_foreground.gif and b/data/rooms_foreground.gif differ diff --git a/data/rooms_items.gif b/data/rooms_items.gif index 30ece8e..d2c43c1 100644 Binary files a/data/rooms_items.gif and b/data/rooms_items.gif differ diff --git a/data/sprites.lua b/data/sprites.lua index 4b085a9..953d4b6 100644 --- a/data/sprites.lua +++ b/data/sprites.lua @@ -94,6 +94,10 @@ sprites = { update = function() if not sys.beat() then return end + + surf.target(game.circ_buf) + surf.cls() + sprites.update_sprite(sprites.hero) for i,v in ipairs(sprites.list) do sprites.update_sprite(v) @@ -203,6 +207,8 @@ sprites = { end, update_hero = function() + game.draw_light(sprites.hero.pos.x, sprites.hero.pos.y,100) + -- Update hero local anim = "hero_stand" local move_anim = "hero_walk"