mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-28 09:54:52 +00:00
nilrider:: star requirements
This commit is contained in:
parent
ce5b5af999
commit
b3879f2d24
@ -582,7 +582,7 @@ void cleanup_textures() {
|
||||
void load_level(const string& fname, bool init) {
|
||||
fhstream f(fname, "r");
|
||||
if(!f.f) throw hr_exception("could not open file ");
|
||||
level lev("Untitled", '1', nrlUserCreated, "", -1, 1, 1, -1, {}, 0, 0, {}, rot_plane, { goal{0x40FF40, "Collect all the triangles", basic_check(999, 999), "", "", award_stars(0, 999, 0)} });
|
||||
level lev("Untitled", '1', nrlUserCreated, 0, "", -1, 1, 1, -1, {}, 0, 0, {}, rot_plane, { goal{0x40FF40, "Collect all the triangles", basic_check(999, 999), "", "", award_stars(0, 999, 0)} });
|
||||
lev.filename = fname;
|
||||
level *csub = &lev;
|
||||
string s;
|
||||
|
@ -405,7 +405,7 @@ auto award_stars_distance(ld t) {
|
||||
}
|
||||
|
||||
level rotplane(
|
||||
"Trying to be horizontal", 'r', 0,
|
||||
"Trying to be horizontal", 'r', 0, 0,
|
||||
"Collect all the triangles!\n\n"
|
||||
"All the lines going through the center are horizontal.\n"
|
||||
"However, this is Nil geometry. The other lines are NOT horizontal! Clockwise ones slope upwards, and counterclockwise ones slope downwards.\n"
|
||||
@ -440,7 +440,7 @@ level rotplane(
|
||||
);
|
||||
|
||||
level longtrack(
|
||||
"A Long Track", 'l', 0,
|
||||
"A Long Track", 'l', 0, 100,
|
||||
"The main street is horizontal, as well as the lines orthogonal to it.",
|
||||
0*dft_block, +6.5*dft_block, 64*dft_block, -1.5*dft_block,
|
||||
{
|
||||
@ -468,7 +468,7 @@ level longtrack(
|
||||
);
|
||||
|
||||
level geodesical(
|
||||
"Roads are Geodesics", 'g', nrlPolar,
|
||||
"Roads are Geodesics", 'g', nrlPolar, 300,
|
||||
"Geodesics are the lines that are (locally) shortest. In the default settings, "
|
||||
"the space in Nil Rider is rendered according to the Fermat's principle, that is, "
|
||||
"light rays are assumed to be geodesics.\n\n"
|
||||
@ -496,7 +496,7 @@ level geodesical(
|
||||
);
|
||||
|
||||
level geodesical4(
|
||||
"Helical Geodesic", 's', nrlPolar,
|
||||
"Helical Geodesic", 's', nrlPolar, 500,
|
||||
"The main road here is a helical geodesic. Orthogonal lines are horizontal.",
|
||||
-80._deg, 8.5*dft_block, 260._deg, 0.5*dft_block,
|
||||
// -8*dft_block, +8*dft_block, +8*dft_block, 0,
|
||||
@ -520,7 +520,7 @@ level geodesical4(
|
||||
);
|
||||
|
||||
level heisenberg0(
|
||||
"Heisenberg Zero", 'z', 0,
|
||||
"Heisenberg Zero", 'z', 0, 700,
|
||||
"This is the plane z=0 in the Heisenberg group model of Nil. The roads are x=0, y=0 axes.",
|
||||
-7.5*dft_block, 7.5*dft_block, 7.5*dft_block, -7.5*dft_block,
|
||||
{
|
||||
@ -550,7 +550,7 @@ level heisenberg0(
|
||||
);
|
||||
|
||||
level rotwell(
|
||||
"Deep Well", 'd', nrlOrder,
|
||||
"Deep Well", 'd', nrlOrder, 900,
|
||||
"Can you escape this well?\n\n"
|
||||
"The sculpture in the center is built around eight helical geodesics which start in a point on the floor, and all cross in a point in the sky. Try to find that point and "
|
||||
"look below!\n\n"
|
||||
@ -584,7 +584,7 @@ level rotwell(
|
||||
);
|
||||
|
||||
level labyrinth(
|
||||
"Labyrinth", 'l', 0,
|
||||
"Labyrinth", 'l', 0, 1100,
|
||||
"You will have to go clockwise this time!\n\n"
|
||||
"The squares of this level have half of their usual length.",
|
||||
-7.5*dft_block/2, 7.5*dft_block/2, 7.5*dft_block/2, -7.5*dft_block/2,
|
||||
@ -618,7 +618,7 @@ level labyrinth(
|
||||
);
|
||||
|
||||
level obstacle(
|
||||
"Obstacle Course", 'o', 0,
|
||||
"Obstacle Course", 'o', 0, 1200,
|
||||
"The main street is horizontal, as well as the lines orthogonal to it.",
|
||||
0*dft_block, 2.5*dft_block, 64*dft_block, -2.5*dft_block,
|
||||
{
|
||||
@ -838,7 +838,7 @@ ld hilbert_level(hyperpoint h) {
|
||||
}
|
||||
|
||||
level spirallev(
|
||||
"Square Spiral", 's', 0,
|
||||
"Square Spiral", 's', 0, 1300,
|
||||
"The projection of this track is shaped like a square spiral.",
|
||||
0.5*dft_block, 16.5*dft_block, 16.5*dft_block, 0.5*dft_block,
|
||||
|
||||
@ -871,7 +871,7 @@ level spirallev(
|
||||
);
|
||||
|
||||
level hilbertlev(
|
||||
"Hilbert's Curve", 's', 0,
|
||||
"Hilbert's Curve", 's', 0, 1400,
|
||||
"The projection of this track is shaped like the Hilbert curve.",
|
||||
0.5*dft_block, 16.5*dft_block, 16.5*dft_block, 0.5*dft_block,
|
||||
|
||||
@ -903,7 +903,7 @@ level hilbertlev(
|
||||
);
|
||||
|
||||
level cycloid_slalom(
|
||||
"Cycloid slalom", 'c', nrlSwapTriangleOrder,
|
||||
"Cycloid slalom", 'c', nrlSwapTriangleOrder, 1500,
|
||||
"The main street is a brachistochrone. If you were not moving north/south, "
|
||||
"it would be the fastest path to get to the goal. Is it still the case "
|
||||
"in these physics? Definitely not if you have to collect on the way!",
|
||||
@ -925,7 +925,7 @@ level cycloid_slalom(
|
||||
);
|
||||
|
||||
level multifloor(
|
||||
"Multi-floor", 'm', 0,
|
||||
"Multi-floor", 'm', 0, 1600,
|
||||
"There are triangles on the floors below. I mean, DIRECTLY below.\n\nHopefully, you can abuse how straight lines work in this geometry to reach them!"
|
||||
,
|
||||
|
||||
@ -943,7 +943,7 @@ level multifloor(
|
||||
);
|
||||
|
||||
level skijump (
|
||||
"Ski Jumping", 'r', nrlJumping,
|
||||
"Ski Jumping", 'r', nrlJumping, 1700,
|
||||
"Try to jump far away!",
|
||||
-0.5*dft_block, 2.5*dft_block, 15.5*dft_block, -2.5*dft_block,
|
||||
{
|
||||
@ -970,7 +970,7 @@ ld f_bumpy(hyperpoint h) {
|
||||
}
|
||||
|
||||
level bumpy(
|
||||
"Bumpy Ride", 'b', 0,
|
||||
"Bumpy Ride", 'b', 0, 1800,
|
||||
"The main street is horizontal, as well as the lines orthogonal to it.",
|
||||
0*dft_block, 2.5*dft_block, 64*dft_block, -2.5*dft_block,
|
||||
{
|
||||
|
@ -343,14 +343,19 @@ void pick_level() {
|
||||
cur_stars += score_here;
|
||||
}
|
||||
|
||||
dialog::addSelItem(l->name, its(score_here), l->hotkey);
|
||||
dialog::add_action([l] {
|
||||
curlev = l;
|
||||
recompute_plan_transform = true;
|
||||
l->init();
|
||||
clear_path(l);
|
||||
popScreen();
|
||||
});
|
||||
if(l->stars_needed > total_stars) {
|
||||
dialog::addSelItem(l->name, "stars needed: " + its(l->stars_needed), l->hotkey);
|
||||
}
|
||||
else {
|
||||
dialog::addSelItem(l->name, its(score_here), l->hotkey);
|
||||
dialog::add_action([l] {
|
||||
curlev = l;
|
||||
recompute_plan_transform = true;
|
||||
l->init();
|
||||
clear_path(l);
|
||||
popScreen();
|
||||
});
|
||||
}
|
||||
}
|
||||
total_stars = cur_stars;
|
||||
dialog::addBreak(100);
|
||||
|
Loading…
Reference in New Issue
Block a user