192 lines
6.5 KiB
Lua
192 lines
6.5 KiB
Lua
require "fps"
|
|
require "mapa"
|
|
local viewport= require("viewport")
|
|
|
|
local arcade_config = require("arcade_config")
|
|
o2aX = arcade_config.org2arc_escala
|
|
local txr = arcade_config.tiles_per_row-1
|
|
local txr2 = arcade_config.tiles_per_row_base2
|
|
local toff= arcade_config.tiles_offset
|
|
local tw = arcade_config.tiles_width
|
|
local th = arcade_config.tiles_height
|
|
|
|
local viewp = viewport.new()
|
|
|
|
function game_init(menu)
|
|
game_update=update_game
|
|
end
|
|
|
|
-- function mapa_draw(hab)
|
|
-- for ty=0,5 do
|
|
-- for tx=0,11 do
|
|
-- local tile=mapa[1+hab][1+tx+ty*12]
|
|
-- if tile~=256 and (tile<126 or mapa.step>4) then
|
|
-- -- draw.surf((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8)
|
|
-- local txr = arcade_config.tiles_per_row-1
|
|
-- local txr2 = arcade_config.tiles_per_row_base2
|
|
-- local toff= arcade_config.tiles_offset
|
|
-- local tw = arcade_config.tiles_width
|
|
-- local th = arcade_config.tiles_height
|
|
-- draw.surf((tile&txr)*tw,toff+(tile>>txr2)*th,tw,th,tx*tw,ty*th)
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
|
|
|
|
function render_view ( x, y )
|
|
local curr_ssurf = surf.source()
|
|
local curr_tsurf = surf.target()
|
|
|
|
local nroom, room_x, room_y, tile_offset_x, tile_offset_y = viewp:tile()
|
|
-- print("COORDS= "..x..", "..y)
|
|
-- print("ROOM= "..nroom)
|
|
-- print("RCOORDS= "..room_x..", "..room_y)
|
|
-- print("TILE_OFF= "..tile_offset_x..", "..tile_offset_y)
|
|
|
|
max_tiles_col = (arcade_config.resolucion.width/arcade_config.tiles_width)+1; -- Los que caben en una pantalla y 1 parcial
|
|
max_tiles_row = (arcade_config.resolucion.height/arcade_config.tiles_height)+1; -- Los que caben en una pantalla y 1 parcial
|
|
|
|
curr_room = nroom
|
|
curr_room_x = room_x
|
|
curr_room_y = room_y
|
|
|
|
surf.target(map_buffer_extra_V)
|
|
surf.cls(16)
|
|
surf.target(map_buffer_extra_H)
|
|
surf.cls(16)
|
|
surf.target(map_buffer)
|
|
surf.cls(16)
|
|
|
|
surf.source(tiles)
|
|
|
|
tile_y = room_y
|
|
for ty=0,max_tiles_row-1 do
|
|
tile_x = room_x
|
|
|
|
if tile_y>mapa_room_rows-1 then
|
|
nroom = nroom + 10
|
|
tile_y = 0
|
|
end
|
|
|
|
curr_room = nroom
|
|
|
|
for tx=0,max_tiles_col-1 do
|
|
if tile_x>mapa_room_cols-1 then
|
|
curr_room = curr_room+1
|
|
tile_x = 0
|
|
end
|
|
if curr_room >= 80 then
|
|
break
|
|
end
|
|
local tile=mapa[1+curr_room][1+tile_x+tile_y*mapa_room_cols]
|
|
-- print("R"..curr_room.." ("..tile_x..", "..tile_y..") > "..tile)
|
|
-- print(" TILE= "..tile)
|
|
if tile~=256 and (tile<126 or mapa.step>4) then
|
|
-- draw.surf((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8)
|
|
local txr = arcade_config.tiles_per_row-1
|
|
local txr2 = arcade_config.tiles_per_row_base2
|
|
local toff= arcade_config.tiles_offset
|
|
local tw = arcade_config.tiles_width
|
|
local th = arcade_config.tiles_height
|
|
if tx==0 and ty==max_tiles_row-1 then
|
|
surf.target(map_buffer_extra_H)
|
|
draw.surf((tile&txr)*tw,toff+(tile>>txr2)*th,tw,th,tx*tw,0)
|
|
surf.target(map_buffer)
|
|
elseif tx==max_tiles_col-1 then
|
|
surf.target(map_buffer_extra_V)
|
|
draw.surf((tile&txr)*tw,toff+(tile>>txr2)*th,tw,th,0,ty*th)
|
|
surf.target(map_buffer)
|
|
else
|
|
draw.surf((tile&txr)*tw,toff+(tile>>txr2)*th,tw,th,tx*tw,ty*th)
|
|
end
|
|
end
|
|
|
|
tile_x = tile_x+1
|
|
end
|
|
|
|
tile_y = tile_y+1
|
|
end
|
|
|
|
surf.source(map_buffer)
|
|
surf.target(0)
|
|
draw.surf(tile_offset_x,tile_offset_y,viewp.width,viewp.height,0,0,viewp.width,viewp.height)
|
|
surf.source(map_buffer_extra_V)
|
|
draw.surf(0, tile_offset_y, tile_offset_x, viewp.height, viewp.width-tile_offset_x, 0, tile_offset_x, viewp.height)
|
|
surf.source(map_buffer_extra_H)
|
|
draw.surf(tile_offset_x, 0,viewp.width,tile_offset_y,0,viewp.height-tile_offset_y,viewp.width,tile_offset_y)
|
|
|
|
surf.source(curr_ssurf)
|
|
surf.source(curr_tsurf)
|
|
end
|
|
|
|
function update_game()
|
|
surf.target(0)
|
|
surf.cls(16)
|
|
|
|
-- surf.target(logo)
|
|
-- surf.cls(16)
|
|
-- draw.text("UPDATE_GAME",0,0,15)
|
|
-- surf.source(logo)
|
|
-- draw.surf(0,0,36,5,56,70,arcade_config.logo_sf.width,arcade_config.logo_sf.height)
|
|
|
|
-- render_view(10)
|
|
|
|
--- if abad.hurting == 0 then
|
|
--- draw_hab(abad.hab,0,0)
|
|
--- --text(abad.hab,1,1,2)
|
|
--- draw_hab(cameras[current_camera].hab,0,48)
|
|
--- -- text(camera_names[current_camera],2*o2aX,49*o2aX,8)
|
|
--- arc_textB(camera_names[current_camera],2*o2aX,49*o2aX,8)
|
|
---
|
|
--- score.draw()
|
|
--- surf.source(tiles)
|
|
--- -- draw.text("x"..abad.vides,114*o2aX,13*o2aX,2)
|
|
--- arc_text("x"..abad.vides,114*o2aX,13*o2aX,2)
|
|
--- draw.rectf((102+(abad.energia>>1))*o2aX,30*o2aX,(21-(abad.energia>>1))*o2aX,8*o2aX,16)
|
|
--- else
|
|
--- draw.surf(0,0,16*o2aX,9*o2aX,50*o2aX,40*o2aX,16*o2aX,9*o2aX,true)
|
|
--- if abad.hurting > 40 then
|
|
--- -- draw.text("x"..abad.vides+1,63*o2aX,43*o2aX,3)
|
|
--- arc_text("x"..abad.vides+1,63*o2aX,43*o2aX,3)
|
|
--- elseif abad.hurting < 20 then
|
|
--- -- draw.text("x"..abad.vides,63*o2aX,43*o2aX,2)
|
|
--- arc_text("x"..abad.vides,63*o2aX,43*o2aX,2)
|
|
--- end
|
|
--- end
|
|
---
|
|
--- mapa_update(abad.hab,cameras[current_camera].hab)
|
|
local vp_x, vp_y = viewp:position()
|
|
if key.down(keyRight) then
|
|
if vp_x+1<=(arcade_config.tiles_width*mapa_room_cols*(mapa_rooms_per_piso))-(arcade_config.resolucion.width) then vp_x = vp_x+1 end
|
|
elseif key.down(keyLeft) then
|
|
if vp_x>0 then vp_x = vp_x-1 end
|
|
elseif key.down(keyUp) then
|
|
if vp_y>0 then vp_y = vp_y -1 end
|
|
elseif key.down(keyDown) then
|
|
if vp_y+1<=(arcade_config.tiles_height*mapa_room_rows*mapa_pisos)-(arcade_config.resolucion.height) then vp_y = vp_y+1 end
|
|
end
|
|
viewp:position(vp_x, vp_y)
|
|
render_view(vp_x, vp_y)
|
|
fps_print()
|
|
viewp:print()
|
|
end
|
|
|
|
function draw_hab(hab,x,y,editing)
|
|
-- print(hab.." "..x.." "..y)
|
|
view.origin(x,y)
|
|
mapa_draw(hab)
|
|
|
|
-- if not editing then
|
|
-- for key,actor in pairs(actors) do
|
|
-- if actor.hab==hab then
|
|
-- actor:draw()
|
|
-- end
|
|
-- end
|
|
-- if imp.hab==hab then imp.draw() end
|
|
-- if bambolla.hab==hab then bambolla.draw() end
|
|
-- if cacau.hab==hab then cacau:draw() end
|
|
-- if fireball.hab==hab then fireball:draw() end
|
|
-- end
|
|
view.origin(0,0)
|
|
end |