1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-30 15:39:54 +00:00

improved texts, appro overview changed in some cases, 'x'pansion moved to geom sel

This commit is contained in:
Zeno Rogue 2017-10-31 15:20:02 +01:00
parent dad544958f
commit fe3f1bf4ad
5 changed files with 142 additions and 24 deletions

View File

@ -276,7 +276,7 @@ const char *blizzarddesc =
const char *crystaldesc = const char *crystaldesc =
"Yes, this is definitely a crystal. A very regular crystalline structure.\n\n" "Yes, this is definitely a crystal. A very regular crystalline structure.\n\n"
"This land has been designed to test various geometries, and it does not appear during a normal gameplay."; "This land has been designed as a tool to play with various geometries, and it does not appear during a normal gameplay.";
const char *NODESC = "No description yet."; const char *NODESC = "No description yet.";
const char *NODESCYET = "No description yet."; const char *NODESCYET = "No description yet.";

View File

@ -215,6 +215,7 @@ int main() {
plural.insert("Kraken Depths"); plural.insert("Kraken Depths");
allchars.insert(""); allchars.insert("");
allchars.insert("δ"); allchars.insert("δ");
allchars.insert("");
langPL(); langCZ(); langRU(); langPL(); langCZ(); langRU();
langTR(); langDE(); langPT(); langTR(); langDE(); langPT();

View File

@ -6167,8 +6167,123 @@ S("When your plan has clearly failed, it is better to abandon it and go to a saf
S("The Hunting Dogs give up.", "Myśliwskie psy się poddały."); S("The Hunting Dogs give up.", "Myśliwskie psy się poddały.");
// missing from previous versions:
S("\n\nThis orb also allows you to collect items encased in ice.", S("\n\nThis orb also allows you to collect items encased in ice.",
"\n\nTa sfera pozwala Ci również zbierać rzeczy zamrożone w lodowej ścianie.") "\n\nTa sfera pozwala Ci również zbierać rzeczy zamrożone w lodowej ścianie.")
// vampire attack
S("%The1 drains your powers!", "%The1 wysysa Twoje moce!")
// additions
S(" This tutorial will not advance on its own -- you have to press Enter (not while reading help text).",
" Ten podręcznik nie idzie do przodu sam z siebie -- musisz nacisnąć Enter (nie podczas czytania tekstu pomocy)."
)
S("Hint: hold Alt to highlights enemies and other important features.",
"Wskazówka: trzymaj Alt by podświetlać przeciwników i inne istotne elementy.")
// Crystal World
N("Crystal World", GEN_O, "Kryształowy Świat", "Kryształowe Światy", "Kryształowy Świat", "w Kryształowym Świecie")
N("Glowing Crystal", GEN_O, "Świecący Kryształ", "Świecące Kryształy", "Świecący Kryształ", "Świecącym Kryształem")
S("Yes, this is definitely a crystal. A very regular crystalline structure.\n\n"
"This land has been designed as a tool to play with various geometries, and it does not appear during a normal gameplay.",
"Tak, to na pewno kryształ. Bardzo regularna struktura krystaliczna.\n\n"
"Ta kraina została zaprojektowana do zabawy różnymi geometriami, i nie pojawia się podczas normalnej gry.")
S("You cannot move there!", "Nie możesz tam iść!");
// geometry stuff
S("experiment with geometry", "eksperymenty z geometrią")
S(
"If you want to know how much the gameplay is affected by the "
"hyperbolic geometry in HyperRogue, this mode is for you!\n\n"
"You can try many different geometries here. We start by gluing "
"n-gons in such a way that k of them meet in every vertex. "
"Depending on n and k, this either folds into a sphere, unfolds into a plane, "
"or requires a hyperbolic space. The result may be then 'truncated' by "
"replacing each vertex by a 2k-gon. Furthermore, you can play "
"with quotient geometries. For example, the elliptic geometry is "
"obtained from the sphere by making the antipodes be the same point, "
"so you return to the same spot (but as a mirror image) after going there. "
"Have fun experimenting! "
"Achievements and leaderboards do not work in geometry experiments, "
"except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this "
"session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
"Highlights:\n"
"* Crystal World and Warped Coast can be understood as extra geometries.\n"
"* Halloween is specially designed for spherical geometry.\n"
"* To see the difference, try Hunting Grounds in Euclidean -- it is impossible.\n",
"Chcesz wiedzieć, jak geometria wpływa na grę HyperRogue? Ten tryb jest dla Ciebie!\n\n"
"Możesz tu wypróbować wiele różnych geometrii. Zaczynamy od sklejania n-kątów tak, "
"by k z nich spotykało się w 1 wierzchołku. Zależnie od n i k, to się zwija w kulkę, "
"rozwija w płaszczyznę, albo wymaga przestrzeni hiperbolicznej. Wynik może być "
"następnie 'przycięty' poprzez zastąpienie każdego wierzchołka 2k-kątem. Można "
"też eksperymentować z przestrzeniami ilorazowymi. Na przykład, geometria eliptyczna "
"jest otrzymana w ten sposób, że antypody traktujemy jako ten sam punkt, także "
"po przejściu na antypody wracasz w to samo miejsce (ale odbit%y0 lustrzanie). "
"Miłej zabawy! Osiągnięcia nie działają w eksperymentach geometrycznych, oprócz "
"niektórych specjalnych.\n\n"
"W standardowej geometrii (przyciętej lub nie) grasz całą grę, w innych geometriach "
"wybierasz krainę. Krainy są odblokowane poprzez odwiedzenie ich w tej sesji, lub "
"permanentnie przez zebranie 25 skarbów. By odwiedzić wiele krain, wypróbuj "
"Skrzyżowanie w geometrii euklidesowej, lub Chaos w niestandardowej nieilorazowej "
"geometrii.\n"
"Godne uwagi:\n"
"* Kryształowy Świat i Zakrzywiony Brzeg to w pewnym sensie dodatkowe geometrie.\n"
"* Halloween to kraina zaprojektowana dla geometrii sferycznej.\n"
"* Wypróbuj Krainę Wiecznych Łowów w geometrii euklidesowej -- staje się "
"niemożliwa do przejścia."
)
// new geometries available:
S("standard", "standard") // renamed from 'hyperbolic'
S("octagons", "ośmiokąty")
S("four pentagons", "cztery pięciokąty")
S("four hexagons", "cztery sześciokąty")
S("four heptagons", "cztery siedmiokąty")
S("cube", "sześcian")
S("tetrahedron (buggy)", "czworościan (bugi)")
S("tetrahedron", "czworościan") // in case if it gets better
S("land", "kraina")
S("truncated", "przycięte")
S("does not matter", "bez znaczenia")
S("sides per face", "boki ścian")
S("faces per vertex", "wierzchołki")
S("none", "brak")
S("zebra", "zebra")
S("field", "ciało")
S("quotient space", "przestrzeń ilorazowa")
S("size of the world", "wielkość świata")
S("flat", "płaska")
// truncated or not truncated
S(" (t)", " (p)")
S(" (n)", " (n)")
S("(locked)", "(blok)")
S("stereographic/orthogonal", "rzut stereo/orto")
S("Poincaré/Klein", "Poincaré/Klein")
// Paper Model Creator
S("Useless in Euclidean geometry.", "Bezużyteczne w geometrii euklidesowej.");
S("Not implemented for spherical geometry. Please tell me if you really want this.",
"Nie zaimplementowane dla geometrii sferycznej. Jeśli bardzo tego chcesz, powiedz.")
// Hypersian Rug
S("This makes sense only in hyperbolic geometry.", "To ma sens tylko w geometrii hiperbolicznej.")
#undef Orb #undef Orb

View File

@ -347,7 +347,7 @@ void showDisplayMode() {
dialog::addBoolItem(XLAT("paper model creator"), (false), 'n'); dialog::addBoolItem(XLAT("paper model creator"), (false), 'n');
#endif #endif
dialog::addBoolItem(XLAT("conformal/history mode"), (conformal::on), 'a'); dialog::addBoolItem(XLAT("conformal/history mode"), (conformal::on), 'a');
dialog::addBoolItem(XLAT("expansion"), viewdists, 'x'); // dialog::addBoolItem(XLAT("expansion"), viewdists, 'x');
showAllConfig(); showAllConfig();
dialog::display(); dialog::display();
@ -613,7 +613,7 @@ string euchelp =
"except some specific ones.\n\n" "except some specific ones.\n\n"
"In standard geometry (truncated or not), you can play the full game, but in other geometries " "In standard geometry (truncated or not), you can play the full game, but in other geometries "
"you select a particular land. Lands are unlocked by visiting them in this " "you select a particular land. Lands are unlocked by visiting them in this "
"game, or permanently by collecting 25 treasure. Try Crossroads in Euclidean " "session, or permanently by collecting 25 treasure. Try Crossroads in Euclidean "
"or chaos mode in non-standard non-quotient hyperbolic to visit many lands. " "or chaos mode in non-standard non-quotient hyperbolic to visit many lands. "
"Highlights:\n" "Highlights:\n"
"* Crystal World and Warped Coast can be understood as extra geometries.\n" "* Crystal World and Warped Coast can be understood as extra geometries.\n"
@ -659,9 +659,9 @@ void showEuclideanMenu() {
dialog::addBreak(50); dialog::addBreak(50);
if(ts == 6 && tv == 3) if(ts == 6 && tv == 3)
dialog::addSelItem("truncated", "does not matter", 't'); dialog::addSelItem(XLAT("truncated"), XLAT("does not matter"), 't');
else else
dialog::addBoolItem("truncated", !nontruncated, 't'); dialog::addBoolItem(XLAT("truncated"), !nontruncated, 't');
dialog::addBreak(50); dialog::addBreak(50);
@ -673,8 +673,8 @@ void showEuclideanMenu() {
if(!nontruncated) worldsize = ((ts+tv)*worldsize) / tv; if(!nontruncated) worldsize = ((ts+tv)*worldsize) / tv;
} }
dialog::addSelItem("sides per face", its(ts), 0); dialog::addSelItem(XLAT("sides per face"), its(ts), 0);
dialog::addSelItem("faces per vertex", its(tv), 0); dialog::addSelItem(XLAT("faces per vertex"), its(tv), 0);
string qstring = "none"; string qstring = "none";
if(tq & qZEBRA) qstring = "zebra"; if(tq & qZEBRA) qstring = "zebra";
@ -685,26 +685,25 @@ void showEuclideanMenu() {
else if(tq & qTORUS) qstring = "torus"; else if(tq & qTORUS) qstring = "torus";
dialog::addSelItem("quotient space", qstring, 0); dialog::addSelItem(XLAT("quotient space"), XLAT(qstring), 0);
dialog::addSelItem("size of the world", dialog::addSelItem(XLAT("size of the world"),
XLAT( worldsize < 0 ? "exp(∞)*" + (nom%denom ? its(nom)+"/"+its(-denom) : its(-worldsize)):
worldsize == 0 ? "infinite" : worldsize == 0 ? "" :
worldsize > 0 ? "finite (%1)" : its(worldsize),
"exponentially infinite (%1)", its(worldsize)), '3');
0);
switch(ginf[geometry].cclass) { switch(ginf[geometry].cclass) {
case 0: case 0:
dialog::addSelItem("curvature", curvenames[getDistLimit()], 0); dialog::addSelItem(XLAT("Curvature"), XLAT("hyperbolic"), 0);
break; break;
case 1: case 1:
dialog::addSelItem("curvature", "flat", 0); dialog::addSelItem(XLAT("Curvature"), XLAT("flat"), 0);
break; break;
case 2: case 2:
dialog::addSelItem("curvature", "spherical", 0); dialog::addSelItem(XLAT("Curvature"), XLAT("spherical"), 0);
break; break;
} }
@ -713,7 +712,7 @@ void showEuclideanMenu() {
else else
dialog::addBoolItem(XLAT("Poincaré/Klein"), vid.alpha>.5, '1'); dialog::addBoolItem(XLAT("Poincaré/Klein"), vid.alpha>.5, '1');
dialog::addItem(XLAT("help"), SDLK_F1); dialog::addItem(XLAT("help"), SDLK_F1);
dialog::addItem(XLAT("done"), '0'); dialog::addItem(XLAT("back"), '0');
dialog::display(); dialog::display();
keyhandler = [] (int sym, int uni) { keyhandler = [] (int sym, int uni) {
@ -730,6 +729,7 @@ void showEuclideanMenu() {
} }
} }
else if(uni == '2' || sym == SDLK_F1) gotoHelp(euchelp); else if(uni == '2' || sym == SDLK_F1) gotoHelp(euchelp);
else if(uni == '3') { viewdists = !viewdists; if(viewdists) popScreenAll(); }
else if(uni == '1' && !euclid) { else if(uni == '1' && !euclid) {
if(sphere) { if(sphere) {
if(vid.alpha < 10) { vid.alpha = 999; vid.scale = 998; } if(vid.alpha < 10) { vid.alpha = 999; vid.scale = 998; }
@ -747,10 +747,10 @@ void showEuclideanMenu() {
}; };
} }
else { else {
dialog::init(XLAT("use this where?")); dialog::init(XLAT("experiment with geometry"));
string truncatenames[2] = {" (t)", " (n)"}; string truncatenames[2] = {" (t)", " (n)"};
dialog::addSelItem(XLAT("geometry"), XLAT(ginf[geometry].name) + truncatenames[nontruncated], '5'); dialog::addSelItem(XLAT("geometry"), XLAT(ginf[geometry].name) + XLAT(truncatenames[nontruncated]), '5');
dialog::addBreak(50); dialog::addBreak(50);
for(int i=0; i<euperpage; i++) { for(int i=0; i<euperpage; i++) {
@ -772,7 +772,7 @@ void showEuclideanMenu() {
dialog::addItem(XLAT("next page"), '-'); dialog::addItem(XLAT("next page"), '-');
dialog::addItem(XLAT("help"), SDLK_F1); dialog::addItem(XLAT("help"), SDLK_F1);
dialog::addItem(XLAT("done"), '0'); dialog::addItem(XLAT("back"), '0');
dialog::display(); dialog::display();
vid.fsize = s; vid.fsize = s;
@ -954,13 +954,15 @@ void showStartMenu() {
void setAppropriateOverview() { void setAppropriateOverview() {
clearMessages(); clearMessages();
if(tactic::on) if(viewdists)
runGeometryExperiments();
else if(tactic::on)
pushScreen(tactic::showMenu); pushScreen(tactic::showMenu);
else if(yendor::on) else if(yendor::on)
pushScreen(yendor::showMenu); pushScreen(yendor::showMenu);
else if(peace::on) else if(peace::on)
pushScreen(peace::showMenu); pushScreen(peace::showMenu);
else if(geometry != gNormal) { else if(geometry != gNormal && !chaosmode && !(geometry == gEuclid && isCrossroads(specialland))) {
runGeometryExperiments(); runGeometryExperiments();
} }
else { else {

View File

@ -709,7 +709,7 @@ namespace netgen {
if(euclid) if(euclid)
addMessage("Useless in Euclidean geometry."); addMessage("Useless in Euclidean geometry.");
else if(sphere) else if(sphere)
addMessage("Not implemented for spherical geometry."); addMessage("Not implemented for spherical geometry. Please tell me if you really want this.");
else else
pushScreen(show); pushScreen(show);
} }