mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-05-08 02:04:06 +00:00
2D3D:: higher ceilings in the Palace
This commit is contained in:
parent
67f3bd6a3c
commit
599d5d63e8
@ -268,7 +268,7 @@ namespace geom3 {
|
||||
LEG0, LEG1, LEG, LEG3, GROIN, GROIN1, GHOST,
|
||||
BODY, BODY1, BODY2, BODY3,
|
||||
NECK1, NECK, NECK3, HEAD, HEAD1, HEAD2, HEAD3,
|
||||
ALEG0, ALEG, ABODY, AHEAD, BIRD, LOWSKY, SKY;
|
||||
ALEG0, ALEG, ABODY, AHEAD, BIRD, LOWSKY, SKY, HIGH, HIGH2;
|
||||
|
||||
string invalid;
|
||||
|
||||
@ -382,6 +382,8 @@ namespace geom3 {
|
||||
HELLSPIKE = lev_to_factor(-(lake_top+lake_bottom)/2);
|
||||
BOTTOM = lev_to_factor(-lake_bottom);
|
||||
LOWSKY = lev_to_factor((1 + rock_wall_ratio) * wh);
|
||||
HIGH = LOWSKY;
|
||||
HIGH2 = lev_to_factor((2 + rock_wall_ratio) * wh);
|
||||
SKY = LOWSKY - 5;
|
||||
}
|
||||
}
|
||||
|
31
graph.cpp
31
graph.cpp
@ -4560,7 +4560,6 @@ int ceiling_category(cell *c) {
|
||||
case laHive:
|
||||
case laCamelot:
|
||||
case laTemple:
|
||||
case laPalace:
|
||||
case laPrincessQuest:
|
||||
case laIvoryTower:
|
||||
case laEFire:
|
||||
@ -4580,6 +4579,7 @@ int ceiling_category(cell *c) {
|
||||
case laVariant:
|
||||
return 3;
|
||||
|
||||
case laPalace:
|
||||
default:
|
||||
return 4;
|
||||
}
|
||||
@ -4661,6 +4661,35 @@ void draw_ceiling(cell *c, const transmatrix& V, int fd, color_t& fcol, color_t&
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
case 4: {
|
||||
auto ispal = [&] (cell *c0) { return c0->land == laPalace && among(c0->wall, waPalace, waClosedGate, waOpenGate); };
|
||||
color_t wcol2 = 0xFFD500;
|
||||
if(ispal(c)) {
|
||||
forCellIdEx(c2, i, c) if(!ispal(c2))
|
||||
placeSidewall(c, i, SIDE_HIGH, V, darkena(wcol2, fd, 0xFF));
|
||||
}
|
||||
else {
|
||||
bool window = false;
|
||||
forCellIdEx(c2, i, c) if(c2->wall == waPalace && ispal(c->modmove(i+1)) && ispal(c->modmove(i-1))) window = true;
|
||||
if(!window) draw_shapevec(c, V, qfi.fshape->levels[SIDE_HIGH], darkena(fcol, fd, 0xFF), PPR::WALL);
|
||||
if(window)
|
||||
forCellIdEx(c2, i, c)
|
||||
placeSidewall(c, i, SIDE_HIGH2, V, darkena(wcol2, fd, 0xFF));
|
||||
}
|
||||
if(among(c->wall, waClosedGate, waOpenGate)) draw_shapevec(c, V, qfi.fshape->levels[SIDE_WALL], 0x202020FF, PPR::WALL);
|
||||
|
||||
if(true) {
|
||||
auto &star = queuepolyat(V * zpush(geom3::SKY+0.5), shNightStar, 0xFFFFFFFF, PPR::SKY);
|
||||
star.tinf = NULL;
|
||||
star.flags |= POLY_INTENSE;
|
||||
}
|
||||
int sk = get_skybrightness();
|
||||
if(sk > 0) {
|
||||
auto sky = draw_shapevec(c, V, shFullFloor.levels[SIDE_SKY], 0x000000FF + 0x100 * (sk/17), PPR::SKY);
|
||||
if(sky) sky->tinf = NULL, sky->flags |= POLY_INTENSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
4
hyper.h
4
hyper.h
@ -4254,7 +4254,9 @@ void set_blizzard_frame(cell *c, int frameid);
|
||||
#define SIDE_LTOB 6
|
||||
#define SIDE_BTOI 7
|
||||
#define SIDE_SKY 8
|
||||
#define SIDEPARS 9
|
||||
#define SIDE_HIGH 9
|
||||
#define SIDE_HIGH2 10
|
||||
#define SIDEPARS 11
|
||||
|
||||
#if CAP_SHAPES
|
||||
struct floorshape {
|
||||
|
@ -2060,6 +2060,8 @@ void make_sidewalls() {
|
||||
dfloor_table[SIDE_LAKE] = geom3::LAKE;
|
||||
dfloor_table[SIDE_LTOB] = geom3::BOTTOM;
|
||||
dfloor_table[SIDE_BTOI] = geom3::INFDEEP;
|
||||
dfloor_table[SIDE_HIGH] = geom3::HIGH;
|
||||
dfloor_table[SIDE_HIGH2] = geom3::HIGH2;
|
||||
dfloor_table[SIDE_SKY ] = geom3::SKY;
|
||||
|
||||
// sidewall parameters for the 3D mode
|
||||
@ -2070,6 +2072,8 @@ void make_sidewalls() {
|
||||
else if(k==SIDE_LTOB) dlow = geom3::BOTTOM, dhi = geom3::LAKE;
|
||||
else if(k==SIDE_BTOI) dlow = geom3::INFDEEP, dhi = geom3::BOTTOM;
|
||||
else if(k==SIDE_WTS3) dlow = geom3::SLEV[3], dhi = geom3::WALL;
|
||||
else if(k==SIDE_HIGH) dlow = geom3::WALL, dhi = geom3::HIGH;
|
||||
else if(k==SIDE_HIGH2) dlow = geom3::HIGH, dhi = geom3::HIGH2;
|
||||
else if(k==SIDE_SKY) dlow = geom3::WALL, dhi = geom3::LOWSKY;
|
||||
else dlow = geom3::SLEV[k-SIDE_SLEV], dhi = geom3::SLEV[k-SIDE_SLEV+1];
|
||||
dlow_table[k] = dlow;
|
||||
|
Loading…
x
Reference in New Issue
Block a user