mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-03-30 15:27:02 +00:00
nilrider:: two projection styles
This commit is contained in:
parent
418eb072dc
commit
80ba9b4835
@ -217,6 +217,32 @@ void pick_game() {
|
|||||||
dialog::display();
|
dialog::display();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nil_set_geodesic() {
|
||||||
|
pmodel = mdGeodesic;
|
||||||
|
nisot::geodesic_movement = true;
|
||||||
|
popScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void nil_set_perspective() {
|
||||||
|
pmodel = mdPerspective;
|
||||||
|
nisot::geodesic_movement = false;
|
||||||
|
pconf.rotational_nil = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void nil_projection() {
|
||||||
|
dialog::init(XLAT("projection of Nil"), 0xC0C0FFFF, 150, 100);
|
||||||
|
dialog::addBoolItem("geodesics", pmodel == mdGeodesic, 'g');
|
||||||
|
dialog::add_action([] { popScreen(); nil_set_geodesic(); });
|
||||||
|
dialog::addInfo("In this mode, the light is assumed to travel along the geodesics (the shortest paths in Nil).");
|
||||||
|
dialog::addBreak(100);
|
||||||
|
dialog::addBoolItem("constant direction", pmodel == mdPerspective, 'c');
|
||||||
|
dialog::add_action([] { popScreen(); nil_set_perspective(); });
|
||||||
|
dialog::addInfo("In this mode, the light is assumed to travel along the lines of constant direction.");
|
||||||
|
dialog::addBreak(100);
|
||||||
|
dialog::addBack();
|
||||||
|
dialog::display();
|
||||||
|
}
|
||||||
|
|
||||||
void settings() {
|
void settings() {
|
||||||
dialog::init(XLAT("settings"), 0xC0C0FFFF, 150, 100);
|
dialog::init(XLAT("settings"), 0xC0C0FFFF, 150, 100);
|
||||||
add_edit(aimspeed_key_x);
|
add_edit(aimspeed_key_x);
|
||||||
@ -227,6 +253,8 @@ void settings() {
|
|||||||
add_edit(whdist);
|
add_edit(whdist);
|
||||||
add_edit(min_gfx_slope);
|
add_edit(min_gfx_slope);
|
||||||
add_edit(stepped_display);
|
add_edit(stepped_display);
|
||||||
|
dialog::addItem("projection", 'P');
|
||||||
|
dialog::add_action_push(nil_projection);
|
||||||
dialog::addItem("configure keys", 'k');
|
dialog::addItem("configure keys", 'k');
|
||||||
dialog::add_action_push(multi::get_key_configurer(1, move_names, "Nilrider keys"));
|
dialog::add_action_push(multi::get_key_configurer(1, move_names, "Nilrider keys"));
|
||||||
dialog::addItem("RogueViz settings", 'r');
|
dialog::addItem("RogueViz settings", 'r');
|
||||||
@ -234,8 +262,8 @@ void settings() {
|
|||||||
pushScreen(showSettings);
|
pushScreen(showSettings);
|
||||||
});
|
});
|
||||||
dialog::addBreak(100);
|
dialog::addBreak(100);
|
||||||
dialog::display();
|
|
||||||
dialog::addBack();
|
dialog::addBack();
|
||||||
|
dialog::display();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool deleting = false;
|
bool deleting = false;
|
||||||
@ -401,6 +429,8 @@ auto celldemo = arg::add3("-unilcycle", initialize) + arg::add3("-unilplan", []
|
|||||||
arg::shift(); goal_id = arg::argi();
|
arg::shift(); goal_id = arg::argi();
|
||||||
curlev->solve(); })
|
curlev->solve(); })
|
||||||
+ arg::add3("-nilsolve", [] { curlev->solve(); })
|
+ arg::add3("-nilsolve", [] { curlev->solve(); })
|
||||||
|
+ arg::add3("-nilgeo", nil_set_geodesic)
|
||||||
|
+ arg::add3("-nilper", nil_set_perspective)
|
||||||
+ addHook(hooks_configfile, 100, [] {
|
+ addHook(hooks_configfile, 100, [] {
|
||||||
param_f(aimspeed_key_x, "nilrider_key_x")
|
param_f(aimspeed_key_x, "nilrider_key_x")
|
||||||
->editable(-5, 5, 0.1, "navigation sensitivity (keyboard)", "press Left/Right to navigate (lCtrl to fine-tune)", 'n');
|
->editable(-5, 5, 0.1, "navigation sensitivity (keyboard)", "press Left/Right to navigate (lCtrl to fine-tune)", 'n');
|
||||||
|
@ -2,10 +2,14 @@ namespace nilrider {
|
|||||||
|
|
||||||
ld timestamp::energy_in_squares() { return vel * vel / (2 * gravity); }
|
ld timestamp::energy_in_squares() { return vel * vel / (2 * gravity); }
|
||||||
|
|
||||||
|
EX ld sym_to_heis_bonus(const hyperpoint& H) {
|
||||||
|
return H[0] * H[1] / 2;
|
||||||
|
}
|
||||||
|
|
||||||
/** convert rotationally symmetric to Heisenberg model */
|
/** convert rotationally symmetric to Heisenberg model */
|
||||||
EX hyperpoint sym_to_heis(hyperpoint H) {
|
EX hyperpoint sym_to_heis(hyperpoint H) {
|
||||||
if(nil) {
|
if(nil) {
|
||||||
H[2] += H[0] * H[1] / 2;
|
H[2] += sym_to_heis_bonus(H);
|
||||||
}
|
}
|
||||||
return H;
|
return H;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user