mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-23 21:07:17 +00:00
replaced compute_relamatrix and some cases of calc_relativematrix with adj
This commit is contained in:
parent
eb2f9cbf8a
commit
8fad2bc9d5
17
control.cpp
17
control.cpp
@ -86,12 +86,10 @@ EX movedir vectodir(hyperpoint P) {
|
|||||||
ld dirdist[MAX_EDGE];
|
ld dirdist[MAX_EDGE];
|
||||||
|
|
||||||
for(int i=0; i<cwt.at->type; i++) {
|
for(int i=0; i<cwt.at->type; i++) {
|
||||||
transmatrix T;
|
transmatrix T = currentmap->adj(cwt.at, (cwt + i).spin);
|
||||||
if(compute_relamatrix((cwt+i).peek(), cwt.at, i, T)) {
|
ld d1 = geo_dist(U * T * C0, Centered * P, iTable);
|
||||||
ld d1 = geo_dist(U * T * C0, Centered * P, iTable);
|
ld d2 = geo_dist(U * T * C0, Centered * C0, iTable);
|
||||||
ld d2 = geo_dist(U * T * C0, Centered * C0, iTable);
|
dirdist[i] = d1 - d2;
|
||||||
dirdist[i] = d1 - d2;
|
|
||||||
}
|
|
||||||
//xspinpush0(-i * 2 * M_PI /cwt.at->type, .5), P);
|
//xspinpush0(-i * 2 * M_PI /cwt.at->type, .5), P);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,11 +144,8 @@ EX void calcMousedest() {
|
|||||||
transmatrix U = ggmatrix(cwt.at);
|
transmatrix U = ggmatrix(cwt.at);
|
||||||
|
|
||||||
for(int i=0; i<cwt.at->type; i++) {
|
for(int i=0; i<cwt.at->type; i++) {
|
||||||
transmatrix T;
|
transmatrix T = currentmap->adj(cwt.at, (cwt+i).spin);
|
||||||
if(compute_relamatrix(cwt.at->move(i), cwt.at, i, T))
|
dists[i] = intval(mouseh, U * T * C0);
|
||||||
dists[i] = intval(mouseh, U * T * C0);
|
|
||||||
else
|
|
||||||
dists[i] = HUGE_VAL;
|
|
||||||
}
|
}
|
||||||
// confusingGeometry() ? ggmatrix(cwt.at) * calc_relative_matrix(cwt.at->move(i), cwt.at, i) : shmup::ggmatrix(cwt.at->move(i))));
|
// confusingGeometry() ? ggmatrix(cwt.at) * calc_relative_matrix(cwt.at->move(i), cwt.at, i) : shmup::ggmatrix(cwt.at->move(i))));
|
||||||
|
|
||||||
|
28
graph.cpp
28
graph.cpp
@ -4020,7 +4020,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, confusingGeometry() ? Gm(cwt.at) * calc_relative_matrix(c2, cwt.at, d) : Gm(c2));
|
forCellIdAll(c2, d, cwt.at) IG(c2) draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, 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 +4028,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, confusingGeometry() ? Gm(cwt.at) * calc_relative_matrix(c2, cwt.at, d) : Gm(c2));
|
draw_movement_arrows(c2, Gm(cwt.at) * currentmap->adj(cwt.at, d));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5020,24 +5020,13 @@ EX int revhint(cell *c, int hint) {
|
|||||||
else return hint;
|
else return hint;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool compute_relamatrix(cell *src, cell *tgt, int direction_hint, transmatrix& T) {
|
|
||||||
if(confusingGeometry()) {
|
|
||||||
T = calc_relative_matrix(src, tgt, revhint(src, direction_hint));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(gmatrix.count(src) && gmatrix.count(tgt))
|
|
||||||
T = inverse(gmatrix[tgt]) * gmatrix[src];
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
EX void animateMovement(cell *src, cell *tgt, int layer, int direction_hint) {
|
EX void animateMovement(cell *src, cell *tgt, int layer, int direction_hint) {
|
||||||
if(vid.mspeed >= 5) return; // no animations!
|
if(vid.mspeed >= 5) return; // no animations!
|
||||||
transmatrix T;
|
transmatrix T;
|
||||||
if(!compute_relamatrix(src, tgt, direction_hint, T)) return;
|
if(direction_hint >= 0 && direction_hint < src->degree() && tgt == src->move(direction_hint))
|
||||||
|
T = currentmap->iadj(src, direction_hint);
|
||||||
|
else
|
||||||
|
T = currentmap->relative_matrix(src, tgt, C0);
|
||||||
animation& a = animations[layer][tgt];
|
animation& a = animations[layer][tgt];
|
||||||
if(animations[layer].count(src)) {
|
if(animations[layer].count(src)) {
|
||||||
a = animations[layer][src];
|
a = animations[layer][src];
|
||||||
@ -5060,7 +5049,10 @@ EX void animateMovement(cell *src, cell *tgt, int layer, int direction_hint) {
|
|||||||
EX void animateAttack(cell *src, cell *tgt, int layer, int direction_hint) {
|
EX void animateAttack(cell *src, cell *tgt, int layer, int direction_hint) {
|
||||||
if(vid.mspeed >= 5) return; // no animations!
|
if(vid.mspeed >= 5) return; // no animations!
|
||||||
transmatrix T;
|
transmatrix T;
|
||||||
if(!compute_relamatrix(src, tgt, direction_hint, T)) return;
|
if(direction_hint >= 0 && direction_hint < src->degree() && tgt == src->move(direction_hint))
|
||||||
|
T = currentmap->iadj(src, direction_hint);
|
||||||
|
else
|
||||||
|
T = currentmap->relative_matrix(src, tgt, C0);
|
||||||
bool newanim = !animations[layer].count(src);
|
bool newanim = !animations[layer].count(src);
|
||||||
animation& a = animations[layer][src];
|
animation& a = animations[layer][src];
|
||||||
a.attacking = 1;
|
a.attacking = 1;
|
||||||
|
3
hud.cpp
3
hud.cpp
@ -326,8 +326,7 @@ void drawMobileArrow(int i) {
|
|||||||
cell *c = cwt.at->move(i);
|
cell *c = cwt.at->move(i);
|
||||||
if(!c) return;
|
if(!c) return;
|
||||||
|
|
||||||
transmatrix T;
|
transmatrix T = currentmap->adj(cwt.at, i);
|
||||||
if(!compute_relamatrix(c, cwt.at, i, T)) return;
|
|
||||||
|
|
||||||
// color_t col = getcs().uicolor;
|
// color_t col = getcs().uicolor;
|
||||||
// col -= (col & 0xFF) >> 1;
|
// col -= (col & 0xFF) >> 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user