mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-12-20 23:50:27 +00:00
Macbeath surface
This commit is contained in:
parent
a1225228d8
commit
e697cb57cb
80
cell.cpp
80
cell.cpp
@ -698,6 +698,84 @@ struct hrmap_quotient : hrmap {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case gMacbeath: {
|
||||||
|
connections = {
|
||||||
|
/* 000 */ 359, 498, 189, 215, 424, 381, 20,
|
||||||
|
/* 001 */ 366, 491, 217, 187, 431, 346, 27,
|
||||||
|
/* 002 */ 380, 484, 168, 208, 438, 360, 6,
|
||||||
|
/* 003 */ 345, 477, 196, 180, 445, 367, 13,
|
||||||
|
/* 004 */ 352, 470, 203, 173, 396, 388, 48,
|
||||||
|
/* 005 */ 373, 463, 175, 201, 403, 339, 55,
|
||||||
|
/* 006 */ 387, 456, 210, 194, 410, 353, 34,
|
||||||
|
/* 007 */ 338, 449, 182, 222, 417, 374, 41,
|
||||||
|
/* 008 */ 254, 459, 140, 138, 414, 248, 69,
|
||||||
|
/* 009 */ 247, 480, 112, 166, 435, 255, 62,
|
||||||
|
/* 010 */ 233, 452, 161, 117, 407, 269, 83,
|
||||||
|
/* 011 */ 268, 487, 133, 145, 442, 234, 76,
|
||||||
|
/* 012 */ 261, 473, 126, 152, 400, 241, 97,
|
||||||
|
/* 013 */ 240, 494, 154, 124, 421, 262, 90,
|
||||||
|
/* 014 */ 226, 466, 119, 159, 393, 276, 111,
|
||||||
|
/* 015 */ 275, 501, 147, 131, 428, 227, 104,
|
||||||
|
/* 016 */ 65, 479, 343, 355, 408, 73, 167,
|
||||||
|
/* 017 */ 100, 465, 371, 383, 422, 94, 160,
|
||||||
|
/* 018 */ 86, 472, 350, 348, 429, 108, 153,
|
||||||
|
/* 019 */ 79, 486, 378, 376, 415, 59, 146,
|
||||||
|
/* 020 */ 58, 458, 385, 369, 443, 80, 139,
|
||||||
|
/* 021 */ 107, 500, 357, 341, 401, 87, 132,
|
||||||
|
/* 022 */ 93, 493, 364, 390, 394, 101, 125,
|
||||||
|
/* 023 */ 72, 451, 336, 362, 436, 66, 118,
|
||||||
|
/* 024 */ 16, 483, 294, 313, 397, 31, 209,
|
||||||
|
/* 025 */ 37, 462, 322, 285, 446, 24, 202,
|
||||||
|
/* 026 */ 51, 448, 287, 334, 432, 10, 223,
|
||||||
|
/* 027 */ 2, 497, 315, 306, 411, 45, 216,
|
||||||
|
/* 028 */ 23, 476, 308, 299, 404, 38, 181,
|
||||||
|
/* 029 */ 30, 469, 280, 327, 439, 17, 174,
|
||||||
|
/* 030 */ 44, 455, 329, 292, 425, 3, 195,
|
||||||
|
/* 031 */ 9, 490, 301, 320, 418, 52, 188,
|
||||||
|
/* 032 */ 324, 467, 98, 110, 427, 332, 258,
|
||||||
|
/* 033 */ 289, 453, 70, 82, 441, 283, 265,
|
||||||
|
/* 034 */ 303, 495, 91, 89, 399, 297, 272,
|
||||||
|
/* 035 */ 310, 481, 63, 61, 413, 318, 279,
|
||||||
|
/* 036 */ 331, 460, 56, 68, 434, 325, 230,
|
||||||
|
/* 037 */ 282, 474, 84, 96, 420, 290, 237,
|
||||||
|
/* 038 */ 296, 488, 77, 75, 406, 304, 244,
|
||||||
|
/* 039 */ 317, 502, 105, 103, 392, 311, 251,
|
||||||
|
/* 040 */ 205, 475, 259, 236, 447, 178, 328,
|
||||||
|
/* 041 */ 184, 454, 231, 264, 426, 213, 335,
|
||||||
|
/* 042 */ 170, 489, 266, 243, 405, 199, 314,
|
||||||
|
/* 043 */ 219, 496, 238, 271, 412, 192, 321,
|
||||||
|
/* 044 */ 198, 482, 245, 278, 398, 171, 300,
|
||||||
|
/* 045 */ 191, 503, 273, 250, 419, 220, 307,
|
||||||
|
/* 046 */ 177, 468, 224, 257, 440, 206, 286,
|
||||||
|
/* 047 */ 212, 461, 252, 229, 433, 185, 293,
|
||||||
|
/* 048 */ 163, 450, 49, 40, 402, 150, 363,
|
||||||
|
/* 049 */ 114, 478, 21, 12, 430, 129, 356,
|
||||||
|
/* 050 */ 128, 471, 28, 47, 409, 115, 349,
|
||||||
|
/* 051 */ 149, 499, 0, 19, 437, 164, 342,
|
||||||
|
/* 052 */ 156, 492, 7, 26, 444, 143, 391,
|
||||||
|
/* 053 */ 121, 464, 35, 54, 416, 136, 384,
|
||||||
|
/* 054 */ 135, 485, 14, 5, 423, 122, 377,
|
||||||
|
/* 055 */ 142, 457, 42, 33, 395, 157, 370,
|
||||||
|
/* 056 */ 277, 102, 158, 389, 32, 172, 312,
|
||||||
|
/* 057 */ 242, 88, 151, 340, 39, 200, 298,
|
||||||
|
/* 058 */ 270, 74, 116, 354, 46, 193, 305,
|
||||||
|
/* 059 */ 249, 60, 137, 375, 53, 221, 319,
|
||||||
|
/* 060 */ 263, 95, 123, 382, 4, 214, 291,
|
||||||
|
/* 061 */ 228, 109, 130, 347, 11, 186, 333,
|
||||||
|
/* 062 */ 256, 67, 165, 361, 18, 207, 326,
|
||||||
|
/* 063 */ 235, 81, 144, 368, 25, 179, 284,
|
||||||
|
/* 064 */ 183, 50, 337, 162, 71, 232, 288,
|
||||||
|
/* 065 */ 211, 43, 386, 141, 57, 253, 330,
|
||||||
|
/* 066 */ 176, 36, 372, 120, 99, 225, 323,
|
||||||
|
/* 067 */ 204, 29, 351, 127, 85, 260, 281,
|
||||||
|
/* 068 */ 197, 22, 344, 113, 64, 246, 309,
|
||||||
|
/* 069 */ 169, 15, 379, 134, 78, 267, 295,
|
||||||
|
/* 070 */ 218, 8, 365, 155, 92, 239, 302,
|
||||||
|
/* 071 */ 190, 1, 358, 148, 106, 274, 316,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -735,7 +813,7 @@ struct hrmap_quotient : hrmap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(int i=0; i<TOT; i++) {
|
for(int i=0; i<TOT; i++) {
|
||||||
generateAlts(allh[i], geometry == gBolza2 ? 3 : S3-3, false);
|
generateAlts(allh[i], geometry == gMacbeath ? 5 : geometry == gBolza2 ? 3 : S3-3, false);
|
||||||
allh[i]->emeraldval = allh[i]->alt->emeraldval;
|
allh[i]->emeraldval = allh[i]->alt->emeraldval;
|
||||||
allh[i]->zebraval = allh[i]->alt->zebraval;
|
allh[i]->zebraval = allh[i]->alt->zebraval;
|
||||||
allh[i]->fiftyval = allh[i]->alt->fiftyval;
|
allh[i]->fiftyval = allh[i]->alt->fiftyval;
|
||||||
|
@ -1681,7 +1681,8 @@ geometryinfo ginf[gGUARD] = {
|
|||||||
{"Bolza Surface x2", "Bolza2", 8, 3, qSMALL | qDOCKS, gcHyperbolic, 0x18400, {{6, 4}}, eVariation::bitruncated},
|
{"Bolza Surface x2", "Bolza2", 8, 3, qSMALL | qDOCKS, gcHyperbolic, 0x18400, {{6, 4}}, eVariation::bitruncated},
|
||||||
{"minimal quotient", "minimal", 7, 3, qSMALL | qNONOR, gcHyperbolic, 0x18600, {{7, 5}}, eVariation::bitruncated},
|
{"minimal quotient", "minimal", 7, 3, qSMALL | qNONOR, gcHyperbolic, 0x18600, {{7, 5}}, eVariation::bitruncated},
|
||||||
{"binary tiling", "binary", 7, 3, 0, gcHyperbolic, 0, {{7, 5}}, eVariation::pure},
|
{"binary tiling", "binary", 7, 3, 0, gcHyperbolic, 0, {{7, 5}}, eVariation::pure},
|
||||||
{"Archimedean", "A", 7, 3, 0, gcHyperbolic, 0, {{7, 5}}, eVariation::pure}
|
{"Archimedean", "A", 7, 3, 0, gcHyperbolic, 0, {{7, 5}}, eVariation::pure},
|
||||||
|
{"Macbeath surface", "Macbeath", 7, 3, qSMALL, gcHyperbolic, 0x18800, {{7, 5}}, eVariation::bitruncated},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define X3(x) x, x, x
|
#define X3(x) x, x, x
|
||||||
|
@ -200,7 +200,7 @@ enum eLand { laNone, laBarrier, laCrossroads, laDesert, laIce, laCaves, laJungle
|
|||||||
|
|
||||||
enum eGeometry {
|
enum eGeometry {
|
||||||
gNormal, gEuclid, gSphere, gElliptic, gZebraQuotient, gFieldQuotient, gTorus, gOctagon, g45, g46, g47, gSmallSphere, gTinySphere, gEuclidSquare, gSmallElliptic,
|
gNormal, gEuclid, gSphere, gElliptic, gZebraQuotient, gFieldQuotient, gTorus, gOctagon, g45, g46, g47, gSmallSphere, gTinySphere, gEuclidSquare, gSmallElliptic,
|
||||||
gKleinQuartic, gBolza, gBolza2, gMinimal, gBinaryTiling, gArchimedean,
|
gKleinQuartic, gBolza, gBolza2, gMinimal, gBinaryTiling, gArchimedean, gMacbeath,
|
||||||
gGUARD};
|
gGUARD};
|
||||||
|
|
||||||
enum eGeometryClass { gcHyperbolic, gcEuclid, gcSphere };
|
enum eGeometryClass { gcHyperbolic, gcEuclid, gcSphere };
|
||||||
|
27
geom-exp.cpp
27
geom-exp.cpp
@ -282,12 +282,22 @@ void showEuclideanMenu() {
|
|||||||
dialog::addSelItem(XLAT("land"), XLAT1(linf[specialland].name), '5');
|
dialog::addSelItem(XLAT("land"), XLAT1(linf[specialland].name), '5');
|
||||||
dialog::addBreak(50);
|
dialog::addBreak(50);
|
||||||
|
|
||||||
|
char letter = 'a';
|
||||||
for(int i=0; i<gGUARD; i++) {
|
for(int i=0; i<gGUARD; i++) {
|
||||||
bool on = geometry == i;
|
bool on = geometry == i;
|
||||||
dynamicval<eGeometry> cg(geometry, eGeometry(i));
|
dynamicval<eGeometry> cg(geometry, eGeometry(i));
|
||||||
if(!!(quotient || elliptic || torus) != showquotients) continue;
|
if(!!(quotient || elliptic || torus) != showquotients) continue;
|
||||||
dialog::addBoolItem(XLAT(ginf[i].name), on, 'a'+i);
|
dialog::addBoolItem(XLAT(ginf[i].name), on, letter++);
|
||||||
dialog::lastItem().value += validclasses[land_validity(specialland).quality_level];
|
dialog::lastItem().value += validclasses[land_validity(specialland).quality_level];
|
||||||
|
dialog::add_action([i] {
|
||||||
|
eGeometry targetgeometry = eGeometry(i);
|
||||||
|
if(targetgeometry == gArchimedean)
|
||||||
|
pushScreen(arcm::show);
|
||||||
|
else {
|
||||||
|
set_geometry(targetgeometry);
|
||||||
|
start_game();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog::addBreak(50);
|
dialog::addBreak(50);
|
||||||
@ -330,6 +340,10 @@ void showEuclideanMenu() {
|
|||||||
worldsize = 24 + 28 * gar;
|
worldsize = 24 + 28 * gar;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case gMacbeath:
|
||||||
|
worldsize = (12 + 14 * gar) * 6;
|
||||||
|
break;
|
||||||
|
|
||||||
case gBolza:
|
case gBolza:
|
||||||
worldsize = 3 * (2*tv + ts * gar) / tv;
|
worldsize = 3 * (2*tv + ts * gar) / tv;
|
||||||
break;
|
break;
|
||||||
@ -431,16 +445,7 @@ void showEuclideanMenu() {
|
|||||||
|
|
||||||
keyhandler = [] (int sym, int uni) {
|
keyhandler = [] (int sym, int uni) {
|
||||||
dialog::handleNavigation(sym, uni);
|
dialog::handleNavigation(sym, uni);
|
||||||
if(uni >= 'a' && uni < 'a'+gGUARD) {
|
if(uni == 'z')
|
||||||
eGeometry targetgeometry = eGeometry(uni - 'a');
|
|
||||||
if(targetgeometry == gArchimedean)
|
|
||||||
pushScreen(arcm::show);
|
|
||||||
else {
|
|
||||||
set_geometry(targetgeometry);
|
|
||||||
start_game();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(uni == 'z')
|
|
||||||
showquotients = !showquotients;
|
showquotients = !showquotients;
|
||||||
else if(uni == 'v') {
|
else if(uni == 'v') {
|
||||||
if(euclid6) ;
|
if(euclid6) ;
|
||||||
|
Loading…
Reference in New Issue
Block a user