debug = require "debug" arcade_config = require("arcade_config") coords = require "coords" require "fps" require "fade" require "audio" require "map" require "mapa" require "logo" require "intro" require "game" require "switches" -- require "scenes" coords.set_config({ tiles_width = arcade_config.tiles_width, tiles_height = arcade_config.tiles_height, room_cols = mapa_room_cols, room_rows = mapa_room_rows, rooms_per_floor = mapa_rooms_per_piso, }) function editor_to_map_tile(editor_tile) local result = 0 if editor_tile<256 then result = editor_tile + arcade_config.tiles_offset end return result end function map_to_editor_tile(map_tile) local result = map_tile - arcade_config.tiles_offset if map_tile==0 then result = 256 end return result end function load_tilemap( sf_mapa ) local mapa_tw, mapa_th = surf.size(sf_mapa) local nrooms = mapa_rooms_per_piso*mapa_pisos local x = 0 local y = 0 local yroom = 0 local xroom = 0 map.surf(sf_mapa) for ty=0,mapa_th-1 do if y == mapa_room_rows then yroom = yroom + mapa_rooms_per_piso y = 0 end xroom = yroom for tx=0,mapa_tw-1 do local tile=editor_to_map_tile(mapa[1+xroom][1+x+y*mapa_room_cols]) map.tile(tx, ty, tile) x = x + 1 if x == mapa_room_cols then x = 0 xroom = xroom + 1 end end y = y +1 end end function mini.init() tiles=surf.load("tiles.gif") surf.source(tiles) local paleta=pal.load("tiles.gif") pal.set(paleta) logo=surf.new(arcade_config.logo_sf.width,arcade_config.logo_sf.height) back=surf.new(arcade_config.surface.width,arcade_config.surface.height) sf_mapa=surf.new(mapa_room_cols*mapa_rooms_per_piso,mapa_room_rows*mapa_pisos) load_tilemap( sf_mapa ) fade.init() font_sf=font.load("X2_font.fnt") textsf=surf.new(arcade_config.org_resolucion.width,arcade_config.org_resolucion.height) -- Càrrega dels audios audio_text_abad = sound.load(audio_text_abad) audio_text_premiere = sound.load(audio_text_premiere) audio_text_elalien = sound.load(audio_text_elalien) audio_text_batman = sound.load(audio_text_batman) audio_abad_jump = sound.load(audio_abad_jump) audio_abad_fall = sound.load(audio_abad_fall) audio_abad_hit = sound.load(audio_abad_hit) audio_abad_shot = sound.load(audio_abad_shot) audio_abad_step[1] = sound.load(audio_abad_step[1]) audio_abad_step[2] = sound.load(audio_abad_step[2]) audio_abad_step[3] = sound.load(audio_abad_step[3]) audio_abad_step[4] = audio_abad_step[2] audio_switch = sound.load(audio_switch) audio_hit = sound.load(audio_hit) audio_low = sound.load(audio_low) -- Configuració dels input keyUp = tonumber(config.key("keyup")) or key.UP keyDown = tonumber(config.key("keydown")) or key.DOWN keyLeft = tonumber(config.key("keyleft")) or key.LEFT keyRight = tonumber(config.key("keyright")) or key.RIGHT keyJump = tonumber(config.key("keyjump")) or key.UP keyShoot = tonumber(config.key("keyshoot")) or key.SPACE btnUp = tonumber(config.key("btnup")) or pad.UP btnDown = tonumber(config.key("btndown")) or pad.DOWN btnLeft = tonumber(config.key("btnleft")) or pad.LEFT btnRight = tonumber(config.key("btnright")) or pad.RIGHT btnJump = tonumber(config.key("btnjump")) or pad.B btnShoot = tonumber(config.key("btnshoot")) or pad.A btnCycle1 = tonumber(config.key("btncycle1")) or pad.RIGHTSHOULDER btnCycle2 = tonumber(config.key("btncycle2")) or pad.LEFTSHOULDER btnPause = tonumber(config.key("btnpause")) or pad.START -- logo_init() -- intro_init() game_init() -- final_init() end function mini.update() if key.press(key.F1) then win.zoom(win.zoom()-1) elseif key.press(key.F2) then win.zoom(win.zoom()+1) elseif key.press(key.F3) then local fs = win.fullscreen() win.fullscreen(not fs) win.cursor(fs) end if (game_update) then game_update() end end function arc_text(str, x, y, col) local curr_surf_tgt = surf.target() local curr_surf_src = surf.source() local sw = arcade_config.org_resolucion.width local sh = arcade_config.org_resolucion.height local dw = arcade_config.resolucion.width local dh = arcade_config.resolucion.height surf.target(textsf) surf.cls(0) draw.text(str,0,0,col) -- print("arc_ "..str) surf.source(textsf) surf.target(curr_surf_tgt) draw.surf(0,0,sw,sh,x,y,dw,dh) surf.source(curr_surf_src) end function arc_textB(str, x, y, col, colB) local ox, oy = view.origin() local curr_surf_tgt = surf.target() local curr_surf_src = surf.source() local sw = arcade_config.org_resolucion.width local sh = arcade_config.org_resolucion.height local dw = arcade_config.resolucion.width local dh = arcade_config.resolucion.height colB = colB or 16 surf.target(textsf) view.origin(0,0) surf.cls(0) draw.text(str,0,0,colB) draw.text(str,1,0,colB) draw.text(str,2,0,colB) draw.text(str,0,1,colB) draw.text(str,2,1,colB) draw.text(str,0,2,colB) draw.text(str,1,2,colB) draw.text(str,2,2,colB) draw.text(str,1,1,col) -- print("arc_B "..str) surf.source(textsf) surf.target(curr_surf_tgt) view.origin(ox,oy) draw.surf(0,0,sw,sh,x,y,dw,dh) surf.source(curr_surf_src) end -- DEBUG -- Imprime cualquier valor, incluyendo tablas anidadas function dump(value, indent) indent = indent or "" if type(value) ~= "table" then return tostring(value) end local parts = {"{"} for k, v in pairs(value) do local key = (type(k) == "string") and k or "["..tostring(k).."]" table.insert(parts, string.format("%s %s = %s,", indent, key, dump(v, indent.." "))) end table.insert(parts, indent.."}") return table.concat(parts, "\n") end function msg_print(x, y, msg, direct_print ) local scr_x, scr_y direct_print = direct_print or false if direct_print then scr_x = x scr_y = y else scr_x, scr_y = viewp:screen_coords(x, y) end draw.rectf(scr_x,scr_y,45,7,16) draw.text(msg,scr_x+1,scr_y+1,2) end function view_coord(x, y, w, h, color) local scr_x, scr_y = viewp:screen_coords(x, y) draw.rect(scr_x, scr_y, w, h, color) end function debug.write_tile(x, y, yplus, print_type, align ) local scr_x, scr_y = viewp:screen_coords(x, y) local hab, xx, yy = coords.world_to_tile(x, y) yplus = yplus or 0 print_type = print_type or false align = align or "R" local txt_offset = -7 if align=="R" then txt_offset = -14 elseif align=="L" then txt_offset = 0 end draw.rectf(scr_x+txt_offset,scr_y+yplus,14,7,16) -- local msg = mapa_get_tile(hab,xx,yy) local msg = arc_get_tile(x,y) if print_type then msg = msg.." "..arc_check_tile(x, y) end draw.text(msg,scr_x+txt_offset+1,scr_y+1+yplus,2) end