1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-18 06:50:27 +00:00

big carpet

This commit is contained in:
Zeno Rogue 2019-05-25 04:05:30 +02:00
parent 542639bcc8
commit 9c5344289a
2 changed files with 31 additions and 6 deletions

View File

@ -992,9 +992,9 @@ void make_3d_models() {
for(int i=0; i<14; i++)
shift_shape(shTriheptaSpecial[i], geom3::FLOOR);
shift_shape(shBigCarpet1, geom3::FLOOR - geom3::human_height * 1/40);
shift_shape(shBigCarpet2, geom3::FLOOR - geom3::human_height * 2/40);
shift_shape(shBigCarpet3, geom3::FLOOR - geom3::human_height * 3/40);
shift_shape_orthogonally(shBigCarpet1, geom3::FLOOR - geom3::human_height * 1/40);
shift_shape_orthogonally(shBigCarpet2, geom3::FLOOR - geom3::human_height * 2/40);
shift_shape_orthogonally(shBigCarpet3, geom3::FLOOR - geom3::human_height * 3/40);
for(int a=0; a<5; a++) for(int b=0; b<4; b++)
shift_shape(shReptile[a][b], geom3::FLOOR - geom3::human_height * min(b, 2) / 40);
@ -1091,6 +1091,31 @@ void make_3d_models() {
}
}
shPalaceGate.flags |= POLY_TRIANGLES;
for(int i=0; i<3; i++) {
array<hpcshape*,3> sh = {&shBigCarpet1, &shBigCarpet2, &shBigCarpet3};
bshape(*sh[i], PPR::GFLOORa);
for(int t=0; t<S7; t++) {
dynamicval<int> dv(vid.texture_step, 16);
texture_order([&] (ld x, ld y) {
using namespace hyperpoint_vec;
ld z = 1-x-y;
ld rad = 2.1 - i * 0.2;
hyperpoint hx = ddi(t*12, -zhexf*rad) * C0;
hyperpoint hy = ddi(t*12+12, -zhexf*rad) * C0;
hyperpoint hz = C0;
hyperpoint h = hx * x + hy * y + hz * z;
h = mid(h, h);
h = orthogonal_move(h, geom3::FLOOR - geom3::human_height * (i+2.5) / 100 * (x+y+1)/2);
hpcpush(h);
});
}
sh[i]->flags |= POLY_TRIANGLES;
}
finishshape();
}

View File

@ -5931,9 +5931,9 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
break;
case waGiantRug:
queuepoly(V, shBigCarpet1, darkena(0xC09F00, 0, 0xFF));
queuepoly(V, shBigCarpet2, darkena(0x600000, 0, 0xFF));
queuepoly(V, shBigCarpet3, darkena(0xC09F00, 0, 0xFF));
queuepoly(V, shBigCarpet1, darkena(DIM == 3 ? 0 : 0xC09F00, 0, 0xFF));
queuepoly(V, shBigCarpet2, darkena(DIM == 3 ? 0xC09F00 : 0x600000, 0, 0xFF));
queuepoly(V, shBigCarpet3, darkena(DIM == 3 ? 0x600000 : 0xC09F00, 0, 0xFF));
break;
case waBarrier: