mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-27 14:37:16 +00:00
better description of animations
This commit is contained in:
parent
8ed2433ad2
commit
31df0c1ec6
@ -542,7 +542,18 @@ void animator(string caption, ld& param, char key) {
|
||||
dialog::add_action([¶m, caption] () {
|
||||
if(param == 0) {
|
||||
param = 1;
|
||||
dialog::editNumber(param, 0, 10, 1, 1, caption, "");
|
||||
string s =
|
||||
XLAT(
|
||||
"The value of 1 means that the period of this animation equals the period set in the animation menu. "
|
||||
"Larger values correspond to faster animations.");
|
||||
|
||||
if(¶m == &anim_param)
|
||||
s = XLAT(
|
||||
"Most graphical parameters with real values can have their values changed during the animation. "
|
||||
"To achieve this effect, 'choose parameters to animate', change the parameters to their final values "
|
||||
"in the animation, and 'choose parameters to animate' again.\n\n") + s;
|
||||
|
||||
dialog::editNumber(param, 0, 10, 1, 1, caption, s);
|
||||
}
|
||||
else param = 0;
|
||||
});
|
||||
@ -556,12 +567,17 @@ void show() {
|
||||
gamescreen(0);
|
||||
animation_period = 2 * M_PI * animation_lcm / animation_factor;
|
||||
dialog::init(XLAT("animations"), iinf[itPalace].color, 150, 100);
|
||||
dialog::addSelItem("period", fts(period)+ " ms", 'p');
|
||||
dialog::add_action([] () { dialog::editNumber(period, 0, 10000, 1000, 200, "period", ""); });
|
||||
dialog::addSelItem(XLAT("period"), fts(period)+ " ms", 'p');
|
||||
dialog::add_action([] () { dialog::editNumber(period, 0, 10000, 1000, 200, XLAT("period"),
|
||||
XLAT("This is the period of the whole animation, though in some settings the animation can have a different period or be aperiodic. "
|
||||
"Changing the value will make the whole animation slower or faster."
|
||||
)); });
|
||||
if(animation_lcm > 1) {
|
||||
dialog::addSelItem("game animation period", fts(animation_period)+ " ms", 'G');
|
||||
dialog::addSelItem(XLAT("game animation period"), fts(animation_period)+ " ms", 'G');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(animation_period, 0, 10000, 1000, 1000, "game animation period", "");
|
||||
dialog::editNumber(animation_period, 0, 10000, 1000, 1000, XLAT("game animation period"),
|
||||
XLAT("Least common multiple of the animation periods of all the game objects on screen, such as rotating items.")
|
||||
);
|
||||
dialog::reaction = [] () { animation_factor = 2 * M_PI * animation_lcm / animation_period; };
|
||||
dialog::extra_options = [] () {
|
||||
dialog::addItem("default", 'D');
|
||||
@ -572,17 +588,17 @@ void show() {
|
||||
};
|
||||
});
|
||||
}
|
||||
dialog::addBoolItem("no movement", ma == maNone, '0');
|
||||
dialog::addBoolItem(XLAT("no movement"), ma == maNone, '0');
|
||||
dialog::add_action([] () { ma = maNone; });
|
||||
dialog::addBoolItem("translation", ma == maTranslation, '1');
|
||||
dialog::addBoolItem(XLAT("translation"), ma == maTranslation, '1');
|
||||
dialog::add_action([] () { ma = maTranslation; });
|
||||
dialog::addBoolItem("rotation", ma == maRotation, '2');
|
||||
dialog::addBoolItem(XLAT("rotation"), ma == maRotation, '2');
|
||||
dialog::add_action([] () { ma = maRotation; });
|
||||
if(hyperbolic) {
|
||||
dialog::addBoolItem("parabolic", ma == maParabolic, '3');
|
||||
dialog::addBoolItem(XLAT("parabolic"), ma == maParabolic, '3');
|
||||
dialog::add_action([] () { ma = maParabolic; });
|
||||
}
|
||||
dialog::addBoolItem("circle", ma == maCircle, '4');
|
||||
dialog::addBoolItem(XLAT("circle"), ma == maCircle, '4');
|
||||
dialog::add_action([] () { ma = maCircle;
|
||||
rotation_center_h = viewctr;
|
||||
rotation_center_c = centerover;
|
||||
@ -590,27 +606,27 @@ void show() {
|
||||
});
|
||||
switch(ma) {
|
||||
case maCircle: {
|
||||
animator("circle spins", circle_spins, 's');
|
||||
dialog::addSelItem("circle radius", fts(circle_radius), 'c');
|
||||
animator(XLAT("circle spins"), circle_spins, 's');
|
||||
dialog::addSelItem(XLAT("circle radius"), fts(circle_radius), 'c');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(circle_radius, 0, 10, 0.1, acosh(1.), "circle radius", "");
|
||||
dialog::editNumber(circle_radius, 0, 10, 0.1, acosh(1.), XLAT("circle radius"), "");
|
||||
dialog::extra_options = [] () {
|
||||
if(hyperbolic) {
|
||||
// area = 2pi (cosh(r)-1)
|
||||
dialog::addSelItem("double spin", fts(acosh(2.)), 'a');
|
||||
dialog::addSelItem(XLAT("double spin"), fts(acosh(2.)), 'a');
|
||||
dialog::add_action([] () { circle_radius = acosh(2.); });
|
||||
dialog::addSelItem("triple spin", fts(acosh(3.)), 'b');
|
||||
dialog::addSelItem(XLAT("triple spin"), fts(acosh(3.)), 'b');
|
||||
dialog::add_action([] () { circle_radius = acosh(3.); });
|
||||
}
|
||||
if(sphere) {
|
||||
dialog::addSelItem("double spin", fts(acos(1/2.)), 'a');
|
||||
dialog::addSelItem(XLAT("double spin"), fts(acos(1/2.)), 'a');
|
||||
dialog::add_action([] () { circle_radius = acos(1/2.); });
|
||||
dialog::addSelItem("triple spin", fts(acos(1/3.)), 'b');
|
||||
dialog::addSelItem(XLAT("triple spin"), fts(acos(1/3.)), 'b');
|
||||
dialog::add_action([] () { circle_radius = acos(1/3.); });
|
||||
}
|
||||
};
|
||||
});
|
||||
dialog::addColorItem("draw the circle", circle_display_color, 'd');
|
||||
dialog::addColorItem(XLAT("draw the circle"), circle_display_color, 'd');
|
||||
dialog::add_action([] () {
|
||||
dialog::openColorDialog(circle_display_color, NULL);
|
||||
});
|
||||
@ -621,32 +637,32 @@ void show() {
|
||||
if(ma == maTranslation && conformal::on)
|
||||
dialog::addBreak(300);
|
||||
else if(ma == maTranslation) {
|
||||
dialog::addSelItem("cycle length", fts(cycle_length), 'c');
|
||||
dialog::addSelItem(XLAT("cycle length"), fts(cycle_length), 'c');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(cycle_length, 0, 10, 0.1, 2*M_PI, "shift", "");
|
||||
dialog::extra_options = [] () {
|
||||
dialog::addSelItem("full circle", fts(2 * M_PI), 'a');
|
||||
dialog::addSelItem(XLAT("full circle"), fts(2 * M_PI), 'a');
|
||||
dialog::add_action([] () { cycle_length = 2 * M_PI; });
|
||||
dialog::addSelItem("Zebra period", fts(2.898149445355172), 'b');
|
||||
dialog::addSelItem(XLAT("Zebra period"), fts(2.898149445355172), 'b');
|
||||
dialog::add_action([] () { cycle_length = 2.898149445355172; });
|
||||
dialog::addSelItem("Bolza period", fts(2 * 1.528571), 'c');
|
||||
dialog::addSelItem(XLAT("Bolza period"), fts(2 * 1.528571), 'c');
|
||||
dialog::add_action([] () { cycle_length = 2 * 1.528571; });
|
||||
};
|
||||
});
|
||||
}
|
||||
else {
|
||||
dialog::addSelItem("cells to go", fts(parabolic_length), 'c');
|
||||
dialog::addSelItem(XLAT("cells to go"), fts(parabolic_length), 'c');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(parabolic_length, 0, 10, 1, 1, "cells to go", "");
|
||||
});
|
||||
}
|
||||
dialog::addSelItem("shift", fts(shift_angle) + "°", 's');
|
||||
dialog::addSelItem(XLAT("shift"), fts(shift_angle) + "°", 's');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(shift_angle, 0, 90, 15, 0, "shift", "");
|
||||
dialog::editNumber(shift_angle, 0, 90, 15, 0, XLAT("shift"), "");
|
||||
});
|
||||
dialog::addSelItem("movement angle", fts(movement_angle) + "°", 'm');
|
||||
dialog::addSelItem(XLAT("movement angle"), fts(movement_angle) + "°", 'm');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(movement_angle, 0, 360, 15, 0, "movement angle", "");
|
||||
dialog::editNumber(movement_angle, 0, 360, 15, 0, XLAT("movement angle"), "");
|
||||
});
|
||||
break;
|
||||
}
|
||||
@ -654,21 +670,20 @@ void show() {
|
||||
dialog::addBreak(300);
|
||||
}
|
||||
}
|
||||
animator("Ocean", env_ocean, 'o');
|
||||
animator("Volcanic Wasteland", env_volcano, 'v');
|
||||
animator(XLATN("Ocean"), env_ocean, 'o');
|
||||
animator(XLATN("Volcanic Wasteland"), env_volcano, 'v');
|
||||
|
||||
#if CAP_RUG
|
||||
if(rug::rugged) {
|
||||
animator("rotate the Rug", rug_rotation1, 'r');
|
||||
animator(XLAT("screen-relative rotation"), rug_rotation1, 'r');
|
||||
if(rug_rotation1) {
|
||||
dialog::addSelItem("Rug angle", fts(rug_angle) + "°", 'a');
|
||||
dialog::addSelItem(XLAT("angle"), fts(rug_angle) + "°", 'a');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(rug_angle, 0, 360, 15, 0, "Rug angle", "");
|
||||
});
|
||||
}
|
||||
else dialog::addBreak(100);
|
||||
animator("rotate the Rug (2)", rug_rotation2, 'r');
|
||||
dialog::addBoolItem("rotate the Rug (2)", rug_rotation2, 'u');
|
||||
animator(XLAT("model-relative rotation"), rug_rotation2, 'r');
|
||||
animator(XLAT("automatic move speed"), rug::ruggo, 'M');
|
||||
dialog::add_action([] () {
|
||||
dialog::editNumber(rug::ruggo, 0, 10, 1, 1, XLAT("automatic move speed"), XLAT("Move automatically without pressing any keys."));
|
||||
@ -681,23 +696,23 @@ void show() {
|
||||
}
|
||||
#endif
|
||||
if(among(pmodel, mdHyperboloid, mdHemisphere, mdBall))
|
||||
animator("3D rotation", ballangle_rotation, 'r');
|
||||
animator(XLAT("3D rotation"), ballangle_rotation, 'r');
|
||||
|
||||
animator("animate parameter change", anim_param, 'P');
|
||||
dialog::addSelItem("choose parameters to animate", its(paramstate), 'C');
|
||||
animator(XLAT("animate parameter change"), anim_param, 'P');
|
||||
dialog::addSelItem(XLAT("choose parameters to animate"), its(paramstate), 'C');
|
||||
dialog::add_action(next_paramstate);
|
||||
|
||||
dialog::addBoolItem("history", (conformal::on || conformal::includeHistory), 'h');
|
||||
dialog::addBoolItem(XLAT("history mode"), (conformal::on || conformal::includeHistory), 'h');
|
||||
dialog::add_action([] () { pushScreen(conformal::history_menu); });
|
||||
|
||||
#if CAP_FILES
|
||||
if(needs_highqual)
|
||||
dialog::addInfo("some parameters will only change in recorded animation");
|
||||
dialog::addInfo(XLAT("some parameters will only change in recorded animation"));
|
||||
else
|
||||
dialog::addBreak(100);
|
||||
dialog::addSelItem("frames to record", its(noframes), 'n');
|
||||
dialog::add_action([] () { dialog::editNumber(noframes, 0, 300, 30, 5, "frames to record", ""); });
|
||||
dialog::addSelItem("record to a file", animfile, 'R');
|
||||
dialog::addSelItem(XLAT("frames to record"), its(noframes), 'n');
|
||||
dialog::add_action([] () { dialog::editNumber(noframes, 0, 300, 30, 5, XLAT("frames to record"), ""); });
|
||||
dialog::addSelItem(XLAT("record to a file"), animfile, 'R');
|
||||
dialog::add_action([] () {
|
||||
dialog::openFileDialog(animfile, XLAT("record to a file"), ".png", record_animation);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user