diff --git a/data/actors.lua b/data/actors.lua index 388eb2e..ea09efd 100644 --- a/data/actors.lua +++ b/data/actors.lua @@ -2,6 +2,7 @@ actors={ list={}, updating=false, main={}, + under_cursor="", init=function() actors.list={} @@ -45,11 +46,20 @@ actors={ end, draw=function() + actors.under_cursor="" for i,v in ipairs(actors.list) do local frame=((v.dx+v.dy)%2)*16 local x,y = v.x, v.y if v.ox then x = x + v.ox end if v.oy then y = y + v.oy end + + local mx = math.floor((mousex()-game.cam.x)/8) + local my = math.floor((mousey()-game.cam.y)/8) + if (mx==x or mx==x+1) and (my==y or my==y-1) then + actors.under_cursor=v.name + subpal(1,16,8) + end + if v.o=='u' then sspr(v.gfx.x+frame,v.gfx.y+16,16,16,x*8+v.dx*2,y*8-12+v.dy*2,16,16,v.dy>1) elseif v.o=='d' then @@ -59,6 +69,8 @@ actors={ elseif v.o=='r' then sspr(v.gfx.x+frame,v.gfx.y+32,16,16,x*8+v.dx*2,y*8-12+v.dy*2,16,16,true) end + + if not btn(KEY_LSHIFT) then subpal() end end end, diff --git a/data/brymode.lua b/data/brymode.lua new file mode 100644 index 0000000..678cb76 --- /dev/null +++ b/data/brymode.lua @@ -0,0 +1,34 @@ +brymode = { + old_update=nil, + return_function=nil, + + show=function(retfun) + brymode.old_update=update + update=brymode.update + brymode.return_function=retfun + + cls(0) + prnt("#include ",1,1,8) + prnt("int main(int argc, char *argv[])",1,1+6*2,8) + prnt("{",1,1+6*3,8) + prnt("SDL_Init(SDL_INIT_EVERYTHING);",21,1+6*4,8) + prnt("SDL_Window *win=",21,1+6*6,8) + prnt("SDL_CreateWindow('Title',320,240);",29,1+6*7,8) + prnt("SDL_Renderer *ren =",21,1+6*9,8) + prnt("SDL_CreateRenderer(win,-1,0);",29,1+6*10,8) + prnt("SDL_Quit();",21,1+6*12,8) + prnt("return 0;",21,1+6*13,8) + prnt("}",1,1+6*14,8) + end, + + update=function() + --cls(0) + + if btnp(KEY_ESCAPE) then + if brymode.return_function then + update=brymode.old_update + brymode.return_function() + end + end + end +} \ No newline at end of file diff --git a/data/game.ini b/data/game.ini index 4f5ace8..b01005d 100644 --- a/data/game.ini +++ b/data/game.ini @@ -3,4 +3,4 @@ config=ja2 width=160 height=144 zoom=4 -files=fade.lua,objects.lua,wait.lua,switches.lua,scene.lua,balloon.lua,actors.lua,game.lua,mapa.lua,editor.lua,textbox.lua,menu.lua,m_arq.lua,m_prac3.lua,m_prac2.lua,m_prac1.lua,m_jail1.lua,main.lua +files=brymode.lua,fade.lua,objects.lua,wait.lua,switches.lua,scene.lua,balloon.lua,actors.lua,game.lua,mapa.lua,editor.lua,textbox.lua,menu.lua,m_arq.lua,m_prac3.lua,m_prac2.lua,m_prac1.lua,m_jail1.lua,main.lua diff --git a/data/game.lua b/data/game.lua index 3a628ad..541e67d 100644 --- a/data/game.lua +++ b/data/game.lua @@ -4,6 +4,7 @@ require "objects" require "scene" require "wait" require "switches" +require "brymode" levels={} @@ -19,8 +20,8 @@ game={ restart=function() flags={} objects.list={} - actors.main={name="jailer",x=9,y=14,o="u",gfx={x=32,y=0},level="repro"} - game.init("repro") + actors.main={name="jailer",x=8,y=5,o="u",gfx={x=32,y=0},level="prac2"} + game.init("prac2") end, init=function(levelname,f,objs) @@ -30,6 +31,7 @@ game={ game.level=levelname actors.init() + switches.reset() if actors.main.level==levelname then actors.add({name=actors.main.name,x=actors.main.x,y=actors.main.y,o=actors.main.o,gfx=actors.main.gfx}) end @@ -47,10 +49,11 @@ game={ show_menu=function() game.pause() - menu.show({ {"GUARDAR PARTIDA", game.save}, - {"CARREGAR PARTIDA", game.load}, - {"EIXIR", main_init}, - }, game.resume) + brymode.show(game.resume) + --menu.show({ {"GUARDAR PARTIDA", game.save}, + -- {"CARREGAR PARTIDA", game.load}, + -- {"EIXIR", main_init}, + -- }, game.resume) end, save=function() @@ -111,6 +114,29 @@ game={ game.init(level_name,new_flags,new_objects) end, + draw=function() + cls(6) + camera(game.cam.x, game.cam.y) + setsource(tiles) + setmap(mapa.surface) + map(0,0,0,0,mapa.w, mapa.h) + switches.draw(); + setsource(sprites) + if btn(KEY_LSHIFT) then subpal(1,16,8) end + actors.draw() + subpal() + if actors.under_cursor~="" then + text(actors.under_cursor,mousex()+8,mousey()+8,9) + end + if mapa.front_layer then + setsource(tiles) + setmap(mapa.front_layer) + map(0,0,0,0,mapa.w, mapa.h) + end + setmap(mapa.surface) + camera(0,0) + end, + update=function() if game.paused then return end @@ -123,20 +149,12 @@ game={ if game.cam.y+144 > mapa.h*8 then game.cam.y = mapa.h*8-144 end if game.cam.y < 0 then game.cam.y=0 end end - cls(6) - camera(game.cam.x, game.cam.y) - setsource(tiles) - setmap(mapa.surface) - map(0,0,0,0,mapa.w, mapa.h) - setsource(sprites) - actors.draw() - if mapa.front_layer then - setsource(tiles) - setmap(mapa.front_layer) - map(0,0,0,0,mapa.w, mapa.h) - end - setmap(mapa.surface) - camera(0,0) + + game.draw() + + local mx = math.floor((mousex()-game.cam.x)/8) + local my = math.floor((mousey()-game.cam.y)/8) + text(mx..","..my,1,19,8) text(game.cam.x..","..game.cam.y,1,1,8) if hero then diff --git a/data/main.lua b/data/main.lua index 2ce9761..895c111 100644 --- a/data/main.lua +++ b/data/main.lua @@ -35,7 +35,7 @@ function text(txt,x,y,col) end function main_init() - set_update(menu_update) + --set_update(menu_update) second_menu = {{"PEIV", function() end},{"TORNAR",show_main_menu}} main_menu = { {"JUGAR", game.restart}, {"EDITOR", editor.init}, {"EIXIR", quit}, {"TEST", function() menu.show(second_menu) end } } show_main_menu() diff --git a/data/scene.lua b/data/scene.lua index 0209505..95a3cec 100644 --- a/data/scene.lua +++ b/data/scene.lua @@ -9,6 +9,7 @@ scene={ end, cont=function() + game.draw() if scene.script==nil then return end scene.pos=scene.pos+1 if scene.script[scene.pos]==nil then diff --git a/data/switches.lua b/data/switches.lua index 758b139..3b4f709 100644 --- a/data/switches.lua +++ b/data/switches.lua @@ -1,5 +1,10 @@ switches={ list={}, + col=0, + + reset=function() + switches.list={} + end, add=function(switch) if not switch.w then switch.w=1 end @@ -15,4 +20,14 @@ switches={ end return nil end, + + draw=function() + text(#switches.list,1,25,8) + if switches.col<16 then + for i,v in ipairs(switches.list) do + rect(v.x*8, v.y*8, (v.x+v.w+1)*8-1, (v.y+v.h)*8-1, 8); + end + end + switches.col=(switches.col+1)%32 + end, } \ No newline at end of file