mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 05:52:59 +00:00 
			
		
		
		
	cleanup: help. Also rug help displayed when rug is on
This commit is contained in:
		
							
								
								
									
										191
									
								
								help.cpp
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								help.cpp
									
									
									
									
									
								
							| @@ -5,34 +5,71 @@ string help; | |||||||
|  |  | ||||||
| function<void()> help_delegate; | function<void()> help_delegate; | ||||||
|  |  | ||||||
| string buildHelpText() { | struct help_extension { | ||||||
|  |   char key; | ||||||
|  |   string text; | ||||||
|  |   reaction_t action; | ||||||
|  |   }; | ||||||
|  | vector<help_extension> help_extensions; | ||||||
|  |  | ||||||
|  | vector<string> extra_keys = { | ||||||
|  |   "1 = orthogonal/Gans model", | ||||||
|  |   "2 = small Poincare model/stereographic projection", | ||||||
|  |   "3 = big Poincare model/stereographic projection", | ||||||
|  |   "4 = Klein model/gnomonic projection", | ||||||
|  |   "5 = change wall display mode", | ||||||
|  |   "6 = change grid", | ||||||
|  |   "7 = change heptagon marking", | ||||||
|  |   "8 = change background color", | ||||||
|  |   "9 = hyperboloid model", | ||||||
|  |   "qweasdzxc, hjklyubn, numpad = move/skip turn", | ||||||
|  |   "arrows = panning", | ||||||
|  |   "o = world overview", | ||||||
|  |   "v = menu", | ||||||
|  |   "F1 = help", | ||||||
|  |   "F5 = restart game", | ||||||
|  |   "F10 = quit game", | ||||||
|  |   "Esc = quest status", | ||||||
|  |   "Alt+Enter = full screen", | ||||||
|  |   "Alt = highlight interesting stuff", | ||||||
|  |   "t = use a ranged Orb (target center of the screen)", | ||||||
|  |   "g = drop a Dead Orb", | ||||||
|  |   "click left mouse button = move/skip", | ||||||
|  |   "shift+click left mouse button = use ranged Orb", | ||||||
|  |   "click right mouse button = context help", | ||||||
|  |   "mousewheel up = panning", | ||||||
|  |   "hold middle mouse button = panning", | ||||||
|  |   "mousewheel down = move/skip", | ||||||
|  |   "shift + mousewheel = change projection", | ||||||
|  |   "ctrl + mousewheel = change zoom", | ||||||
|  |   "ctrl + shift + mousewheel = change both projection and zoom", | ||||||
|  |   "ctrl + hold middle button = move the screen", | ||||||
|  |   "shift + middle button = reset position" | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  | void buildHelpText() { | ||||||
|   DEBB(DF_GRAPH, (debugfile,"buildHelpText\n")); |   DEBB(DF_GRAPH, (debugfile,"buildHelpText\n")); | ||||||
|  |  | ||||||
| #if CAP_ROGUEVIZ   |   help = XLAT("Welcome to HyperRogue"); | ||||||
|   if(rogueviz::on) return rogueviz::makehelp(); |  | ||||||
| #endif |  | ||||||
|    |  | ||||||
|   string h; |  | ||||||
|   h += XLAT("Welcome to HyperRogue"); |  | ||||||
| #if ISANDROID   | #if ISANDROID   | ||||||
|   h += XLAT(" for Android"); |   help += XLAT(" for Android"); | ||||||
| #endif | #endif | ||||||
| #if ISIOS | #if ISIOS | ||||||
|   h += XLAT(" for iOS"); |   help += XLAT(" for iOS"); | ||||||
| #endif | #endif | ||||||
|   h += XLAT("! (version %1)\n\n", VER); |   help += XLAT("! (version %1)\n\n", VER); | ||||||
|    |    | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "You have been trapped in a strange, non-Euclidean world. Collect as much treasure as possible " |     "You have been trapped in a strange, non-Euclidean world. Collect as much treasure as possible " | ||||||
|     "before being caught by monsters. The more treasure you collect, the more " |     "before being caught by monsters. The more treasure you collect, the more " | ||||||
|     "monsters come to hunt you, as long as you are in the same land type. The " |     "monsters come to hunt you, as long as you are in the same land type. The " | ||||||
|     "Orbs of Yendor are the ultimate treasure; get at least one of them to win the game!" |     "Orbs of Yendor are the ultimate treasure; get at least one of them to win the game!" | ||||||
|     ); |     ); | ||||||
|   h += XLAT(" (press ESC for some hints about it)."); |   help += XLAT(" (press ESC for some hints about it)."); | ||||||
|   h += "\n\n"; |   help += "\n\n"; | ||||||
|    |    | ||||||
|   if(!shmup::on && !hardcore) |   if(!shmup::on && !hardcore) | ||||||
|     h += XLAT( |     help += XLAT( | ||||||
|       "You can fight most monsters by moving into their location. " |       "You can fight most monsters by moving into their location. " | ||||||
|       "The monster could also kill you by moving into your location, but the game " |       "The monster could also kill you by moving into your location, but the game " | ||||||
|       "automatically cancels all moves which result in that.\n\n" |       "automatically cancels all moves which result in that.\n\n" | ||||||
| @@ -40,22 +77,22 @@ string buildHelpText() { | |||||||
|  |  | ||||||
| #if CAP_INV     | #if CAP_INV     | ||||||
|   if(inv::on) |   if(inv::on) | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     inv::helptext |     inv::helptext | ||||||
|     ); |     ); | ||||||
|   else |   else | ||||||
| #endif | #endif | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "There are many lands in HyperRogue. Collect 10 treasure " |     "There are many lands in HyperRogue. Collect 10 treasure " | ||||||
|     "in the given land type to complete it; this enables you to " |     "in the given land type to complete it; this enables you to " | ||||||
|     "find the magical Orbs of this land, and in some cases " |     "find the magical Orbs of this land, and in some cases " | ||||||
|     "get access to new lands. At 25 treasures " |     "get access to new lands. At 25 treasures " | ||||||
|     "this type of Orbs starts appearing in other lands as well. Press 'o' to " |     "this type of Orbs starts appearing in other lands as well. Press 'o' to " | ||||||
|     "get the details of all the Lands.\n\n"); |     "get the details of all the Lands.\n\n"); | ||||||
|   h += "\n\n"; |   help += "\n\n"; | ||||||
|      |      | ||||||
| #if ISMOBILE | #if ISMOBILE | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "Usually, you move by touching somewhere on the map; you can also touch one " |     "Usually, you move by touching somewhere on the map; you can also touch one " | ||||||
|     "of the four buttons on the map corners to change this (to scroll the map " |     "of the four buttons on the map corners to change this (to scroll the map " | ||||||
|     "or get information about map objects). You can also touch the " |     "or get information about map objects). You can also touch the " | ||||||
| @@ -63,57 +100,64 @@ string buildHelpText() { | |||||||
|     ); |     ); | ||||||
| #else | #else | ||||||
|   if(DEFAULTCONTROL) |   if(DEFAULTCONTROL) | ||||||
|     h += XLAT( |     help += XLAT( | ||||||
|       "Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Home/Space. " |       "Move with mouse, num pad, qweadzxc, or hjklyubn. Wait by pressing 's' or '.'. Spin the world with arrows, PageUp/Down, and Home/Space. " | ||||||
|       "To save the game you need an Orb of Safety. Press 'v' for the main menu (configuration, special modes, etc.), ESC for the quest status.\n\n" |       "To save the game you need an Orb of Safety. Press 'v' for the main menu (configuration, special modes, etc.), ESC for the quest status.\n\n" | ||||||
|       ); |       ); | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "You can right click any element to get more information about it.\n\n" |     "You can right click any element to get more information about it.\n\n" | ||||||
|     ); |     ); | ||||||
| #if ISMAC | #if ISMAC | ||||||
|   h += XLAT("(You can also use right Shift)\n\n"); |   help += XLAT("(You can also use right Shift)\n\n"); | ||||||
| #endif | #endif | ||||||
| #endif | #endif | ||||||
|   h += XLAT("See more on the website: ")  |   help += XLAT("See more on the website: ")  | ||||||
|     + "http//roguetemple.com/z/hyper/\n\n"; |     + "http//roguetemple.com/z/hyper/\n\n"; | ||||||
|    |    | ||||||
| #if CAP_TOUR | #if CAP_TOUR | ||||||
|   h += XLAT("Try the Tutorial to help with understanding the " |   help += XLAT("Try the Tutorial to help with understanding the " | ||||||
|     "geometry of HyperRogue (menu -> special modes).\n\n"); |     "geometry of HyperRogue (menu -> special modes).\n\n"); | ||||||
| #endif | #endif | ||||||
|    |    | ||||||
|   h += XLAT("Still confused? Read the FAQ on the HyperRogue website!\n\n"); |   help += XLAT("Still confused? Read the FAQ on the HyperRogue website!\n\n"); | ||||||
|    |    | ||||||
|   return h; |   help_extensions.clear(); | ||||||
|  |    | ||||||
|  |   help_extensions.push_back(help_extension{'c', XLAT("credits"), [] () { buildCredits(); }}); | ||||||
|  | #if ISMOBILE == 0 | ||||||
|  |   help_extensions.push_back(help_extension{'k', XLAT("advanced keyboard shortcuts"), [] () {  | ||||||
|  |     help = ""; | ||||||
|  |     for(string s: extra_keys) help += s, help += "\n\n"; | ||||||
|  |     }}); | ||||||
|  | #endif | ||||||
|   } |   } | ||||||
|  |  | ||||||
| string buildCredits() { | void buildCredits() { | ||||||
|   string h; |   help = ""; | ||||||
|   h += XLAT("game design, programming, texts and graphics by Zeno Rogue <zeno@attnam.com>\n\n"); |   help += XLAT("game design, programming, texts and graphics by Zeno Rogue <zeno@attnam.com>\n\n"); | ||||||
|   if(lang() != 0) |   if(lang() != 0) | ||||||
|     h += XLAT("add credits for your translation here"); |     help += XLAT("add credits for your translation here"); | ||||||
| #ifndef NOLICENSE | #ifndef NOLICENSE | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "released under GNU General Public License version 2 and thus " |     "released under GNU General Public License version 2 and thus " | ||||||
|     "comes with absolutely no warranty; see COPYING for details\n\n" |     "comes with absolutely no warranty; see COPYING for details\n\n" | ||||||
|     ); |     ); | ||||||
| #endif | #endif | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "special thanks to the following people for their bug reports, feature requests, porting, and other help:\n\n%1\n\n", |     "special thanks to the following people for their bug reports, feature requests, porting, and other help:\n\n%1\n\n", | ||||||
|     "Konstantin Stupnik, ortoslon, chrysn, Adam Borowski, Damyan Ivanov, Ryan Farnsley, mcobit, Darren Grey, tricosahedron, Maciej Chojecki, Marek Čtrnáct, " |     "Konstantin Stupnik, ortoslon, chrysn, Adam Borowski, Damyan Ivanov, Ryan Farnsley, mcobit, Darren Grey, tricosahedron, Maciej Chojecki, Marek Čtrnáct, " | ||||||
|     "wonderfullizardofoz, Piotr Migdał, tehora, Michael Heerdegen, Sprite Guard, zelda0x181e, Vipul, snowyowl0, Patashu, phenomist, Alan Malloy, Tom Fryers, Sinquetica, _monad, CtrlAltDestroy, jruderman, " |     "wonderfullizardofoz, Piotr Migdał, tehora, Michael Heerdegen, Sprite Guard, zelda0x181e, Vipul, snowyowl0, Patashu, phenomist, Alan Malloy, Tom Fryers, Sinquetica, _monad, CtrlAltDestroy, jruderman, " | ||||||
|     "Kojiguchi Kazuki, baconcow, Alan, SurelyYouJest, hotdogPi"  |     "Kojiguchi Kazuki, baconcow, Alan, SurelyYouJest, hotdogPi"  | ||||||
|     ); |     ); | ||||||
| #ifdef EXTRALICENSE | #ifdef EXTRALICENSE | ||||||
|   h += EXTRALICENSE; |   help += EXTRALICENSE; | ||||||
| #endif | #endif | ||||||
| #if !ISMOBILE | #if !ISMOBILE | ||||||
|   h += XLAT( |   help += XLAT( | ||||||
|     "\n\nSee sounds/credits.txt for credits for sound effects" |     "\n\nSee sounds/credits.txt for credits for sound effects" | ||||||
|     ); |     ); | ||||||
|   #endif |   #endif | ||||||
|   if(musiclicense != "") h += musiclicense; |   if(musiclicense != "") help += musiclicense; | ||||||
|   return h; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
| string pushtext(stringpar p) { | string pushtext(stringpar p) { | ||||||
| @@ -805,13 +849,6 @@ void describeMouseover() { | |||||||
|   if(mousey < vid.fsize * 3/2) getcstat = SDLK_F1; |   if(mousey < vid.fsize * 3/2) getcstat = SDLK_F1; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| struct help_extension { |  | ||||||
|   char key; |  | ||||||
|   string text; |  | ||||||
|   reaction_t action; |  | ||||||
|   }; |  | ||||||
| vector<help_extension> help_extensions; |  | ||||||
|  |  | ||||||
| void showHelp() { | void showHelp() { | ||||||
|   gamescreen(2); |   gamescreen(2); | ||||||
|   cmode = sm::HELP | sm::DOTOUR; |   cmode = sm::HELP | sm::DOTOUR; | ||||||
| @@ -821,8 +858,6 @@ void showHelp() { | |||||||
|     return; |     return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   if(help == "@") help = buildHelpText(); |  | ||||||
|    |  | ||||||
|   string help2; |   string help2; | ||||||
|   if(help[0] == '@') { |   if(help[0] == '@') { | ||||||
|     int iv = help.find("\t"); |     int iv = help.find("\t"); | ||||||
| @@ -852,60 +887,40 @@ void showHelp() { | |||||||
|         act(); |         act(); | ||||||
|         return; |         return; | ||||||
|         } |         } | ||||||
|     if(sym == SDLK_F1 && help != "@")  |     if(sym == SDLK_F1)  { | ||||||
|       help = "@"; |       auto i = help; | ||||||
|  |       buildHelpText(); | ||||||
|  |       if(help == i) popScreen(); | ||||||
|  |       } | ||||||
|     else if(doexiton(sym, uni)) |     else if(doexiton(sym, uni)) | ||||||
|       popScreen(); |       popScreen(); | ||||||
|     }; |     }; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| vector<string> extra_keys = { |  | ||||||
|   "1 = orthogonal/Gans model", |  | ||||||
|   "2 = small Poincare model/stereographic projection", |  | ||||||
|   "3 = big Poincare model/stereographic projection", |  | ||||||
|   "4 = Klein model/gnomonic projection", |  | ||||||
|   "5 = change wall display mode", |  | ||||||
|   "6 = change grid", |  | ||||||
|   "7 = change heptagon marking", |  | ||||||
|   "8 = change background color", |  | ||||||
|   "9 = hyperboloid model", |  | ||||||
|   "qweasdzxc, hjklyubn, numpad = move/skip turn", |  | ||||||
|   "arrows = panning", |  | ||||||
|   "o = world overview", |  | ||||||
|   "v = menu", |  | ||||||
|   "F1 = help", |  | ||||||
|   "F5 = restart game", |  | ||||||
|   "F10 = quit game", |  | ||||||
|   "Esc = quest status", |  | ||||||
|   "Alt+Enter = full screen", |  | ||||||
|   "Alt = highlight interesting stuff", |  | ||||||
|   "t = use a ranged Orb (target center of the screen)", |  | ||||||
|   "g = drop a Dead Orb", |  | ||||||
|   "click left mouse button = move/skip", |  | ||||||
|   "shift+click left mouse button = use ranged Orb", |  | ||||||
|   "click right mouse button = context help", |  | ||||||
|   "mousewheel up = panning", |  | ||||||
|   "hold middle mouse button = panning", |  | ||||||
|   "mousewheel down = move/skip", |  | ||||||
|   "shift + mousewheel = change projection", |  | ||||||
|   "ctrl + mousewheel = change zoom", |  | ||||||
|   "ctrl + shift + mousewheel = change both projection and zoom", |  | ||||||
|   "ctrl + hold middle button = move the screen", |  | ||||||
|   "shift + middle button = reset position" |  | ||||||
|   }; |  | ||||||
|  |  | ||||||
| void gotoHelp(const string& h) { | void gotoHelp(const string& h) { | ||||||
|   help = h; |   help = h; | ||||||
|   help_extensions.clear(); |   help_extensions.clear(); | ||||||
|   pushScreen(showHelp); |   pushScreen(showHelp); | ||||||
|   if(help == "@" || help == buildHelpText()) { |   if(help == "@") { | ||||||
|     help_extensions.push_back(help_extension{'c', XLAT("credits"), [] () { help = buildCredits(); }}); |  | ||||||
| #if ISMOBILE == 0 | #if CAP_ROGUEVIZ   | ||||||
|     help_extensions.push_back(help_extension{'k', XLAT("advanced keyboard shortcuts"), [] () {  |   if(rogueviz::on) { | ||||||
|       help = ""; |     help = rogueviz::makehelp(); | ||||||
|       for(string s: extra_keys) help += s, help += "\n\n"; |     help_extensions.push_back(help_extension{'u', XLAT("RogueViz menu"), [] () { popScreen(); pushScreen(rogueviz::showMenu); }});     | ||||||
|       }}); |     return; | ||||||
|  |     } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if CAP_RUG | ||||||
|  |   if(rug::rugged) { | ||||||
|  |     help = rug::makehelp(); | ||||||
|  |     help_extensions.push_back(help_extension{'m', XLAT("Hypersian Rug menu"), [] () { popScreen(); rug::select(); }});     | ||||||
|  |     help_extensions.push_back(help_extension{'h', XLAT("HyperRogue help"), [] () { buildHelpText(); }});     | ||||||
|  |     return; | ||||||
|  |     } | ||||||
|  | #endif | ||||||
|  |    | ||||||
|  |     buildHelpText(); | ||||||
|     } |     } | ||||||
|   if(help == "HELPGEN") helpgenerator(); |   if(help == "HELPGEN") helpgenerator(); | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								hyper.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								hyper.h
									
									
									
									
									
								
							| @@ -769,6 +769,7 @@ namespace rug { | |||||||
|   void drawRugScene(); |   void drawRugScene(); | ||||||
|   void push_all_points(int coord, ld val); |   void push_all_points(int coord, ld val); | ||||||
|   void apply_rotation(const transmatrix& t); |   void apply_rotation(const transmatrix& t); | ||||||
|  |   string makehelp(); | ||||||
| #endif | #endif | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -1781,8 +1782,8 @@ extern int lightat, safetyat; | |||||||
|  |  | ||||||
| int watercolor(int phase); | int watercolor(int phase); | ||||||
| bool doHighlight(); | bool doHighlight(); | ||||||
| string buildHelpText(); | void buildHelpText(); | ||||||
| string buildCredits(); | void buildCredits(); | ||||||
| void setAppropriateOverview(); | void setAppropriateOverview(); | ||||||
| bool quitsaves(); | bool quitsaves(); | ||||||
| extern bool sidescreen; | extern bool sidescreen; | ||||||
|   | |||||||
| @@ -3363,21 +3363,21 @@ S("\n\n(For the heptagonal mode, the radius has been reduced to 2 for closing pl | |||||||
|  |  | ||||||
| S("hypersian rug mode", "mód hyperského koberce") | S("hypersian rug mode", "mód hyperského koberce") | ||||||
|  |  | ||||||
| S( | S("In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | ||||||
|   "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " |   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n", | ||||||
|   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n" |   "V tomto módu můžete hrát HyperRogue na 3D modelu části hyperbolické roviny " | ||||||
|   "This requires some OpenGL extensions and may crash or not work correctly -- enabling " |   "podobném tomu, co vytváří generátor papírových modelů nebo hyperbolické háčkování.\n\n") | ||||||
|  |  | ||||||
|  | S("This requires some OpenGL extensions and may crash or not work correctly -- enabling " | ||||||
|   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " |   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " | ||||||
|   "will make the rendering faster, but the surface will be rendered only once, so " |   "will make the rendering faster, but the surface will be rendered only once, so " | ||||||
|   "you won't be able to play a game on it.\n\n" |   "you won't be able to play a game on it.\n\n", | ||||||
|   "Use arrow keys to rotate, Page Up/Down to zoom.", |  | ||||||
|  |  | ||||||
|   "V tomto módu můžete hrát HyperRogue na 3D modelu části hyperbolické roviny " |  | ||||||
|   "podobném tomu, co vytváří generátor papírových modelů nebo hyperbolické háčkování.\n\n" |  | ||||||
|   "Je k tomu zapotřebí OpenGL a je možné, že v tomto módu hra spadne nebo nepoběží " |   "Je k tomu zapotřebí OpenGL a je možné, že v tomto módu hra spadne nebo nepoběží " | ||||||
|   "správně -- v takovém případě může pomoci zapnout možnost 'renderuj textury bez OpenGL'. " |   "správně -- v takovém případě může pomoci zapnout možnost 'renderuj textury bez OpenGL'. " | ||||||
|   "Kromě toho je možné renderování urychlit volbou 'renderuj jednou', ale v takovém případě " |   "Kromě toho je možné renderování urychlit volbou 'renderuj jednou', ale v takovém případě " | ||||||
|   "bude povrch vygenerován pouze jednou, takže na něm není možné hrát.\n\n" |   "bude povrch vygenerován pouze jednou, takže na něm není možné hrát.\n\n") | ||||||
|  |    | ||||||
|  | S("Use arrow keys to rotate, Page Up/Down to zoom.", | ||||||
|   "Model se otáčí šipkami a lze ho zoomovat klávesami Page Up/Down.") |   "Model se otáčí šipkami a lze ho zoomovat klávesami Page Up/Down.") | ||||||
|  |  | ||||||
| S("what's this?", "co to je?") | S("what's this?", "co to je?") | ||||||
|   | |||||||
| @@ -3151,20 +3151,21 @@ S("\n\n(For the heptagonal mode, the radius has been reduced to 2 for closing pl | |||||||
| S("hypersian rug mode", "Hypersischer-Teppich-Modus") | S("hypersian rug mode", "Hypersischer-Teppich-Modus") | ||||||
|  |  | ||||||
| S("In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | S("In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | ||||||
|   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n" |   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n", | ||||||
|   "This requires some OpenGL extensions and may crash or not work correctly -- enabling " |  | ||||||
|   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " |  | ||||||
|   "will make the rendering faster, but the surface will be rendered only once, so " |  | ||||||
|   "you won't be able to play a game on it.\n\n" |  | ||||||
|   "Use arrow keys to rotate, Page Up/Down to zoom.", |  | ||||||
|  |  | ||||||
|   "In diesem Modus wird HyperRogue auf einem 3D-Modell eines Teils einer hyperbolischen Ebene " |   "In diesem Modus wird HyperRogue auf einem 3D-Modell eines Teils einer hyperbolischen Ebene " | ||||||
|   "gespielt, ähnlich zu dem was man beim 'Papiermodell-Schöpfer' oder beim hyperbolischen Häkeln " |   "gespielt, ähnlich zu dem was man beim 'Papiermodell-Schöpfer' oder beim hyperbolischen Häkeln " | ||||||
|   "erhält.\n\n" |   "erhält.\n\n") | ||||||
|  |  | ||||||
|  | S("This requires some OpenGL extensions and may crash or not work correctly -- enabling " | ||||||
|  |   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " | ||||||
|  |   "will make the rendering faster, but the surface will be rendered only once, so " | ||||||
|  |   "you won't be able to play a game on it.\n\n", | ||||||
|   "Dieser Modus erfordert einige OpenGL-Erweiterungen und kann abstürzen oder fehlerhaft funktionieren " |   "Dieser Modus erfordert einige OpenGL-Erweiterungen und kann abstürzen oder fehlerhaft funktionieren " | ||||||
|   "-- das Einschalten der Option 'Rendere Textur ohne OpenGL' kann hilfreich sein. " |   "-- das Einschalten der Option 'Rendere Textur ohne OpenGL' kann hilfreich sein. " | ||||||
|   "Auch die Option 'Rendere die Textur nur einmal' beschleunigt das Rendern, aber die Oberfläche " |   "Auch die Option 'Rendere die Textur nur einmal' beschleunigt das Rendern, aber die Oberfläche " | ||||||
|   "wird nur einmal gerendert und du kannst darauf nicht spielen.\n\n" |   "wird nur einmal gerendert und du kannst darauf nicht spielen.\n\n") | ||||||
|  |    | ||||||
|  | S("Use arrow keys to rotate, Page Up/Down to zoom.", | ||||||
|   "Verwende die Pfeiltasten zum Rotieren, Bild auf/ab zum Zoomen.") |   "Verwende die Pfeiltasten zum Rotieren, Bild auf/ab zum Zoomen.") | ||||||
|  |  | ||||||
| S("what's this?", "Was ist das?") | S("what's this?", "Was ist das?") | ||||||
|   | |||||||
| @@ -3297,21 +3297,23 @@ S("hypersian rug mode", "tryb hiperskiego dywanu") | |||||||
|  |  | ||||||
| S( | S( | ||||||
|   "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " |   "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | ||||||
|   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n" |   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n", | ||||||
|   "This requires some OpenGL extensions and may crash or not work correctly -- enabling " |  | ||||||
|   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " |  | ||||||
|   "will make the rendering faster, but the surface will be rendered only once, so " |  | ||||||
|   "you won't be able to play a game on it.\n\n" |  | ||||||
|   "Use arrow keys to rotate, Page Up/Down to zoom.", |  | ||||||
|  |  | ||||||
|   "W tym trybie można grać w HyperRogue na trójwymiarowym modelu części płaszczyzny " |   "W tym trybie można grać w HyperRogue na trójwymiarowym modelu części płaszczyzny " | ||||||
|   "hiperbolicznej, podobnym do tego, który można otrzymać w kreatorze modeli " |   "hiperbolicznej, podobnym do tego, który można otrzymać w kreatorze modeli " | ||||||
|   "papierowych albo poprzez hiperboliczne szydełkowanie.\n\n" |   "papierowych albo poprzez hiperboliczne szydełkowanie.\n\n") | ||||||
|  |  | ||||||
|  | S("This requires some OpenGL extensions and may crash or not work correctly -- enabling " | ||||||
|  |   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " | ||||||
|  |   "will make the rendering faster, but the surface will be rendered only once, so " | ||||||
|  |   "you won't be able to play a game on it.\n\n", | ||||||
|  |  | ||||||
|   "Działanie wymaga pewnych rozszerzeń OpenGL i może działać nieprawidłowo lub " |   "Działanie wymaga pewnych rozszerzeń OpenGL i może działać nieprawidłowo lub " | ||||||
|   "powodować zatrzymanie gry -- w takim przypadku może być przydatne włączenie opcji " |   "powodować zatrzymanie gry -- w takim przypadku może być przydatne włączenie opcji " | ||||||
|   "'renderuj bez OpenGL'. Opcja 'renderuj raz' spowoduje, że animacja będzie szybsza, " |   "'renderuj bez OpenGL'. Opcja 'renderuj raz' spowoduje, że animacja będzie szybsza, " | ||||||
|   "ale tekstura powierzchni zostanie narysowana tylko raz, zatem nie będzie możliwe " |   "ale tekstura powierzchni zostanie narysowana tylko raz, zatem nie będzie możliwe " | ||||||
|   "granie na niej na żywo.\n\nMożesz obracać model strzałkami, a przybliżać i oddalać go " |   "granie na niej na żywo.\n\n") | ||||||
|  |  | ||||||
|  | S("Use arrow keys to rotate, Page Up/Down to zoom.", "Możesz obracać model strzałkami, a przybliżać i oddalać go " | ||||||
|   "klawiszami Page Up/Down.") |   "klawiszami Page Up/Down.") | ||||||
|  |  | ||||||
| S("what's this?", "co to jest?") | S("what's this?", "co to jest?") | ||||||
|   | |||||||
| @@ -3386,21 +3386,23 @@ S("\n\n(For the heptagonal mode, the radius has been reduced to 2 for closing pl | |||||||
|   |   | ||||||
| S("hypersian rug mode", "режим гиперсидского ковра") | S("hypersian rug mode", "режим гиперсидского ковра") | ||||||
|   |   | ||||||
| S( | S("In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | ||||||
|   "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " |   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n", | ||||||
|   "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n" |  | ||||||
|   "This requires some OpenGL extensions and may crash or not work correctly -- enabling " |  | ||||||
|   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " |  | ||||||
|   "will make the rendering faster, but the surface will be rendered only once, so " |  | ||||||
|   "you won't be able to play a game on it.\n\n" |  | ||||||
|   "Use arrow keys to rotate, Page Up/Down to zoom.", |  | ||||||
|  |  | ||||||
|   "В этом режиме Вы играете в HyperRogue на трёхмерной модели гиперболической " |   "В этом режиме Вы играете в HyperRogue на трёхмерной модели гиперболической " | ||||||
|   "плоскости, похожей на те, что можно получить в 'создателе бумажных моделей'\n\n" |   "плоскости, похожей на те, что можно получить в 'создателе бумажных моделей'.\n\n" | ||||||
|  |   ) | ||||||
|  |  | ||||||
|  | S("This requires some OpenGL extensions and may crash or not work correctly -- enabling " | ||||||
|  |   "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " | ||||||
|  |   "will make the rendering faster, but the surface will be rendered only once, so " | ||||||
|  |   "you won't be able to play a game on it.\n\n", | ||||||
|   "Это требует некоторых расширений OpenGL, может работать некорректно или вызывать " |   "Это требует некоторых расширений OpenGL, может работать некорректно или вызывать " | ||||||
|   "падение игры -- включение опции 'не использовать OpenGL' может помочь. " |   "падение игры -- включение опции 'не использовать OpenGL' может помочь. " | ||||||
|   "Опция 'отрисовать один раз' ускоряет отрисовку, " |   "Опция 'отрисовать один раз' ускоряет отрисовку, " | ||||||
|   "но играть в таком режиме невозможно.\n\n" |   "но играть в таком режиме невозможно.\n\n") | ||||||
|  |    | ||||||
|  | S("Use arrow keys to rotate, Page Up/Down to zoom.",  | ||||||
|   "Используйте стрелки для вращения, Page Up/Down для изменения масштаба.") |   "Используйте стрелки для вращения, Page Up/Down для изменения масштаба.") | ||||||
|   |   | ||||||
| S("what's this?", "что это?") | S("what's this?", "что это?") | ||||||
|   | |||||||
							
								
								
									
										30
									
								
								rug.cpp
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								rug.cpp
									
									
									
									
									
								
							| @@ -1513,6 +1513,23 @@ hyperpoint gethyper(ld x, ld y) { | |||||||
|   return h; |   return h; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | string makehelp() { | ||||||
|  |   return | ||||||
|  |     XLAT( | ||||||
|  |     "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " | ||||||
|  |     "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n") | ||||||
|  |     /* | ||||||
|  |     "This requires some OpenGL extensions and may crash or not work correctly -- enabling " | ||||||
|  |     "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " | ||||||
|  |     "will make the rendering faster, but the surface will be rendered only once, so " | ||||||
|  |     "you won't be able to play a game on it.\n\n" */ | ||||||
|  |     #if !ISMOBILE | ||||||
|  |   + XLAT("Use arrow keys to rotate, Page Up/Down to zoom.") | ||||||
|  |     + "\n\n" +  | ||||||
|  |     XLAT("In the perspective projection, you can use arrows to rotate the camera, Page Up/Down to go forward/backward, Shift+arrows to strafe, and Ctrl+arrows to rotate the model."); | ||||||
|  |   #endif | ||||||
|  |   } | ||||||
|  |  | ||||||
| void show() { | void show() { | ||||||
|   cmode = sm::SIDE; |   cmode = sm::SIDE; | ||||||
|   gamescreen(0); |   gamescreen(0); | ||||||
| @@ -1558,18 +1575,7 @@ void show() { | |||||||
|   keyhandler = [] (int sym, int uni) { |   keyhandler = [] (int sym, int uni) { | ||||||
|     dialog::handleNavigation(sym, uni); |     dialog::handleNavigation(sym, uni); | ||||||
|  |  | ||||||
|     if(uni == 'h') gotoHelp( |     if(uni == 'h') gotoHelp(makehelp()); | ||||||
|       XLAT( |  | ||||||
|       "In this mode, HyperRogue is played on a 3D model of a part of the hyperbolic plane, " |  | ||||||
|       "similar to one you get from the 'paper model creator' or by hyperbolic crocheting.\n\n" |  | ||||||
|       "This requires some OpenGL extensions and may crash or not work correctly -- enabling " |  | ||||||
|       "the 'render texture without OpenGL' options may be helpful in this case. Also the 'render once' option " |  | ||||||
|       "will make the rendering faster, but the surface will be rendered only once, so " |  | ||||||
|       "you won't be able to play a game on it.\n\n" |  | ||||||
|       "Use arrow keys to rotate, Page Up/Down to zoom.") |  | ||||||
|       + "\n\n" +  |  | ||||||
|       XLAT("In the perspective projection, you can use arrows to rotate the camera, Page Up/Down to go forward/backward, Shift+arrows to strafe, and Ctrl+arrows to rotate the model.") |  | ||||||
|       ); |  | ||||||
|     else if(uni == 'u') { |     else if(uni == 'u') { | ||||||
|       if(rug::rugged) rug::close(); |       if(rug::rugged) rug::close(); | ||||||
|       else rug::init(); |       else rug::init(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue