mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-07-04 18:52:51 +00:00
rogueviz::fifteen:: puzzle list to be used outside of presentation
This commit is contained in:
parent
2c7db09da3
commit
14e7d3025a
@ -11,6 +11,30 @@ namespace hr {
|
|||||||
|
|
||||||
EX namespace fifteen {
|
EX namespace fifteen {
|
||||||
|
|
||||||
|
struct puzzle {
|
||||||
|
string name;
|
||||||
|
string filename;
|
||||||
|
string desc;
|
||||||
|
string url;
|
||||||
|
};
|
||||||
|
|
||||||
|
vector<puzzle> puzzles = {
|
||||||
|
puzzle{"15", "classic", "The original Fifteen puzzle.", ""},
|
||||||
|
puzzle{"15+4", "fifteen", "The 15+4 puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=Hc3yfuXiWe0"},
|
||||||
|
puzzle{"15-4", "sphere11", "The 15-4 puzzle.", ""},
|
||||||
|
puzzle{"coiled", "coiled", "Coiled fifteen puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=rfAEgxNEOrQ"},
|
||||||
|
puzzle{"Möbius band", "mobiusband", "Fifteen puzzle on a Möbius band.", ""},
|
||||||
|
puzzle{"Kite-and-dart", "kitedart", "Kite-and-dart puzzle.", ""},
|
||||||
|
puzzle{"29", "29", "The 29 puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30"},
|
||||||
|
puzzle{"12", "12", "The 12 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30"},
|
||||||
|
puzzle{"124", "124", "The 124 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30"},
|
||||||
|
puzzle{"60", "60", "The 124 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30"},
|
||||||
|
puzzle{"Continental drift", "sphere19", "Based on the Continental Drift puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=0uQx33KFMO0"},
|
||||||
|
};
|
||||||
|
|
||||||
|
puzzle *current_puzzle;
|
||||||
|
bool quit_from_menu;
|
||||||
|
|
||||||
static constexpr int Empty = 0;
|
static constexpr int Empty = 0;
|
||||||
|
|
||||||
struct celldata {
|
struct celldata {
|
||||||
@ -401,6 +425,15 @@ int rugArgs() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void default_view_for_puzzle(const puzzle& p) {
|
||||||
|
auto lev = p.filename;
|
||||||
|
if(lev == "coiled" || lev == "mobiusband")
|
||||||
|
View = spin90() * View;
|
||||||
|
if(lev == "mobiusband")
|
||||||
|
View = MirrorX * View;
|
||||||
|
if(hyperbolic) rogueviz::rv_change(pconf.scale, 0.95);
|
||||||
|
}
|
||||||
|
|
||||||
auto fifteen_hook =
|
auto fifteen_hook =
|
||||||
addHook(hooks_args, 100, rugArgs)
|
addHook(hooks_args, 100, rugArgs)
|
||||||
#if CAP_SHOT
|
#if CAP_SHOT
|
||||||
@ -458,13 +491,13 @@ auto fifteen_hook =
|
|||||||
[] (presmode mode) {}
|
[] (presmode mode) {}
|
||||||
});
|
});
|
||||||
|
|
||||||
auto add = [&] (string s, string lev, string text, string youtube = "") {
|
for(auto p: puzzles) {
|
||||||
fifteen_slides.emplace_back(
|
fifteen_slides.emplace_back(
|
||||||
tour::slide{s, 100, LEGAL::NONE | QUICKGEO, text,
|
tour::slide{p.name, 100, LEGAL::NONE | QUICKGEO, p.desc,
|
||||||
[=] (presmode mode) {
|
[=] (presmode mode) {
|
||||||
if(youtube != "")
|
if(p.url != "")
|
||||||
slide_url(mode, 'y', "YouTube link", youtube);
|
slide_url(mode, 'y', "YouTube link", p.url);
|
||||||
string fname = "fifteen/" + lev + ".lev";
|
string fname = "fifteen/" + p.filename + ".lev";
|
||||||
if(!file_exists(fname)) {
|
if(!file_exists(fname)) {
|
||||||
slide_error(mode, "file " + fname + " not found");
|
slide_error(mode, "file " + fname + " not found");
|
||||||
return;
|
return;
|
||||||
@ -479,26 +512,11 @@ auto fifteen_hook =
|
|||||||
mapstream::loadMap(fname);
|
mapstream::loadMap(fname);
|
||||||
popScreenAll();
|
popScreenAll();
|
||||||
fullcenter();
|
fullcenter();
|
||||||
if(lev == "coiled" || lev == "mobiusband")
|
default_view_for_puzzle(p);
|
||||||
View = spin90() * View;
|
|
||||||
if(lev == "mobiusband")
|
|
||||||
View = MirrorX * View;
|
|
||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
};
|
};
|
||||||
|
|
||||||
add("15", "classic", "The original Fifteen puzzle.");
|
|
||||||
add("15+4", "fifteen", "The 15+4 puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=Hc3yfuXiWe0");
|
|
||||||
add("15-4", "sphere11", "The 15-4 puzzle.");
|
|
||||||
add("coiled", "coiled", "Coiled fifteen puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=rfAEgxNEOrQ");
|
|
||||||
add("Möbius band", "mobiusband", "Fifteen puzzle on a Möbius band.");
|
|
||||||
add("Kite-and-dart", "kitedart", "Kite-and-dart puzzle.");
|
|
||||||
add("29", "29", "The 29 puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30");
|
|
||||||
add("12", "12", "The 12 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30");
|
|
||||||
add("124", "124", "The 124 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30");
|
|
||||||
add("60", "60", "The 124 puzzle mentioned in the same video by Henry Segerman.", "https://www.youtube.com/watch?v=EitWHthBY30");
|
|
||||||
add("Continental drift", "sphere19", "Based on the Continental Drift puzzle by Henry Segerman.", "https://www.youtube.com/watch?v=0uQx33KFMO0");
|
|
||||||
|
|
||||||
add_end(fifteen_slides);
|
add_end(fifteen_slides);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user