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

pushed unimplemented Product

This commit is contained in:
Zeno Rogue 2019-07-28 11:17:25 +02:00
parent 0054dbc118
commit c97ab10700
10 changed files with 21 additions and 5 deletions

View File

@ -93,6 +93,8 @@ cell *createMov(cell *c, int d) {
}
if(c->move(d)) return c->move(d);
PROD( else if(geometry == gProduct)
product::find_cell_connection(c, d); )
#if CAP_BT
else if(penrose)
kite::find_cell_connection(c, d);
@ -221,6 +223,7 @@ void initcells() {
#if CAP_CRYSTAL
else if(geometry == gCrystal) currentmap = crystal::new_map();
#endif
PROD( else if(geometry == gProduct) currentmap = product::new_map(); )
#if CAP_ARCM
else if(archimedean) currentmap = arcm::new_map();
#endif

View File

@ -563,7 +563,8 @@ vector<geometryinfo> ginf = {
{"sol", "none", "Sol", "sol", 8, 3, qBINARY, gcSol, 0x41600, {{7, 5}}, eVariation::pure},
{"kd2", "none", "kite-and-dart", "kd2", 4, 3, qPENROSE, gcEuclid, 0x48000, {{7, 7}}, eVariation::pure},
{"kd3", "none", "kite-and-dart on horospheres", "kd3", 12, 3, qsBP, gcHyperbolic, 0x48200, {{7, 3}}, eVariation::pure},
};
//{"product","none", "product space", "product", 7, 3, 0, gcProduct, 0x48400, {{7, 3}}, eVariation::pure},
};
// bits: 9, 10, 15, 16, (reserved for later) 17, 18

View File

@ -201,10 +201,10 @@ enum eGeometry {
gHoroTris, gHoroRec, gHoroHex,
gField435, gField534,
gBinary4, gSol,
gKiteDart2, gKiteDart3,
gKiteDart2, gKiteDart3, PROD2(gProduct,)
gGUARD};
enum eGeometryClass { gcHyperbolic, gcEuclid, gcSphere, gcSol };
enum eGeometryClass { gcHyperbolic, gcEuclid, gcSphere, gcSol, PROD(gcProduct) };
enum class eVariation { bitruncated, pure, goldberg, irregular, dual };

View File

@ -37,6 +37,7 @@
#include "sphere.cpp"
#include "quotient.cpp"
#include "crystal.cpp"
// #include "product.cpp"
#include "reg3.cpp"
#include "language.cpp"
#include "cell.cpp"

View File

@ -802,6 +802,10 @@ void showEuclideanMenu() {
case 3:
dialog::addSelItem(XLAT("Curvature"), XLAT("Sol"), 0);
break;
PROD( case gcProduct:
dialog::addSelItem(XLAT("Curvature"), XLAT("Product"), 0);
break; )
}
dialog::display();

View File

@ -5005,6 +5005,8 @@ void drawcell_in_radar(cell *c, transmatrix V) {
#endif
void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) {
PROD( if(product::pmap) { product::drawcell_stack(c, V, spinv, mirrored); return; } )
cells_drawn++;

View File

@ -328,7 +328,7 @@ extern videopar vid;
#if MAXMDIM == 3
#define WDIM 2
#else
#define WDIM ((geometry >= gBinary3 && geometry != gBinary4 && geometry != gKiteDart2) ? 3 : 2)
#define WDIM ((geometry >= gBinary3 && geometry != gBinary4 && geometry != gKiteDart2 PROD(&& geometry != gProduct)) ? 3 : 2)
#endif
#define GDIM (vid.always3 ? 3 : WDIM)
#define DIM GDIM

View File

@ -1871,6 +1871,8 @@ bool limited_generation(cell *c) {
}
bool do_draw(cell *c, const transmatrix& T) {
PROD( if(product::pmap) return product::in_actual([&] { return do_draw(product::get_at(c, product::plevel), T); }); )
if(WDIM == 3) {
if(cells_drawn > vid.cells_drawn_limit) return false;
if(sol)

View File

@ -943,7 +943,7 @@ bincode acd_bin(ld x) {
bincode get_bincode(hyperpoint h) {
switch(ginf[gwhere].cclass) {
case gcEuclid: case gcSol:
case gcEuclid: case gcSol: PROD( case gcProduct: )
return acd_bin(h[0]) + acd_bin(h[1]) * sY + acd_bin(h[2]) * sZ;
case gcHyperbolic:
return acd_bin(hypot_d(3, h));

View File

@ -504,4 +504,7 @@ union SDL_Event;
#define CAP_MEMORY_RESERVE (!ISMOBILE && !ISWEB)
#endif
#define PROD(x) /* unimplemented */
#define PROD2(x,y) /* unimplemented */
#undef TRANSPARENT