Adds doors and greater chance of walls
This commit is contained in:
parent
184b42ff5a
commit
e50d40fb1c
Binary file not shown.
|
@ -3,7 +3,9 @@ local pits = {}
|
|||
local walls = {}
|
||||
local fences = {}
|
||||
local lights = {}
|
||||
local doors = {}
|
||||
local walldecor = {}
|
||||
local chest
|
||||
|
||||
local function readLayoutFile(file)
|
||||
local layoutfile = read_file(file)
|
||||
|
@ -139,6 +141,15 @@ local function setPitTile(room, matrix, i, j)
|
|||
end
|
||||
end
|
||||
|
||||
local function getDoor(matrix, i, j, topDoor, leftDoor)
|
||||
local above, below, left, right, above_left, above_right, below_left, below_right = getTileStateFor(matrix, i, j, { "#", "\"", "/"});
|
||||
if above and below then
|
||||
return leftDoor
|
||||
else
|
||||
return topDoor
|
||||
end
|
||||
end
|
||||
|
||||
local module = {}
|
||||
function module.load_textures(map, wall_xoffset, wall_yoffset)
|
||||
local t_pit0 = add_texture(map, "Objects/Pit0.png")
|
||||
|
@ -147,6 +158,8 @@ function module.load_textures(map, wall_xoffset, wall_yoffset)
|
|||
local t_fence = add_texture(map, "Objects/Fence.png")
|
||||
local t_decor0 = add_texture(map, "Objects/Decor0.png")
|
||||
local t_decor1 = add_texture(map, "Objects/Decor1.png")
|
||||
local t_door0 = add_texture(map, "Objects/Door0.png")
|
||||
local t_door1 = add_texture(map, "Objects/Door1.png")
|
||||
|
||||
local yo = (random(5) + random(3)) * (16 * 2)
|
||||
pits = {
|
||||
|
@ -198,11 +211,27 @@ function module.load_textures(map, wall_xoffset, wall_yoffset)
|
|||
bottom_t = { t_fence, nil, 64, yo + 32, true },
|
||||
}
|
||||
|
||||
doors = {
|
||||
door_top_nolock = { t_door0, t_door1, 0, 0, true },
|
||||
door_left_nolock = { t_door0, t_door1, 16, 0, true },
|
||||
door_top_silverlock = { t_door0, t_door1, 32, 0, true },
|
||||
door_left_silverlock = { t_door0, t_door1, 48, 0, true },
|
||||
door_top_goldlock = { t_door0, t_door1, 64, 0, true },
|
||||
door_left_goldlock = { t_door0, t_door1, 80, 0, true },
|
||||
gate_top_nolock = { t_door0, t_door1, 0, 32, true },
|
||||
gate_left_nolock = { t_door0, t_door1, 16, 32, true },
|
||||
gate_top_silverlock = { t_door0, t_door1, 32, 32, true },
|
||||
gate_left_silverlock = { t_door0, t_door1, 48, 32, true },
|
||||
gate_top_goldlock = { t_door0, t_door1, 64, 32, true },
|
||||
gate_left_goldlock = { t_door0, t_door1, 80, 32, true },
|
||||
}
|
||||
|
||||
lights = {
|
||||
candle0 = { t_decor0, t_decor1, 3 * 16, 8 * 16, true, true },
|
||||
candle1 = { t_decor0, t_decor1, 1 * 16, 8 * 16, true, true },
|
||||
candle2 = { t_decor0, t_decor1, 5 * 16, 8 * 16, true, false },
|
||||
}
|
||||
|
||||
walldecor = {
|
||||
topleft = {
|
||||
{ t_decor0, nil, 2 * 16, 2 * 16, false },
|
||||
|
@ -261,6 +290,8 @@ function module.load_textures(map, wall_xoffset, wall_yoffset)
|
|||
{ t_decor0, nil, 5 * 16, 2 * 16, false },
|
||||
},
|
||||
}
|
||||
|
||||
chest = { "Items/Chest0.png", "Items/Chest1.png", 16, 0}
|
||||
end
|
||||
|
||||
function createJumbleLayout(matrix)
|
||||
|
@ -299,12 +330,12 @@ function draw_layout_to_room(room, matrix, roomx, roomy)
|
|||
if matrix[i][j] == "p" then
|
||||
setPitTile(room, matrix, i, j);
|
||||
elseif matrix[i][j] == "#" then
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/"}, false)
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/", "d", "g"}, false)
|
||||
elseif matrix[i][j] == "\"" then
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/"}, false)
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/", "d", "g"}, false)
|
||||
room.decor[i][j] = lights.candle1
|
||||
elseif matrix[i][j] == "/" then
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/"}, false)
|
||||
setBlockTile(room, matrix, i, j, walls, {"#", "\"", "/", "d", "g"}, false)
|
||||
if random(2) == 1 then
|
||||
room.decor[i][j] = lights.candle1
|
||||
else
|
||||
|
@ -316,6 +347,12 @@ function draw_layout_to_room(room, matrix, roomx, roomy)
|
|||
create_shop_artifact(map, (roomx*512) + i*32, (roomy * 384) + j*32)
|
||||
elseif matrix[i][j] == "l" then
|
||||
room.decor[i][j] = lights.candle0
|
||||
elseif matrix[i][j] == "c" then
|
||||
room.chests[i][j] = chest
|
||||
elseif matrix[i][j] == "d" then
|
||||
room.doors[i][j] = getDoor(matrix, i, j, doors.door_top_nolock, doors.door_left_nolock)
|
||||
elseif matrix[i][j] == "g" then
|
||||
room.doors[i][j] = getDoor(matrix, i, j, doors.gate_top_nolock, doors.gate_left_nolock)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -331,7 +368,7 @@ function pickALayout(matrix)
|
|||
end
|
||||
|
||||
function module.add_walls_to_room(room)
|
||||
if random(3) ~= 1 then
|
||||
if random(2) == 1 then
|
||||
return false
|
||||
end
|
||||
|
||||
|
@ -354,4 +391,10 @@ function module.add_shop_layout(room, roomx, roomy)
|
|||
return true
|
||||
end
|
||||
|
||||
function module.add_locked_room_layout(room, roomx, roomy)
|
||||
local matrix = readLayoutFile("lockedroomlayouts.dat")
|
||||
draw_layout_to_room(room, matrix[random(#matrix)], roomx, roomy)
|
||||
return true
|
||||
end
|
||||
|
||||
return module
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++"#####d####"++
|
||||
++#-c--c--c--#++
|
||||
++#----------#++
|
||||
++#-c--c--c--#++
|
||||
++d----------d++
|
||||
++#-c--c--c--#++
|
||||
++#----------#++
|
||||
++"#####d####"++
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
|
@ -398,6 +398,14 @@ local function build_shop_room(room, roomx, roomy)
|
|||
return room
|
||||
end
|
||||
|
||||
local function build_locked_room(room, roomx, roomy)
|
||||
add_tiles_to_room(room, false)
|
||||
add_walls_to_room(room)
|
||||
add_exits_to_room(room)
|
||||
layoutparser.add_locked_room_layout(room, roomx, roomy)
|
||||
return room
|
||||
end
|
||||
|
||||
local function build_normal_room(room)
|
||||
local crumbling = (CURRENT_LEVEL > 3 or QUICK_MODE) and random(8) == 1
|
||||
local pitsAdded = false;
|
||||
|
@ -503,6 +511,7 @@ function module.build_room(room, roomx, roomy)
|
|||
build_shop_room(room, roomx, roomy)
|
||||
else
|
||||
build_normal_room(room)
|
||||
--build_locked_room(room, roomx, roomy)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++#--#-#-#-#-#++
|
||||
++------------++
|
||||
++---c--------++
|
||||
++/-#-#-#-#--/++
|
||||
++------------++
|
||||
++-------c----++
|
||||
++/--#-#-#-#-/++
|
||||
++------------++
|
||||
++--#-#-#-#---++
|
||||
|
@ -30,7 +30,7 @@
|
|||
++#----------#++
|
||||
++#-/#######-#++
|
||||
++--#------#-#++
|
||||
++--#--------#++
|
||||
++--d--cc--d-#++
|
||||
++#-/#######-#++
|
||||
++#----------#++
|
||||
++############++
|
||||
|
@ -40,12 +40,12 @@
|
|||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++/#--------#/++
|
||||
++##-ffffff-##++
|
||||
++##-ffffdf-##++
|
||||
++---f--c-f---++
|
||||
++---f----f---++
|
||||
++--------f---++
|
||||
++--------f---++
|
||||
++---f-c--f---++
|
||||
++---f----f---++
|
||||
++##-ffffff-##++
|
||||
++##-fdffff-##++
|
||||
++/#--------#/++
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
|
@ -53,12 +53,38 @@
|
|||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++/#ffffffff#/++
|
||||
++##--------##++
|
||||
++------------++
|
||||
++#----------#++
|
||||
++---######---++
|
||||
++---d----#---++
|
||||
++---#-cc-d---++
|
||||
++---######---++
|
||||
++------------++
|
||||
++##--------##++
|
||||
++#----------#++
|
||||
++/#ffffffff#/++
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++/##########/++
|
||||
++d-----d----d++
|
||||
++#c----#---c#++
|
||||
++############++
|
||||
++#----#-----#++
|
||||
++#-c--d--c--#++
|
||||
++d----#-----d++
|
||||
++/##########/++
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
||||
++/####-#####/++
|
||||
++#--c#-#c---#++
|
||||
++d---#-#----d++
|
||||
++#####-######++
|
||||
++------------++
|
||||
++#####-######++
|
||||
++d--c#-#c---d++
|
||||
++/####-#####/++
|
||||
++++++++++++++++
|
||||
++++++++++++++++
|
|
@ -149,6 +149,7 @@ map_add_door(Map *map, Position *tile_pos, MapTile *tile)
|
|||
Room *room = map->rooms[cr->x][cr->y];
|
||||
switch_tile(map, tile_pos, tile, &room->doors[tile_pos->x][tile_pos->y]);
|
||||
tile->door = true;
|
||||
tile->sprite->texture_index = 0;
|
||||
tile->sprite->animate = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -271,12 +271,14 @@ l_add_tile(lua_State *L)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
l_add_wall(lua_State *L)
|
||||
{
|
||||
extract_tile_data(L, &map_add_wall);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
l_add_door(lua_State *L)
|
||||
{
|
||||
extract_tile_data(L, &map_add_door);
|
||||
|
|
|
@ -88,6 +88,7 @@ load_effects(void)
|
|||
effects[FADE_IN] = load_effect("Sounds/FX/fade_in.wav");
|
||||
effects[FADE_OUT] = load_effect("Sounds/FX/fade_out.wav");
|
||||
effects[BURST] = load_effect("Sounds/FX/burst.wav");
|
||||
effects[DOOR_OPEN] = load_effect("Sounds/FX/door_open.wav");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -64,6 +64,7 @@ typedef enum Fx_t {
|
|||
FADE_IN,
|
||||
FADE_OUT,
|
||||
BURST,
|
||||
DOOR_OPEN,
|
||||
LAST_EFFECT
|
||||
} Fx;
|
||||
|
||||
|
|
|
@ -239,6 +239,10 @@ has_collided(Player *player, RoomMatrix *matrix, Vector2d direction)
|
|||
gamecontroller_rumble(0.30f, 100);
|
||||
if (space->monster) {
|
||||
on_monster_collision(player, space->monster, matrix, direction);
|
||||
} else if (space->door) {
|
||||
mixer_play_effect(DOOR_OPEN);
|
||||
space->door->sprite->texture_index = 1;
|
||||
space->door->collider = false;
|
||||
} else {
|
||||
mixer_play_effect(BONK);
|
||||
camera_shake(direction, 100);
|
||||
|
|
Loading…
Reference in New Issue