mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-08-30 09:17:57 +00:00
better graphical design of Crossroads VII
This commit is contained in:
@@ -1847,7 +1847,7 @@ EX void build_walls(cell *c, cell *from) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(good_for_wall(c) && ls::any_wall() && isThematic(c->land) && hrand(10000) < 1000 && !c->master->alt && !racing::on &&
|
else if(good_for_wall(c) && ls::any_wall() && isThematic(c->land) && hrand(10000) < 1500 && !c->master->alt && !racing::on &&
|
||||||
buildBarrierNowall(c, getNewThematic(c->land))) ;
|
buildBarrierNowall(c, getNewThematic(c->land))) ;
|
||||||
|
|
||||||
else if(good_for_wall(c) && ls::any_wall() && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on &&
|
else if(good_for_wall(c) && ls::any_wall() && c->land == laCrossroads4 && hrand(10000) < 7000 && c->land && !c->master->alt && !tactic::on && !racing::on &&
|
||||||
|
@@ -97,6 +97,11 @@ EX colortable endorian_colors = { 0x202010, 0x404030, 0x0000D0 };
|
|||||||
EX colortable canopy_colors = { 0x60C060, 0x489048 };
|
EX colortable canopy_colors = { 0x60C060, 0x489048 };
|
||||||
EX colortable camelot_cheat_colors = { 0x606060, 0xC0C0C0 };
|
EX colortable camelot_cheat_colors = { 0x606060, 0xC0C0C0 };
|
||||||
|
|
||||||
|
bool thembound(cell *c) {
|
||||||
|
forCellEx(c1, c) if(c1->land != c->land && c1->land != laBarrier) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** return the special colortable for the given cell -- color menu uses this to know that a colortable should be edited */
|
/** return the special colortable for the given cell -- color menu uses this to know that a colortable should be edited */
|
||||||
EX colortable* special_colortable_for(cell *c) {
|
EX colortable* special_colortable_for(cell *c) {
|
||||||
if(c->land == laPrairie && prairie::isriver(c)) return &prairie_colors;
|
if(c->land == laPrairie && prairie::isriver(c)) return &prairie_colors;
|
||||||
@@ -190,8 +195,10 @@ void celldrawer::setcolors() {
|
|||||||
case laMotion: case laGraveyard: case laWineyard: case laLivefjord:
|
case laMotion: case laGraveyard: case laWineyard: case laLivefjord:
|
||||||
case laRlyeh: case laHell: case laCrossroads: case laJungle:
|
case laRlyeh: case laHell: case laCrossroads: case laJungle:
|
||||||
case laAlchemist: case laFrog: case laCursed: case laDice:
|
case laAlchemist: case laFrog: case laCursed: case laDice:
|
||||||
case laThematic: case laThematicNature: case laThematicUrban: case laThematicDeath: case laThematicAbstract: case laThematicWater: case laThematicEarth:
|
|
||||||
fcol = floorcolors[c->land]; break;
|
fcol = floorcolors[c->land]; break;
|
||||||
|
|
||||||
|
case laThematic: case laThematicNature: case laThematicUrban: case laThematicDeath: case laThematicAbstract: case laThematicWater: case laThematicEarth: case laThematicHeat:
|
||||||
|
fcol = floorcolors[laThematic]; break;
|
||||||
|
|
||||||
case laCA:
|
case laCA:
|
||||||
fcol = floorcolors[c->land];
|
fcol = floorcolors[c->land];
|
||||||
@@ -444,7 +451,7 @@ void celldrawer::setcolors() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case laIce: case laCocytus: case laBlizzard: case laEclectic: case laThematicHeat:
|
case laIce: case laCocytus: case laBlizzard: case laEclectic:
|
||||||
if(useHeatColoring(c)) {
|
if(useHeatColoring(c)) {
|
||||||
float h = HEAT(c);
|
float h = HEAT(c);
|
||||||
eLand l = c->land;
|
eLand l = c->land;
|
||||||
@@ -1234,6 +1241,61 @@ void celldrawer::set_land_floor(const shiftmatrix& Vf) {
|
|||||||
queuepoly(Vf * ddspin(c, i, M_PI/S7) * xpush(cgi.rhexf), cgi.shSwitchDisk, darkena(minf[active_switch()].color, fd, 0xFF));
|
queuepoly(Vf * ddspin(c, i, M_PI/S7) * xpush(cgi.rhexf), cgi.shSwitchDisk, darkena(minf[active_switch()].color, fd, 0xFF));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case laThematicNature:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shTreeIcon, darkena(linf[laThematicNature].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicUrban:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shHumanoid, darkena(linf[laThematicUrban].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicEarth:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shLightningBolt, darkena(linf[laThematicEarth].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicWater:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shSmallPike, darkena(linf[laThematicWater].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicAbstract:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shDodeca, darkena(linf[laThematicAbstract].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicDeath:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
queuepolyat(Vf, cgi.shMiniGhost, darkena(linf[laThematicDeath].color, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case laThematicHeat:
|
||||||
|
if(c->wall == waNone) {
|
||||||
|
dynamicval<color_t> p(poly_outline, OUTLINE_TRANS);
|
||||||
|
float h = HEAT(c);
|
||||||
|
color_t col;
|
||||||
|
if(h < -1) col = 0xFF;
|
||||||
|
else if(h < 0) col = gradient(0xFFFFFF, 0xFF, 0, h, -1);
|
||||||
|
else if(h < 1) col = gradient(0xFFFFFF, 0xFFFF00, 0, h, 1);
|
||||||
|
else col = 0xFFFF00;
|
||||||
|
queuepolyat(Vf, cgi.shGem[0], darkena(col, 0, thembound(c) ? 0xFF : 0x10), PPR::FLOOR_DRAGON);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case laStorms:
|
case laStorms:
|
||||||
set_floor(cgi.shChargedFloor);
|
set_floor(cgi.shChargedFloor);
|
||||||
break;
|
break;
|
||||||
|
@@ -1754,10 +1754,10 @@ LAND( 0x7030A0, "Crossroads VI", laCrossroads6, ZERO, itHyperstone, RESERVED, "A
|
|||||||
NATIVE(0)
|
NATIVE(0)
|
||||||
REQ(ITEMS(itCursed, 5))
|
REQ(ITEMS(itCursed, 5))
|
||||||
|
|
||||||
LAND( 0xC0C0C0, "Crossroads VII", laThematic, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
LAND( 0xFF0060, "Crossroads VII", laThematic, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
||||||
NATIVE(0) REQ(GOLD(R400))
|
NATIVE(0) REQ(GOLD(R400))
|
||||||
|
|
||||||
LAND( 0x60C060, "Crossroads VII (Nature)", laThematicNature, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
LAND( 0x308030, "Crossroads VII (Nature)", laThematicNature, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
||||||
NATIVE(0) REQ(GOLD(R400))
|
NATIVE(0) REQ(GOLD(R400))
|
||||||
|
|
||||||
LAND( 0x60C0C0, "Crossroads VII (Urban)", laThematicUrban, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
LAND( 0x60C0C0, "Crossroads VII (Urban)", laThematicUrban, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
||||||
@@ -1775,7 +1775,7 @@ LAND( 0x6060C0, "Crossroads VII (Water)", laThematicWater, ZERO, itHyperstone, R
|
|||||||
LAND( 0x1030F0, "Crossroads VII (Fire/Ice)", laThematicHeat, LF_ICY, itHyperstone, RESERVED, thematic_crossroads)
|
LAND( 0x1030F0, "Crossroads VII (Fire/Ice)", laThematicHeat, LF_ICY, itHyperstone, RESERVED, thematic_crossroads)
|
||||||
NATIVE(0) REQ(GOLD(R400))
|
NATIVE(0) REQ(GOLD(R400))
|
||||||
|
|
||||||
LAND( 0x505050, "Crossroads VII (Earth/Air)", laThematicEarth, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
LAND( 0xFFFF00, "Crossroads VII (Earth/Air)", laThematicEarth, ZERO, itHyperstone, RESERVED, thematic_crossroads)
|
||||||
NATIVE(0) REQ(GOLD(R400))
|
NATIVE(0) REQ(GOLD(R400))
|
||||||
|
|
||||||
LAND( 0xC0B090, "Master Crossroads", laMasterCrossroads, ZERO, itHyperstone, RESERVED, "A crossroads that connects only to other crossroads.")
|
LAND( 0xC0B090, "Master Crossroads", laMasterCrossroads, ZERO, itHyperstone, RESERVED, "A crossroads that connects only to other crossroads.")
|
||||||
|
@@ -384,9 +384,9 @@ hpcshape
|
|||||||
|
|
||||||
hpcshape shSpaceship, shMissile, shSpaceshipBase, shSpaceshipCockpit, shSpaceshipGun, shSpaceshipEngine;
|
hpcshape shSpaceship, shMissile, shSpaceshipBase, shSpaceshipCockpit, shSpaceshipGun, shSpaceshipEngine;
|
||||||
|
|
||||||
hpcshape shChristmasLight;
|
hpcshape shChristmasLight, shSmallPike;
|
||||||
|
|
||||||
hpcshape shReserved[9];
|
hpcshape shReserved[8];
|
||||||
|
|
||||||
int orb_inner_ring; //< for shDisk* shapes, the number of vertices in the inner ring
|
int orb_inner_ring; //< for shDisk* shapes, the number of vertices in the inner ring
|
||||||
int res1, res2;
|
int res1, res2;
|
||||||
|
@@ -1633,6 +1633,7 @@ void geometry_information::prepare_shapes() {
|
|||||||
|
|
||||||
bshape(shPikeBody, PPR::MONSTER_BODY, scalefactor, 402);
|
bshape(shPikeBody, PPR::MONSTER_BODY, scalefactor, 402);
|
||||||
bshape(shPikeEye, PPR::MONSTER_BODY, scalefactor, 403);
|
bshape(shPikeEye, PPR::MONSTER_BODY, scalefactor, 403);
|
||||||
|
bshape(shSmallPike, PPR::MONSTER_BODY, scalefactor * 0.5, 402);
|
||||||
|
|
||||||
// missiles
|
// missiles
|
||||||
bshape(shKnife, PPR::MISSILE, scalefactor, 87);
|
bshape(shKnife, PPR::MISSILE, scalefactor, 87);
|
||||||
|
Reference in New Issue
Block a user