- Les vores de baix de les portes son configurables
- En les portes de davant, si el piso està a ras tenen el mateix floor, sinó tenen el primer (per a que contraste)
This commit is contained in:
@@ -17,11 +17,12 @@ int room_color = 9;
|
|||||||
int room_floor = 0;
|
int room_floor = 0;
|
||||||
int room_walls = 0;
|
int room_walls = 0;
|
||||||
int room_doors = 0;
|
int room_doors = 0;
|
||||||
|
int room_walldoors = 0;
|
||||||
|
|
||||||
void restart()
|
void restart()
|
||||||
{
|
{
|
||||||
actor::clear();
|
actor::clear();
|
||||||
room::load(room_w, room_h, room_xp, room_xn, room_yp, room_yn, room_color, room_floor, room_walls, room_doors);
|
room::load(room_w, room_h, room_xp, room_xn, room_yp, room_yn, room_color, room_floor, room_walls, room_doors, room_walldoors);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
box = actor::create("ASCENSOR",{16,32,0}, {8,8,4}, {64,0,32,24}, {0,24});
|
box = actor::create("ASCENSOR",{16,32,0}, {8,8,4}, {64,0,32,24}, {0,24});
|
||||||
@@ -31,7 +32,7 @@ void restart()
|
|||||||
actor::setDirty(box, true);
|
actor::setDirty(box, true);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
actor::actor_t *box = actor::create("BOX", {32,32,16}, {8,8,8}, {32,0,32,32}, {0,32});
|
actor::actor_t *box = actor::create("BOX", {32,32,16}, {8,8,8}, "test.gif", {32,0,32,32}, {0,32});
|
||||||
box->flags = FLAG_PUSHABLE | FLAG_GRAVITY;
|
box->flags = FLAG_PUSHABLE | FLAG_GRAVITY;
|
||||||
box->movement = MOV_CW;
|
box->movement = MOV_CW;
|
||||||
box->mov_push = PUSH_XN;
|
box->mov_push = PUSH_XN;
|
||||||
@@ -54,7 +55,7 @@ void game::init()
|
|||||||
draw::loadPalette("test.gif");
|
draw::loadPalette("test.gif");
|
||||||
game::setUpdateTicks(64);
|
game::setUpdateTicks(64);
|
||||||
|
|
||||||
actor::actor_t *hero = actor::create("HERO", {16,32,8}, {8,8,12}, {0,32,20,32}, {-6,38});
|
actor::actor_t *hero = actor::create("HERO", {16,32,8}, {8,8,12}, "test.gif", {0,32,20,32}, {-6,38});
|
||||||
hero->flags = FLAG_HERO | FLAG_PUSHABLE | FLAG_GRAVITY | FLAG_ORIENTABLE | FLAG_ANIMATED;
|
hero->flags = FLAG_HERO | FLAG_PUSHABLE | FLAG_GRAVITY | FLAG_ORIENTABLE | FLAG_ANIMATED;
|
||||||
actor::setDirty(hero, true);
|
actor::setDirty(hero, true);
|
||||||
|
|
||||||
@@ -122,7 +123,8 @@ bool game::loop()
|
|||||||
btn("COLOR:", 330, 110, room_color, 5, 11);
|
btn("COLOR:", 330, 110, room_color, 5, 11);
|
||||||
btn("FLOOR:", 330, 125, room_floor, 0, 5);
|
btn("FLOOR:", 330, 125, room_floor, 0, 5);
|
||||||
btn("WALLS:", 330, 140, room_walls, 0, 5);
|
btn("WALLS:", 330, 140, room_walls, 0, 5);
|
||||||
btn("DOORS:", 330, 155, room_doors, 0, 2);
|
btn("DOORS:", 330, 155, room_doors, 0, 4);
|
||||||
|
btn("WDOORS:", 330, 170, room_walldoors, 0, 5);
|
||||||
|
|
||||||
draw::render();
|
draw::render();
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ namespace room
|
|||||||
static uint8_t floor_type = 0;
|
static uint8_t floor_type = 0;
|
||||||
static uint8_t walls_type = 0;
|
static uint8_t walls_type = 0;
|
||||||
static uint8_t doors_type = 0;
|
static uint8_t doors_type = 0;
|
||||||
|
static uint8_t walldoors_type = 0;
|
||||||
|
|
||||||
static draw::surface *floor_surf = nullptr;
|
static draw::surface *floor_surf = nullptr;
|
||||||
static draw::surface *walls_surf = nullptr;
|
static draw::surface *walls_surf = nullptr;
|
||||||
@@ -36,13 +37,14 @@ namespace room
|
|||||||
aux_surf = draw::loadSurface("roomaux.gif");
|
aux_surf = draw::loadSurface("roomaux.gif");
|
||||||
}
|
}
|
||||||
|
|
||||||
void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col, uint8_t floor, uint8_t walls, uint8_t door)
|
void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col, uint8_t floor, uint8_t walls, uint8_t door, uint8_t walldoor)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
color = col;
|
color = col;
|
||||||
floor_type = floor;
|
floor_type = floor;
|
||||||
walls_type = walls;
|
walls_type = walls;
|
||||||
doors_type = door;
|
doors_type = door;
|
||||||
|
walldoors_type = walldoor;
|
||||||
size = {(x+1)*2,(y+1)*2,3};
|
size = {(x+1)*2,(y+1)*2,3};
|
||||||
tmin = {3-x,3-y,0};
|
tmin = {3-x,3-y,0};
|
||||||
tmax = {4+x,4+y,3};
|
tmax = {4+x,4+y,3};
|
||||||
@@ -56,20 +58,22 @@ namespace room
|
|||||||
|
|
||||||
if (doors & DOOR_YP)
|
if (doors & DOOR_YP)
|
||||||
{
|
{
|
||||||
actor::actor_t *act = actor::create("DOOR_YP1", {24,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, {0,1,32,15}, {0,15+door_height[2]*8});
|
uint8_t actual_floor = door_height[2]>0?0:floor_type*32;
|
||||||
|
actor::actor_t *act = actor::create("DOOR_YP1", {24,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[2]*8});
|
||||||
act->flags = FLAG_NONE;
|
act->flags = FLAG_NONE;
|
||||||
actor::setDirty(act, true);
|
actor::setDirty(act, true);
|
||||||
act = actor::create("DOOR_YP2", {32,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, {0,1,32,15}, {0,15+door_height[2]*8});
|
act = actor::create("DOOR_YP2", {32,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[2]*8});
|
||||||
act->flags = FLAG_NONE;
|
act->flags = FLAG_NONE;
|
||||||
actor::setDirty(act, true);
|
actor::setDirty(act, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doors & DOOR_XP)
|
if (doors & DOOR_XP)
|
||||||
{
|
{
|
||||||
actor::actor_t *act = actor::create("DOOR_XP1", {(tmax.x+1)*8,24,0}, {8,8,(door_height[0])*4}, {0,1,32,15}, {0,15+door_height[0]*8});
|
uint8_t actual_floor = door_height[0]>0?0:floor_type*32;
|
||||||
|
actor::actor_t *act = actor::create("DOOR_XP1", {(tmax.x+1)*8,24,0}, {8,8,(door_height[0])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[0]*8});
|
||||||
act->flags = FLAG_NONE;
|
act->flags = FLAG_NONE;
|
||||||
actor::setDirty(act, true);
|
actor::setDirty(act, true);
|
||||||
act = actor::create("DOOR_XP2", {(tmax.x+1)*8,32,0}, {8,8,(door_height[0])*4}, {0,1,32,15}, {0,15+door_height[0]*8});
|
act = actor::create("DOOR_XP2", {(tmax.x+1)*8,32,0}, {8,8,(door_height[0])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[0]*8});
|
||||||
act->flags = FLAG_NONE;
|
act->flags = FLAG_NONE;
|
||||||
actor::setDirty(act, true);
|
actor::setDirty(act, true);
|
||||||
}
|
}
|
||||||
@@ -86,8 +90,8 @@ namespace room
|
|||||||
// Si la porta està elevada, pintar la part frontal de baix de la porta
|
// Si la porta està elevada, pintar la part frontal de baix de la porta
|
||||||
if (door_height[3] > 0) {
|
if (door_height[3] > 0) {
|
||||||
draw::setSource(walls_surf);
|
draw::setSource(walls_surf);
|
||||||
draw::draw( 164+3*16-tmin.y*16, (36+3*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walls_type*16, (5-door_height[3])*8);
|
draw::draw( 164+3*16-tmin.y*16, (36+3*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walldoors_type*16, (5-door_height[3])*8);
|
||||||
draw::draw( 164+4*16-tmin.y*16, (36+4*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walls_type*16, (5-door_height[3])*8);
|
draw::draw( 164+4*16-tmin.y*16, (36+4*8+tmin.y*8) + (5-door_height[3])*8, 16, 48-(5-door_height[3])*8, walldoors_type*16, (5-door_height[3])*8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pintem els dos tiles baix de la porta
|
// Pintem els dos tiles baix de la porta
|
||||||
@@ -108,8 +112,8 @@ namespace room
|
|||||||
// Si la porta està elevada, pintar la part frontal de baix de la porta
|
// Si la porta està elevada, pintar la part frontal de baix de la porta
|
||||||
if (door_height[1] > 0) {
|
if (door_height[1] > 0) {
|
||||||
draw::setSource(walls_surf);
|
draw::setSource(walls_surf);
|
||||||
draw::draw(148+tmin.x*16-3*16, (36+tmin.x*8+3*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, walls_type*16, (5-door_height[1])*8, DRAW_FLIP_HORIZONTAL);
|
draw::draw(148+tmin.x*16-3*16, (36+tmin.x*8+3*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, walldoors_type*16, (5-door_height[1])*8, DRAW_FLIP_HORIZONTAL);
|
||||||
draw::draw(148+tmin.x*16-4*16, (36+tmin.x*8+4*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, walls_type*16, (5-door_height[1])*8, DRAW_FLIP_HORIZONTAL);
|
draw::draw(148+tmin.x*16-4*16, (36+tmin.x*8+4*8)+(5-door_height[1])*8, 16, 48-(5-door_height[1])*8, walldoors_type*16, (5-door_height[1])*8, DRAW_FLIP_HORIZONTAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pintem els dos tiles baix de la porta
|
// Pintem els dos tiles baix de la porta
|
||||||
@@ -162,9 +166,9 @@ namespace room
|
|||||||
{
|
{
|
||||||
// Pintem les voreres dels dos tiles extra per a la porta YP
|
// Pintem les voreres dels dos tiles extra per a la porta YP
|
||||||
draw::setSource(walls_surf);
|
draw::setSource(walls_surf);
|
||||||
draw::draw(164+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walls_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
draw::draw(164+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walldoors_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
||||||
draw::draw(148+3*16-(tmax.y+1)*16, -door_height[2]*8+84+3*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walls_type*16, 1);
|
draw::draw(148+3*16-(tmax.y+1)*16, -door_height[2]*8+84+3*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walldoors_type*16, 1);
|
||||||
draw::draw(148+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walls_type*16, 1);
|
draw::draw(148+4*16-(tmax.y+1)*16, -door_height[2]*8+84+4*8+(tmax.y+1)*8, 16, 15+door_height[2]*8, walldoors_type*16, 1);
|
||||||
|
|
||||||
draw::setSource(aux_surf);
|
draw::setSource(aux_surf);
|
||||||
draw::draw(164+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 16, 0);
|
draw::draw(164+4*16-(tmax.y+1)*16, 91+4*8+(tmax.y+1)*8, 16, 8, 16, 0);
|
||||||
@@ -179,9 +183,9 @@ namespace room
|
|||||||
{
|
{
|
||||||
// Pintem les voreres dels dos tiles extra per a la porta XP
|
// Pintem les voreres dels dos tiles extra per a la porta XP
|
||||||
draw::setSource(walls_surf);
|
draw::setSource(walls_surf);
|
||||||
draw::draw(148+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,walls_type*16, 1);
|
draw::draw(148+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,walldoors_type*16, 1);
|
||||||
draw::draw(164+(tmax.x+1)*16-3*16, -door_height[0]*8+84+(tmax.x+1)*8+3*8,16,15+door_height[0]*8,walls_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
draw::draw(164+(tmax.x+1)*16-3*16, -door_height[0]*8+84+(tmax.x+1)*8+3*8,16,15+door_height[0]*8,walldoors_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
||||||
draw::draw(164+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,walls_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
draw::draw(164+(tmax.x+1)*16-4*16, -door_height[0]*8+84+(tmax.x+1)*8+4*8,16,15+door_height[0]*8,walldoors_type*16, 1, DRAW_FLIP_HORIZONTAL);
|
||||||
|
|
||||||
draw::setSource(aux_surf);
|
draw::setSource(aux_surf);
|
||||||
draw::draw(148+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,0,0);
|
draw::draw(148+(tmax.x+1)*16-4*16, 91+(tmax.x+1)*8+4*8,16,8,0,0);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
namespace room
|
namespace room
|
||||||
{
|
{
|
||||||
void init();
|
void init();
|
||||||
void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col, uint8_t floor, uint8_t walls, uint8_t door);
|
void load(int x, int y, int8_t xp, int8_t xn, int8_t yp, int8_t yn, uint8_t col, uint8_t floor, uint8_t walls, uint8_t door, uint8_t doorwall);
|
||||||
void draw();
|
void draw();
|
||||||
void draw2();
|
void draw2();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user