- Treballant en l'altura de les portes

This commit is contained in:
2023-06-02 14:10:28 +02:00
parent 5e48df06b2
commit b77b6e433d

View File

@@ -9,7 +9,8 @@ namespace room
static vec3_t min = {0,0,0}; static vec3_t min = {0,0,0};
static vec3_t max = {56,56,56}; static vec3_t max = {56,56,56};
static uint8_t doors = 15 ; static uint8_t doors = DOOR_XN ;
static uint8_t door_height[4];
void load(int x, int y) void load(int x, int y)
{ {
@@ -18,35 +19,48 @@ namespace room
tmax = {4+x,4+y,3}; tmax = {4+x,4+y,3};
min = {tmin.x*8,tmin.y*8,0}; min = {tmin.x*8,tmin.y*8,0};
max = {tmax.x*8,tmax.y*8,24}; max = {tmax.x*8,tmax.y*8,24};
door_height[0] = 2; //XP
door_height[1] = 3; //XN
door_height[2] = 2; //YP
door_height[3] = 2; //YN
} }
void draw() void draw()
{ {
if (doors & DOOR_YN) if (doors & DOOR_YN)
{ {
// Pintem els dos tiles baix de la porta YN if (door_height[3] > 0) {
draw::draw(164+4*16-(tmin.y-1)*16, 84+4*8+(tmin.y-1)*8, 16, 15, 144, 49); // Vora de piso X draw::draw( 164+3*16-tmin.y*16, (36+3*8+tmin.y*8) + (5-door_height[3])*8, 16, 48+(door_height[3]*8), 128, 16+(5-door_height[3])*8);
draw::draw(148+3*16-(tmin.y-1)*16, 76+3*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso draw::draw( 164+4*16-tmin.y*16, (36+4*8+tmin.y*8) + (5-door_height[3])*8, 16, 48+(door_height[3]*8), 128, 16+(5-door_height[3])*8);
draw::draw(148+4*16-(tmin.y-1)*16, 76+4*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso }
// Pintem la porta YN // Pintem els dos tiles baix de la porta
draw::draw(164+3*16-tmin.y*16,32+3*8+tmin.y*8,40,59,18,133); // Porta Y esq draw::draw(164+4*16-(tmin.y-1)*16, -door_height[3]*8+84+4*8+(tmin.y-1)*8, 16, 15, 144, 49); // Vora
//draw::draw(164+3*16-tmin.y*16,32+3*8+tmin.y*8,16,47,18,133); // Porta Y esq draw::draw(148+3*16-(tmin.y-1)*16, -door_height[3]*8+76+3*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso
//draw::draw(164+4*16-tmin.y*16,28+4*8+tmin.y*8,24,55,34,137); // Porta Y dret draw::draw(148+4*16-(tmin.y-1)*16, -door_height[3]*8+76+4*8+(tmin.y-1)*8, 32, 15, 0, 1); // Tile de Piso
// Pintem la porta
draw::draw(164+3*16-tmin.y*16, -door_height[3]*8+32+3*8+tmin.y*8,40,59,18,133);
} }
if (doors & DOOR_XN) if (doors & DOOR_XN)
{ {
// Pintem els dos tiles baix de la porta XN if (door_height[1] > 0) {
draw::draw(148+(tmin.x-1)*16-3*16,76+(tmin.x-1)*8+3*8,32,15,0,1); // Tile de Piso draw::draw(148+tmin.x*16-3*16, (36+tmin.x*8+3*8)+(5-door_height[1])*8, 16, 48+(door_height[1]*8), 144, 16+(5-door_height[1])*8);
draw::draw(148+(tmin.x-1)*16-4*16,76+(tmin.x-1)*8+4*8,32,15,0,1); // Tile de Piso draw::draw(148+tmin.x*16-4*16, (36+tmin.x*8+4*8)+(5-door_height[1])*8, 16, 48+(door_height[1]*8), 144, 16+(5-door_height[1])*8);
}
draw::draw(164+(tmin.x-1)*16-4*16-8, 32+3*8+9+(tmin.x-1)*8, 40,59, 64,133); // Pintem els dos tiles baix de la porta
draw::draw(148+(tmin.x-1)*16-3*16, -door_height[1]*8+76+(tmin.x-1)*8+3*8,32,15,0,1);
draw::draw(148+(tmin.x-1)*16-4*16, -door_height[1]*8+76+(tmin.x-1)*8+4*8,32,15,0,1);
// Pintem la porta
draw::draw(164+(tmin.x-1)*16-4*16-8, -door_height[1]*8+32+3*8+9+(tmin.x-1)*8, 40,59, 64,133);
} }
for (int x=tmin.x;x<=tmax.x;++x) for (int x=tmin.x;x<=tmax.x;++x)
{ {
// Si hi ha porta en YP, no pintem la vorera en eixos dos tiles // Si hi ha porta en YP i està a altura 0, no pintem la vorera en eixos dos tiles
if ( !(doors & DOOR_YP) || (x!=3 && x!=4) ) draw::draw(148+x*16-tmax.y*16,84+x*8+tmax.y*8,16,15,128,49); if ( !(doors & DOOR_YP) || (door_height[2] != 0) || (x!=3 && x!=4) ) draw::draw(148+x*16-tmax.y*16,84+x*8+tmax.y*8,16,15,128,49);
// Si hi ha porta en YN, no pintem la pared en eixos dos tiles // Si hi ha porta en YN, no pintem la pared en eixos dos tiles
if ( !(doors & DOOR_YN) || (x!=3 && x!=4) ) draw::draw(164+x*16-tmin.y*16,36+x*8+tmin.y*8,16,48,128,16); if ( !(doors & DOOR_YN) || (x!=3 && x!=4) ) draw::draw(164+x*16-tmin.y*16,36+x*8+tmin.y*8,16,48,128,16);
@@ -54,8 +68,8 @@ namespace room
for (int y=tmin.y;y<=tmax.y;++y) for (int y=tmin.y;y<=tmax.y;++y)
{ {
// Si hi ha porta en XP, no pintem la vorera en eixos dos tiles // Si hi ha porta en XP i està a altura 0, no pintem la vorera en eixos dos tiles
if ( !(doors & DOOR_XP) || (y!=3 && y!=4) ) draw::draw(164+tmax.x*16-y*16,84+tmax.x*8+y*8,16,15,144,49); if ( !(doors & DOOR_XP) || (door_height[0] != 0) || (y!=3 && y!=4) ) draw::draw(164+tmax.x*16-y*16,84+tmax.x*8+y*8,16,15,144,49);
// Si hi ha porta en XN, no pintem la pared en eixos dos tiles // Si hi ha porta en XN, no pintem la pared en eixos dos tiles
if ( !(doors & DOOR_XN) || (y!=3 && y!=4) ) draw::draw(148+tmin.x*16-y*16,36+tmin.x*8+y*8,16,48,144,16); if ( !(doors & DOOR_XN) || (y!=3 && y!=4) ) draw::draw(148+tmin.x*16-y*16,36+tmin.x*8+y*8,16,48,144,16);
@@ -70,28 +84,24 @@ namespace room
if (doors & DOOR_YP) if (doors & DOOR_YP)
{ {
// 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::draw(164+4*16-(tmax.y+1)*16,84+4*8+(tmax.y+1)*8,16,15,144,49); 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,144,49-door_height[2]*8);
draw::draw(148+3*16-(tmax.y+1)*16,84+3*8+(tmax.y+1)*8,16,15,128,49); 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,128,49-door_height[2]*8);
draw::draw(148+4*16-(tmax.y+1)*16,84+4*8+(tmax.y+1)*8,16,15,128,49); 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,128,49-door_height[2]*8);
// Pintem els dos tiles de piso extra de la porta YP // Pintem els dos tiles de piso extra de la porta YP
draw::draw(148+3*16-(tmax.y+1)*16,76+3*8+(tmax.y+1)*8,32,15,0,1); draw::draw(148+3*16-(tmax.y+1)*16, -door_height[2]*8+76+3*8+(tmax.y+1)*8,32,15,0,1);
draw::draw(148+4*16-(tmax.y+1)*16,76+4*8+(tmax.y+1)*8,32,15,0,1); draw::draw(148+4*16-(tmax.y+1)*16, -door_height[2]*8+76+4*8+(tmax.y+1)*8,32,15,0,1);
// Pintem la porta YP
//draw::draw(164+3*16-8-(tmax.y+1)*16,32+3*8+4+(tmax.y+1)*8,16,47,18,133);
//draw::draw(164+4*16-8-(tmax.y+1)*16,28+4*8+4+(tmax.y+1)*8,24,55,34,137);
} }
if (doors & DOOR_XP) if (doors & DOOR_XP)
{ {
// 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::draw(148+(tmax.x+1)*16-4*16,84+(tmax.x+1)*8+4*8,16,15,128,49); 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,128,49-door_height[0]*8);
draw::draw(164+(tmax.x+1)*16-3*16,84+(tmax.x+1)*8+3*8,16,15,144,49); 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,144,49-door_height[0]*8);
draw::draw(164+(tmax.x+1)*16-4*16,84+(tmax.x+1)*8+4*8,16,15,144,49); 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,144,49-door_height[0]*8);
// Pintem els dos tiles de piso extra de la porta XP // Pintem els dos tiles de piso extra de la porta XP
draw::draw(148+(tmax.x+1)*16-3*16,76+(tmax.x+1)*8+3*8,32,15,0,1); draw::draw(148+(tmax.x+1)*16-3*16, -door_height[0]*8+76+(tmax.x+1)*8+3*8,32,15,0,1);
draw::draw(148+(tmax.x+1)*16-4*16,76+(tmax.x+1)*8+4*8,32,15,0,1); draw::draw(148+(tmax.x+1)*16-4*16, -door_height[0]*8+76+(tmax.x+1)*8+4*8,32,15,0,1);
} }
} }
@@ -101,14 +111,12 @@ namespace room
if (doors & DOOR_YP) if (doors & DOOR_YP)
{ {
// Pintem la porta YP // Pintem la porta YP
draw::draw(164+3*16-8-(tmax.y+1)*16,32+3*8+4+(tmax.y+1)*8,40,59,18,133); draw::draw(164+3*16-8-(tmax.y+1)*16, -door_height[2]*8+32+3*8+4+(tmax.y+1)*8,40,59,18,133);
//draw::draw(164+3*16-8-(tmax.y+1)*16,32+3*8+4+(tmax.y+1)*8,16,47,18,133);
//draw::draw(164+4*16-8-(tmax.y+1)*16,28+4*8+4+(tmax.y+1)*8,24,55,34,137);
} }
if (doors & DOOR_XP) if (doors & DOOR_XP)
{ {
// Pintem la porta XP // Pintem la porta XP
draw::draw( 164+(tmax.x+1)*16-4*16-16, 32+3*8+4+(tmax.x+1)*8, 40,59, 64,133); draw::draw( 164+(tmax.x+1)*16-4*16-16, -door_height[0]*8+32+3*8+4+(tmax.x+1)*8, 40,59, 64,133);
} }
} }