movement arrows drawn correctly only in the target direction even if multiple
This commit is contained in:
parent
bf584b5429
commit
939c979f19
11
graph.cpp
11
graph.cpp
|
@ -3016,15 +3016,16 @@ EX transmatrix applyDowndir(cell *c, const cellfunction& cf) {
|
||||||
return ddspin(c, patterns::downdir(c, cf), M_PI);
|
return ddspin(c, patterns::downdir(c, cf), M_PI);
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_movement_arrows(cell *c, const transmatrix& V) {
|
void draw_movement_arrows(cell *c, const transmatrix& V, int df) {
|
||||||
|
|
||||||
if(viewdists) return;
|
if(viewdists) return;
|
||||||
|
|
||||||
for(int d=0; d<8; d++) {
|
for(int d=0; d<8; d++) {
|
||||||
|
|
||||||
movedir md = vectodir(spin(-d * M_PI/4) * smalltangent());
|
movedir md = vectodir(spin(-d * M_PI/4) * smalltangent());
|
||||||
int u = md.d;
|
cellwalker xc = cwt + md.d;
|
||||||
cellwalker xc = cwt + u + wstep;
|
if(xc.spin != df) continue;
|
||||||
|
xc += wstep;
|
||||||
if(xc.at == c) {
|
if(xc.at == c) {
|
||||||
transmatrix fixrot = sphereflip * rgpushxto0(sphereflip * tC0(V));
|
transmatrix fixrot = sphereflip * rgpushxto0(sphereflip * tC0(V));
|
||||||
// make it more transparent
|
// make it more transparent
|
||||||
|
@ -4020,7 +4021,7 @@ EX void drawMarkers() {
|
||||||
#if CAP_SHAPES
|
#if CAP_SHAPES
|
||||||
if((vid.axes == 4 || (vid.axes == 1 && !mousing)) && !shmup::on && GDIM == 2) {
|
if((vid.axes == 4 || (vid.axes == 1 && !mousing)) && !shmup::on && GDIM == 2) {
|
||||||
if(multi::players == 1) {
|
if(multi::players == 1) {
|
||||||
forCellIdAll(c2, d, cwt.at) IG(c2) draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d));
|
forCellIdAll(c2, d, cwt.at) IG(c2) draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d), d);
|
||||||
}
|
}
|
||||||
else if(multi::players > 1) for(int p=0; p<multi::players; p++) {
|
else if(multi::players > 1) for(int p=0; p<multi::players; p++) {
|
||||||
if(multi::playerActive(p) && (vid.axes == 4 || !drawstaratvec(multi::mdx[p], multi::mdy[p])))
|
if(multi::playerActive(p) && (vid.axes == 4 || !drawstaratvec(multi::mdx[p], multi::mdy[p])))
|
||||||
|
@ -4028,7 +4029,7 @@ EX void drawMarkers() {
|
||||||
multi::cpid = p;
|
multi::cpid = p;
|
||||||
dynamicval<transmatrix> ttm(cwtV, multi::whereis[p]);
|
dynamicval<transmatrix> ttm(cwtV, multi::whereis[p]);
|
||||||
dynamicval<cellwalker> tcw(cwt, multi::player[p]);
|
dynamicval<cellwalker> tcw(cwt, multi::player[p]);
|
||||||
draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d));
|
draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d), d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue