mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-11-01 06:23:00 +00:00 
			
		
		
		
	better description of animations
This commit is contained in:
		| @@ -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); | ||||
|     }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue