1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-24 17:10:36 +00:00

line animation:: loops in quotient spaces

This commit is contained in:
Zeno Rogue 2019-06-18 14:17:17 +02:00
parent 44890b4fb2
commit 770fb1f5e1
2 changed files with 8 additions and 6 deletions

View File

@ -301,7 +301,7 @@ namespace conformal {
void create(cell *start, cell *target, transmatrix last) { void create(cell *start, cell *target, transmatrix last) {
if(target == start) { if(target == start && !(quotient && isize(path_for_lineanimation) > 1)) {
addMessage("Must go a distance from the starting point"); addMessage("Must go a distance from the starting point");
return; return;
} }
@ -362,9 +362,9 @@ namespace conformal {
create(currentmap->gamestart(), cwt.at, Id); create(currentmap->gamestart(), cwt.at, Id);
} }
void create_recenter_to_view() { void create_recenter_to_view(bool precise) {
cell *c = centerover.at ? centerover.at : cwt.at; cell *c = centerover.at ? centerover.at : cwt.at;
create(path_for_lineanimation[0], c, inverse(ggmatrix(c))); create(path_for_lineanimation[0], c, precise ? inverse(ggmatrix(c)) : Id);
} }
transmatrix rotmatrix() { transmatrix rotmatrix() {
@ -1066,6 +1066,7 @@ namespace conformal {
dialog::addBoolItem(XLAT("animate from start to current player position"), (on), 'e'); dialog::addBoolItem(XLAT("animate from start to current player position"), (on), 'e');
dialog::addBoolItem(XLAT("animate from last recenter to current view"), (on), 'E'); dialog::addBoolItem(XLAT("animate from last recenter to current view"), (on), 'E');
dialog::addBoolItem(XLAT("animate from last recenter to precise current view"), (on), 'E'-64);
if(on) dialog::addSelItem(XLAT("animation speed"), fts(lvspeed), 'a'); if(on) dialog::addSelItem(XLAT("animation speed"), fts(lvspeed), 'a');
else dialog::addBreak(100); else dialog::addBreak(100);
dialog::addSelItem(XLAT("extend the ends"), fts(extra_line_steps), 'p'); dialog::addSelItem(XLAT("extend the ends"), fts(extra_line_steps), 'p');
@ -1093,7 +1094,7 @@ namespace conformal {
void handleKeyC(int sym, int uni) { void handleKeyC(int sym, int uni) {
dialog::handleNavigation(sym, uni); dialog::handleNavigation(sym, uni);
if(uni == 'e' || uni == 'E') { if(uni == 'e' || uni == 'E' || uni == 'E'-64) {
if(on) clear(); if(on) clear();
else { else {
if(canmove && !cheater) { if(canmove && !cheater) {
@ -1101,7 +1102,8 @@ namespace conformal {
return; return;
} }
if(canmove && cheater) cheater++; if(canmove && cheater) cheater++;
if(uni == 'E') create_recenter_to_view(); if(uni == 'E') create_recenter_to_view(false);
else if(uni == 'E'-64) create_recenter_to_view(true);
else create_playerpath(); else create_playerpath();
} }
} }

View File

@ -1497,7 +1497,7 @@ namespace conformal {
void create(cell *start, cell *target); void create(cell *start, cell *target);
void create_playerpath(); void create_playerpath();
void create_recenter_to_view(); void create_recenter_to_view(bool precise);
void clear(); void clear();
void model_menu(); void model_menu();
void history_menu(); void history_menu();