mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-17 18:54:48 +00:00
crossbow:: fixed Z-fighting and arrow paths not visible in FPP
This commit is contained in:
parent
0c6d286fa8
commit
8185657768
@ -2727,13 +2727,15 @@ void celldrawer::draw_bowpath() {
|
|||||||
color_t arrow_color_trans = arrow_color & 0xFFFFFF00;
|
color_t arrow_color_trans = arrow_color & 0xFFFFFF00;
|
||||||
if(bow::fire_mode) arrow_color = gradient(arrow_color_trans, arrow_color, 0, 0.25, 1);
|
if(bow::fire_mode) arrow_color = gradient(arrow_color_trans, arrow_color, 0, 0.25, 1);
|
||||||
|
|
||||||
|
auto V1 = shmup::at_missile_level(V);
|
||||||
|
|
||||||
if(birth) {
|
if(birth) {
|
||||||
if(t > 0.8) {
|
if(t > 0.8) {
|
||||||
hyperpoint h = h1 + t1 * (1-t);
|
hyperpoint h = h1 + t1 * (1-t);
|
||||||
hyperpoint tg = -t1;
|
hyperpoint tg = -t1;
|
||||||
|
|
||||||
poly_outline = OUTLINE_TRANS;
|
poly_outline = OUTLINE_TRANS;
|
||||||
queuepoly(V * rgpushxto0(h) * rspintox(gpushxto0(h) * tg), cgi.shTrapArrow, gradient(arrow_color_trans, arrow_color, 0.8, t, 1));
|
queuepoly(V1 * rgpushxto0(h) * rspintox(gpushxto0(h) * tg), cgi.shTrapArrow, gradient(arrow_color_trans, arrow_color, 0.8, t, 1));
|
||||||
poly_outline = OUTLINE_DEFAULT;
|
poly_outline = OUTLINE_DEFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2745,7 +2747,7 @@ void celldrawer::draw_bowpath() {
|
|||||||
hyperpoint tg = (h1 - h0) * 6 * t * (1-t) + (3 * t*t - 4*t + 1) * t0 + (2*t-3*t*t) * t1;
|
hyperpoint tg = (h1 - h0) * 6 * t * (1-t) + (3 * t*t - 4*t + 1) * t0 + (2*t-3*t*t) * t1;
|
||||||
|
|
||||||
poly_outline = OUTLINE_TRANS;
|
poly_outline = OUTLINE_TRANS;
|
||||||
queuepoly(V * rgpushxto0(h) * rspintox(gpushxto0(h) * tg), cgi.shTrapArrow, arrow_color);
|
queuepoly(V1 * rgpushxto0(h) * rspintox(gpushxto0(h) * tg), cgi.shTrapArrow, arrow_color);
|
||||||
poly_outline = OUTLINE_DEFAULT;
|
poly_outline = OUTLINE_DEFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
20
graph.cpp
20
graph.cpp
@ -1423,10 +1423,12 @@ EX void drawPlayer(eMonster m, cell *where, const shiftmatrix& V, color_t col, d
|
|||||||
if(ti <= 0) ti = 0;
|
if(ti <= 0) ti = 0;
|
||||||
else ti = 1 + ti / 500;
|
else ti = 1 + ti / 500;
|
||||||
}
|
}
|
||||||
if(ti <= 1) queuepoly(VWPN, cgi.shCrossbowstringLoaded, fc(314, cs.bowcolor2, 3));
|
shiftmatrix VWPN1 = VWPN, VWPN2 = VWPN;
|
||||||
else if(ti <= 2) queuepoly(VWPN, cgi.shCrossbowstringSemiloaded, fc(314, cs.bowcolor2, 3));
|
if(GDIM == 3) { ld h = cgi.human_height; VWPN1 = VWPN * lzpush(-h/60); VWPN2 = VWPN * lzpush(-h/30); }
|
||||||
else queuepoly(VWPN, cgi.shCrossbowstringUnloaded, fc(314, cs.bowcolor2, 3));
|
if(ti <= 1) queuepoly(VWPN1, cgi.shCrossbowstringLoaded, fc(314, cs.bowcolor2, 3));
|
||||||
if(ti == 0) queuepoly(VWPN, cgi.shCrossbowBolt, fc(314, cs.swordcolor, 3));
|
else if(ti <= 2) queuepoly(VWPN1, cgi.shCrossbowstringSemiloaded, fc(314, cs.bowcolor2, 3));
|
||||||
|
else queuepoly(VWPN1, cgi.shCrossbowstringUnloaded, fc(314, cs.bowcolor2, 3));
|
||||||
|
if(ti == 0) queuepoly(VWPN2, cgi.shCrossbowBolt, fc(314, cs.swordcolor, 3));
|
||||||
}
|
}
|
||||||
else if(items[itOrbThorns])
|
else if(items[itOrbThorns])
|
||||||
queuepoly(VWPN, cgi.shHedgehogBladePlayer, items[itOrbDiscord] ? watercolor(0) : 0x00FF00FF);
|
queuepoly(VWPN, cgi.shHedgehogBladePlayer, items[itOrbDiscord] ? watercolor(0) : 0x00FF00FF);
|
||||||
@ -1549,10 +1551,12 @@ void drawMimic(eMonster m, cell *where, const shiftmatrix& V, color_t col, doubl
|
|||||||
if(ti <= 0) ti = 0;
|
if(ti <= 0) ti = 0;
|
||||||
else ti = 1 + ti / 500;
|
else ti = 1 + ti / 500;
|
||||||
}
|
}
|
||||||
if(ti <= 1) queuepoly(VWPN, cgi.shCrossbowstringLoaded, col1);
|
shiftmatrix VWPN1 = VWPN, VWPN2 = VWPN;
|
||||||
else if(ti <= 2) queuepoly(VWPN, cgi.shCrossbowstringSemiloaded, col1);
|
if(GDIM == 3) { ld h = cgi.human_height; VWPN1 = VWPN * lzpush(-h/60); VWPN2 = VWPN * lzpush(-h/30); }
|
||||||
else queuepoly(VWPN, cgi.shCrossbowstringUnloaded, col1);
|
if(ti <= 1) queuepoly(VWPN1, cgi.shCrossbowstringLoaded, col1);
|
||||||
if(ti == 0) queuepoly(VWPN, cgi.shCrossbowBolt, col1);
|
else if(ti <= 2) queuepoly(VWPN1, cgi.shCrossbowstringSemiloaded, col1);
|
||||||
|
else queuepoly(VWPN1, cgi.shCrossbowstringUnloaded, col1);
|
||||||
|
if(ti == 0) queuepoly(VWPN2, cgi.shCrossbowBolt, col1);
|
||||||
}
|
}
|
||||||
else if(!shmup::on) {
|
else if(!shmup::on) {
|
||||||
bool emp = items[itOrbEmpathy] && m != moShadow;
|
bool emp = items[itOrbEmpathy] && m != moShadow;
|
||||||
|
@ -2977,14 +2977,14 @@ auto hooksw = addHook(hooks_swapdim, 100, [] {
|
|||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
EX shiftmatrix at_missile_level(const shiftmatrix& T) {
|
||||||
|
|
||||||
shiftmatrix at_missile_level(const shiftmatrix& T) {
|
|
||||||
if(WDIM == 3) return T;
|
if(WDIM == 3) return T;
|
||||||
if(GDIM == 3) return orthogonal_move(T, cgi.BODY);
|
if(GDIM == 3) return orthogonal_move(T, cgi.BODY);
|
||||||
return at_smart_lof(T, 1.15);
|
return at_smart_lof(T, 1.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX }
|
||||||
|
|
||||||
bool celldrawer::draw_shmup_monster() {
|
bool celldrawer::draw_shmup_monster() {
|
||||||
using namespace shmup;
|
using namespace shmup;
|
||||||
#if CAP_SHAPES
|
#if CAP_SHAPES
|
||||||
|
Loading…
Reference in New Issue
Block a user