mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 14:37:16 +00:00
fixed mines when more than 7 adjacent mines
This commit is contained in:
parent
52305eb830
commit
8a53258361
22
graph.cpp
22
graph.cpp
@ -2720,7 +2720,7 @@ bool bugsNearby(cell *c, int dist = 2) {
|
|||||||
|
|
||||||
colortable minecolors = {
|
colortable minecolors = {
|
||||||
0xFFFFFF, 0xF0, 0xF060, 0xF00000,
|
0xFFFFFF, 0xF0, 0xF060, 0xF00000,
|
||||||
0x60, 0x600000, 0x00C0C0, 0x000000
|
0x60, 0x600000, 0x00C0C0, 0x000000, 0x808080, 0xFFD500
|
||||||
};
|
};
|
||||||
|
|
||||||
colortable distcolors = {
|
colortable distcolors = {
|
||||||
@ -4974,7 +4974,9 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
|
|||||||
}
|
}
|
||||||
else if(c->wall == waMineOpen) {
|
else if(c->wall == waMineOpen) {
|
||||||
int mines = countMinesAround(c);
|
int mines = countMinesAround(c);
|
||||||
queuepoly(face_the_player(V), shMineMark[0], darkena(minecolors[mines], 0, 0xFF));
|
if(mines >= 10)
|
||||||
|
queuepoly(face_the_player(V), shBigMineMark[0], darkena(minecolors[(mines/10)%10], 0, 0xFF));
|
||||||
|
queuepoly(face_the_player(V), shMineMark[0], darkena(minecolors[mines%10], 0, 0xFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(winf[c->wall].glyph == '.' || among(c->wall, waFloorA, waFloorB, waChasm, waLadder, waCanopy) || isWatery(c) || isSulphuric(c->wall)) ;
|
else if(winf[c->wall].glyph == '.' || among(c->wall, waFloorA, waFloorB, waChasm, waLadder, waCanopy) || isWatery(c) || isSulphuric(c->wall)) ;
|
||||||
@ -5177,8 +5179,10 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
|
|||||||
|
|
||||||
case waMineOpen: {
|
case waMineOpen: {
|
||||||
int mines = countMinesAround(c);
|
int mines = countMinesAround(c);
|
||||||
|
if(mines >= 10)
|
||||||
|
queuepoly(V, shBigMineMark[ct6], darkena(minecolors[(mines/10) % 10], 0, 0xFF));
|
||||||
if(mines)
|
if(mines)
|
||||||
queuepoly(V, shMineMark[ct6], darkena(minecolors[mines], 0, 0xFF));
|
queuepoly(V, shMineMark[ct6], darkena(minecolors[mines%10], 0, 0xFF));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5261,9 +5265,9 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
|
|||||||
int mines = countMinesAround(c);
|
int mines = countMinesAround(c);
|
||||||
if(ch == '.') {
|
if(ch == '.') {
|
||||||
if(mines == 0) ch = ' ';
|
if(mines == 0) ch = ' ';
|
||||||
else ch = '0' + mines, asciicol = minecolors[mines];
|
else ch = '0' + mines, asciicol = minecolors[mines%10];
|
||||||
}
|
}
|
||||||
else if(ch == '@') asciicol = minecolors[mines];
|
else if(ch == '@') asciicol = minecolors[mines%10];
|
||||||
}
|
}
|
||||||
if(!(it || c->monst || c->cpdist == 0)) error = true;
|
if(!(it || c->monst || c->cpdist == 0)) error = true;
|
||||||
}
|
}
|
||||||
@ -6535,7 +6539,7 @@ void drawscreen() {
|
|||||||
its(hive::bugcount[k]), minf[moBug0+k].color, 8);
|
its(hive::bugcount[k]), minf[moBug0+k].color, 8);
|
||||||
|
|
||||||
bool minefieldNearby = false;
|
bool minefieldNearby = false;
|
||||||
int mines[4], tmines=0;
|
int mines[MAXPLAYER], tmines=0;
|
||||||
for(int p=0; p<numplayers(); p++) {
|
for(int p=0; p<numplayers(); p++) {
|
||||||
mines[p] = 0;
|
mines[p] = 0;
|
||||||
cell *c = playerpos(p);
|
cell *c = playerpos(p);
|
||||||
@ -6552,8 +6556,8 @@ void drawscreen() {
|
|||||||
|
|
||||||
if((minefieldNearby || tmines) && !items[itOrbAether] && !last_gravity_state && darken == 0 && normal) {
|
if((minefieldNearby || tmines) && !items[itOrbAether] && !last_gravity_state && darken == 0 && normal) {
|
||||||
string s;
|
string s;
|
||||||
if(tmines > 7) tmines = 7;
|
if(tmines > 9) tmines = 9;
|
||||||
color_t col = minecolors[tmines];
|
color_t col = minecolors[tmines%10];
|
||||||
|
|
||||||
if(tmines == 7) seenSevenMines = true;
|
if(tmines == 7) seenSevenMines = true;
|
||||||
|
|
||||||
@ -6561,7 +6565,7 @@ void drawscreen() {
|
|||||||
displayfr(vid.xres * (p+.5) / numplayers(),
|
displayfr(vid.xres * (p+.5) / numplayers(),
|
||||||
current_display->ycenter - current_display->radius * 3/4, 2,
|
current_display->ycenter - current_display->radius * 3/4, 2,
|
||||||
vid.fsize,
|
vid.fsize,
|
||||||
XLAT(minetexts[mines[p]]), minecolors[mines[p]], 8);
|
mines[p] > 7 ? its(mines[p]) : XLAT(minetexts[mines[p]]), minecolors[mines[p]%10], 8);
|
||||||
|
|
||||||
if(minefieldNearby && !shmup::on && cwt.at->land != laMinefield && cwt.peek()->land != laMinefield) {
|
if(minefieldNearby && !shmup::on && cwt.at->land != laMinefield && cwt.peek()->land != laMinefield) {
|
||||||
displayfr(vid.xres/2, current_display->ycenter - current_display->radius * 3/4 - vid.fsize*3/2, 2,
|
displayfr(vid.xres/2, current_display->ycenter - current_display->radius * 3/4 - vid.fsize*3/2, 2,
|
||||||
|
@ -1624,7 +1624,7 @@ hpcshape
|
|||||||
shWave[8][2],
|
shWave[8][2],
|
||||||
shCircleFloor,
|
shCircleFloor,
|
||||||
shBarrel,
|
shBarrel,
|
||||||
shWall[2], shMineMark[2], shFan,
|
shWall[2], shMineMark[2], shBigMineMark[2], shFan,
|
||||||
shZebra[5],
|
shZebra[5],
|
||||||
shSwitchDisk,
|
shSwitchDisk,
|
||||||
shTower[11],
|
shTower[11],
|
||||||
@ -2066,6 +2066,12 @@ void procedural_shapes() {
|
|||||||
bshape(shMineMark[1], PPR::MINEMARK);
|
bshape(shMineMark[1], PPR::MINEMARK);
|
||||||
for(int t=0; t<=S7; t++) hpcpush(ddi(t*S12, floorrad1*.1) * C0);
|
for(int t=0; t<=S7; t++) hpcpush(ddi(t*S12, floorrad1*.1) * C0);
|
||||||
|
|
||||||
|
bshape(shBigMineMark[0], PPR::MINEMARK);
|
||||||
|
for(int t=0; t<=S6; t++) hpcpush(ddi(S7 + t*S14, floorrad0*.15) * C0);
|
||||||
|
|
||||||
|
bshape(shBigMineMark[1], PPR::MINEMARK);
|
||||||
|
for(int t=0; t<=S7; t++) hpcpush(ddi(t*S12, floorrad1*.15) * C0);
|
||||||
|
|
||||||
for(int d=0; d<2; d++) {
|
for(int d=0; d<2; d++) {
|
||||||
bshape(shSemiBFloor[d], PPR::BFLOOR);
|
bshape(shSemiBFloor[d], PPR::BFLOOR);
|
||||||
for(int t=0; t<=4; t++) hpcpush(ddi(S7 + (3+3*d+t%4)*S14, floorrad0*.1) * C0);
|
for(int t=0; t<=4; t++) hpcpush(ddi(S7 + (3+3*d+t%4)*S14, floorrad0*.1) * C0);
|
||||||
|
Loading…
Reference in New Issue
Block a user