mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-09-01 18:27:55 +00:00
new system for honeycombs in action
This commit is contained in:
10
bigstuff.cpp
10
bigstuff.cpp
@@ -153,7 +153,7 @@ EX int default_levs() {
|
||||
if(S3 >= OINF)
|
||||
return 1;
|
||||
#if MAXMDIM >= 4
|
||||
if(reg3::in_rule()) return 0;
|
||||
if(reg3::in_hrmap_rule_or_subrule()) return 0;
|
||||
#endif
|
||||
return S3-3;
|
||||
}
|
||||
@@ -240,7 +240,7 @@ EX heptagon *create_altmap(cell *c, int rad, hstate firststate, int special IS(0
|
||||
int gdir = -1;
|
||||
for(int i=0; i<c->type; i++) {
|
||||
#if MAXMDIM >= 4
|
||||
if(!reg3::in_rule()) {
|
||||
if(!reg3::in_hrmap_rule_or_subrule()) {
|
||||
#else
|
||||
if(true) {
|
||||
#endif
|
||||
@@ -252,7 +252,7 @@ EX heptagon *create_altmap(cell *c, int rad, hstate firststate, int special IS(0
|
||||
}
|
||||
}
|
||||
#if MAXMDIM >= 4
|
||||
if(reg3::in_rule() && c->master->distance == 0) gdir = 0;
|
||||
if(reg3::in_hrmap_rule_or_subrule() && c->master->distance == 0) gdir = 0;
|
||||
#endif
|
||||
if(gdir < 0) return NULL;
|
||||
|
||||
@@ -1670,7 +1670,7 @@ EX void build_horocycles(cell *c, cell *from) {
|
||||
|
||||
if(ls::any_order() && bearsCamelot(c->land) && can_start_horo(c) && !bt::in() &&
|
||||
#if MAXMDIM >= 4
|
||||
!(hyperbolic && WDIM == 3 && !reg3::in_rule()) &&
|
||||
!(hyperbolic && WDIM == 3 && !reg3::in_hrmap_rule_or_subrule()) &&
|
||||
#endif
|
||||
(quickfind(laCamelot) || peace::on || (hrand(I2000) < (c->land == laCrossroads4 || ls::no_walls() ? 800 : 200) && horo_ok() &&
|
||||
items[itEmerald] >= U5)))
|
||||
@@ -1860,7 +1860,7 @@ EX void buildCamelot(cell *c) {
|
||||
EX int masterAlt(cell *c) {
|
||||
if(eubinary) return celldistAlt(c);
|
||||
#if MAXMDIM >= 4
|
||||
if(WDIM == 3 && hyperbolic && !reg3::in_rule()) return reg3::altdist(c->master);
|
||||
if(WDIM == 3 && hyperbolic && !reg3::in_hrmap_rule_or_subrule()) return reg3::altdist(c->master);
|
||||
#endif
|
||||
return c->master->alt->distance;
|
||||
}
|
||||
|
8
cell.cpp
8
cell.cpp
@@ -232,7 +232,7 @@ EX vector<hrmap*> allmaps;
|
||||
|
||||
EX hrmap *newAltMap(heptagon *o) {
|
||||
#if MAXMDIM >= 4
|
||||
if(reg3::in_rule())
|
||||
if(reg3::in_hrmap_rule_or_subrule())
|
||||
return reg3::new_alt_map(o);
|
||||
#endif
|
||||
if(currentmap->strict_tree_rules())
|
||||
@@ -638,7 +638,7 @@ EX int celldistAlt(cell *c) {
|
||||
}
|
||||
#if MAXMDIM >= 4
|
||||
if(euc::in()) return euc::dist_alt(c);
|
||||
if(hyperbolic && WDIM == 3 && !reg3::in_rule())
|
||||
if(hyperbolic && WDIM == 3 && !reg3::in_hrmap_rule_or_subrule())
|
||||
return reg3::altdist(c->master);
|
||||
#endif
|
||||
if(!c->master->alt) return 0;
|
||||
@@ -676,7 +676,7 @@ EX int updir(heptagon *h) {
|
||||
if(bt::in()) return bt::updir();
|
||||
#endif
|
||||
#if MAXMDIM >= 4
|
||||
if(WDIM == 3 && reg3::in_rule()) {
|
||||
if(WDIM == 3 && reg3::in_hrmap_rule_or_subrule()) {
|
||||
for(int i=0; i<h->type; i++) if(h->move(i) && h->move(i)->distance < h->distance)
|
||||
return i;
|
||||
return -1;
|
||||
@@ -690,7 +690,7 @@ EX int updir(heptagon *h) {
|
||||
EX int updir_alt(heptagon *h) {
|
||||
if(euclid || !h->alt) return -1;
|
||||
#if MAXMDIM >= 4
|
||||
if(WDIM == 3 && reg3::in_rule()) {
|
||||
if(WDIM == 3 && reg3::in_hrmap_rule_or_subrule()) {
|
||||
for(int i=0; i<S7; i++) if(h->move(i) && h->move(i)->alt && h->move(i)->alt->distance < h->alt->distance)
|
||||
return i;
|
||||
return -1;
|
||||
|
@@ -113,7 +113,7 @@ void expansion_analyzer::preliminary_grouping() {
|
||||
for(int v: rulegen::treestates[i].rules)
|
||||
if(v >= 0) children[i].push_back(v);
|
||||
}
|
||||
else if(reg3::in_rule()) {
|
||||
else if(reg3::exact_rules()) {
|
||||
#if MAXMDIM >= 4
|
||||
rootid = reg3::rule_get_root(0);
|
||||
auto& chi = reg3::rule_get_children();
|
||||
@@ -145,7 +145,7 @@ void expansion_analyzer::preliminary_grouping() {
|
||||
}
|
||||
|
||||
void expansion_analyzer::reduce_grouping() {
|
||||
if(reg3::in_rule()) return;
|
||||
if(reg3::exact_rules()) return;
|
||||
if(currentmap->strict_tree_rules()) return;
|
||||
int old_N = N;
|
||||
vector<int> grouping;
|
||||
@@ -239,7 +239,7 @@ bool expansion_analyzer::verify(int id) {
|
||||
|
||||
int expansion_analyzer::valid(int v, int step) {
|
||||
if(step < 0) return 0;
|
||||
int more = reg3::in_rule() ? 1 : 5;
|
||||
int more = reg3::exact_rules() ? 1 : 5;
|
||||
#if CAP_GMP == 0
|
||||
if(get_descendants(step+v+v+more).approx_int() >= bignum::BASE) return 0;
|
||||
typedef ld val;
|
||||
@@ -392,7 +392,7 @@ int type_in_quick(expansion_analyzer& ea, cell *c, const cellfunction& f) {
|
||||
}
|
||||
|
||||
EX bool sizes_known() {
|
||||
if(reg3::in_rule()) return true;
|
||||
if(reg3::exact_rules()) return true;
|
||||
if(closed_manifold) return false;
|
||||
// Castle Anthrax is infinite
|
||||
if(bt::in()) return false;
|
||||
@@ -583,7 +583,7 @@ void celldrawer::do_viewdist() {
|
||||
}
|
||||
case ncType: {
|
||||
int t = -1;
|
||||
if(reg3::in_rule()) switch(distance_from) {
|
||||
if(reg3::exact_rules()) switch(distance_from) {
|
||||
case dfPlayer:
|
||||
t = -1;
|
||||
break;
|
||||
@@ -740,7 +740,7 @@ void expansion_analyzer::view_distances_dialog() {
|
||||
|
||||
if(really_use_analyzer) {
|
||||
int t;
|
||||
if(reg3::in_rule() || currentmap->strict_tree_rules()) {
|
||||
if(reg3::exact_rules() || currentmap->strict_tree_rules()) {
|
||||
if(!N) preliminary_grouping();
|
||||
t = rootid;
|
||||
}
|
||||
|
@@ -1129,7 +1129,7 @@ EX void showEuclideanMenu() {
|
||||
|
||||
dialog::addSelItem(XLAT("size of the world"), gd.size_str, '3');
|
||||
|
||||
if(WDIM == 2 || reg3::in_rule()) dialog::add_action([] {
|
||||
if(WDIM == 2 || reg3::exact_rules()) dialog::add_action([] {
|
||||
if(!viewdists) { enable_viewdists(); pushScreen(viewdist_configure_dialog); }
|
||||
else if(viewdists) viewdists = false;
|
||||
});
|
||||
|
@@ -1 +0,0 @@
|
||||
x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>0<0C><>:n<><6E>q<EFBFBD>t.<2E><><EFBFBD>:|<7C><>Ѳ<EFBFBD>C<EFBFBD><43>" :@M<><4D><EFBFBD>(<28><>s<EFBFBD>R<EFBFBD><52>V<EFBFBD>V<EFBFBD><56><EFBFBD>*<2A><>Y2<59>dǣRx<7F>v(x^*|>a饗<61><E9A597><EFBFBD>K=<3D>z<EFBFBD><7A>4<EFBFBD>s$揄<><E68F84>p<EFBFBD>rw<72><77><EFBFBD>\xDŽ<>4/<02>_j<5F>8/<2F><>7p<37><70><EFBFBD>yX<>|<07><>1<EFBFBD><31>>D~<7E><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<12><>6<EFBFBD><1C><0F>r<1F>'yy<0F><><0B>~<7E><><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><4B>h<EFBFBD>Nci5<69>ޡ<1D>[<5B><>ɵ<EFBFBD>E;Xrːe<06>`<60><><EFBFBD><EFBFBD>*<2A>VQ<56>W<EFBFBD><57><EFBFBD><EFBFBD><1A><>ثI5<49><35><06><><EFBFBD>kH<6B><48><EFBFBD>v#<23><><11>3<EFBFBD>Y;#<23><>D_<44><5F>?xhL<68><4C>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
xڍ<EFBFBD><EFBFBD>R<EFBFBD>@ƛK`<60>D<EFBFBD>[<5B><13>EEAE<41>*{<7B><0B>I6w<1E>G<EFBFBD><47><EFBFBD>{<7B>L<EFBFBD>&T<>UI6<49><36><EFBFBD><EFBFBD><EFBFBD>Mgw<03><><EFBFBD>%<25>C<EFBFBD>3<EFBFBD>t,<2C><>?+<2B><>f<EFBFBD><66><EFBFBD><EFBFBD>^<5E>|W<><57>%ق<><D982><EFBFBD><1C><>f&><3E><>+<01>k<EFBFBD>2?4d<0B><><11><>SKޥ<4B><DEA5>7`,<2C><>]`<60>亮<EFBFBD>WᅧG<47>s\<5C>o<EFBFBD>NK<4E>5<EFBFBD><0F>~<7E><>a<EFBFBD>~<7E><><EFBFBD><EFBFBD>Z#<23>\<5C><>:o<><6F><EFBFBD><EFBFBD>Gr<47>ے<EFBFBD><DB92><EFBFBD><EFBFBD><02><>᳙<EFBFBD><E1B399>ɥ<><C9A5>p<13><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sYwn5<6E><35><EFBFBD>_r<5F>?(<28>uR/<2F><><EFBFBD><15><>><3E><><1B><>><3E><><EFBFBD>r<EFBFBD><72>a@[o<>=<3D>o<EFBFBD>><3E>y<EFBFBD><79>K<EFBFBD><4B>}<7D><><EFBFBD>Ar9'<27><>˺<EFBFBD>s~<7E><>J<EFBFBD><4A><EFBFBD> <20><>\γ<>O<><7F><EFBFBD>z<EFBFBD><7A><EFBFBD>zp<7A><70><EFBFBD><14><>=<3D><>\<5C><>|<7C><>?<3F>^<07>}<7D><><1A>9a<39><61><08><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q9?<3F>Ͻ<><CFBD><EFBFBD>9<EFBFBD><39><EFBFBD><0F>1<EFBFBD>4<EFBFBD>uz<75><7A><EFBFBD>j<EFBFBD><6A><EFBFBD>㾟<EFBFBD>T<EFBFBD><11>j<EFBFBD><6A><EFBFBD><EFBFBD>f><3E><><EFBFBD>]<5D>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>w\<5C><>X~<7E>ُ<EFBFBD><D98F>=ZS<5A><53>~I.<2E><>\<5C>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<02><><10><><EFBFBD> 1<><31>WO0<>b<EFBFBD><62>C (<28>NsL<73><0C>43
|
||||
~<7E>*<2A>JG<4A><47><EFBFBD>QW3l<33>d<12>ZI<5A>`<60>'<27>^<5E><>E<EFBFBD><45>f}2<>}<7D><><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>v<1F><>'<27>W<EFBFBD><11><><EFBFBD>*<05>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><14>D<EFBFBD>"<22>~Y<><59><1F>.<2E>H<EFBFBD><48>Wu<57>QW<51>F<EFBFBD>^"<22><0B>9<EFBFBD>"<22>3U:<3A>JeT<1A><>|buܑ&<26><>$<24>q<EFBFBD>#<23><>5#㵣rx<>8<><13><><0C>0<EFBFBD>9<>(<28>3lbü<62><C3BC>a]`><3E>%<25>k<EFBFBD><1C>̎<EFBFBD>ZC<5A><43><EFBFBD><EFBFBD>><0C>T<EFBFBD><54>I<EFBFBD>T<EFBFBD>z6><3E><><EFBFBD><EFBFBD><EFBFBD>7<>qMG)j<>9<EFBFBD>Sf<53><66><EFBFBD><EFBFBD><1D>we<77><65><EFBFBD>絧<><08>3<#ߙ<>ڌ<EFBFBD><19>u:ޟ"<22><><EFBFBD><EFBFBD><17><><EFBFBD><08>S<<3C>
|
||||
<EFBFBD><1D><>L<EFBFBD>+<2B><><EFBFBD>:&<26><><EFBFBD><EFBFBD>4<EFBFBD><34>q<EFBFBD><71>S<>sp<73>l<EFBFBD><6C>'<27><><EFBFBD>Z<EFBFBD>:YSg<53>z<EFBFBD>u<EFBFBD>uv<75><19><%b<>|:<3A><><EFBFBD><EFBFBD><<0F><> <09>23W<33>
|
Binary file not shown.
Binary file not shown.
BIN
honeycombs/336h-c0.dat
Normal file
BIN
honeycombs/336h-c0.dat
Normal file
Binary file not shown.
BIN
honeycombs/336h-c7.dat
Normal file
BIN
honeycombs/336h-c7.dat
Normal file
Binary file not shown.
BIN
honeycombs/336h.dat
Normal file
BIN
honeycombs/336h.dat
Normal file
Binary file not shown.
BIN
honeycombs/344h-c0.dat
Normal file
BIN
honeycombs/344h-c0.dat
Normal file
Binary file not shown.
BIN
honeycombs/344h-c7.dat
Normal file
BIN
honeycombs/344h-c7.dat
Normal file
Binary file not shown.
BIN
honeycombs/344h.dat
Normal file
BIN
honeycombs/344h.dat
Normal file
Binary file not shown.
BIN
honeycombs/345h.dat
Normal file
BIN
honeycombs/345h.dat
Normal file
Binary file not shown.
BIN
honeycombs/353h-c0.dat
Normal file
BIN
honeycombs/353h-c0.dat
Normal file
Binary file not shown.
BIN
honeycombs/353h-c7.dat
Normal file
BIN
honeycombs/353h-c7.dat
Normal file
Binary file not shown.
BIN
honeycombs/353h.dat
Normal file
BIN
honeycombs/353h.dat
Normal file
Binary file not shown.
BIN
honeycombs/354h.dat
Normal file
BIN
honeycombs/354h.dat
Normal file
Binary file not shown.
BIN
honeycombs/355h.dat
Normal file
BIN
honeycombs/355h.dat
Normal file
Binary file not shown.
BIN
honeycombs/434c-c0.dat
Normal file
BIN
honeycombs/434c-c0.dat
Normal file
Binary file not shown.
BIN
honeycombs/434c-c7.dat
Normal file
BIN
honeycombs/434c-c7.dat
Normal file
Binary file not shown.
2
honeycombs/434c.dat
Normal file
2
honeycombs/434c.dat
Normal file
@@ -0,0 +1,2 @@
|
||||
xڕ<EFBFBD>=t
|
||||
A<18><><EFBFBD>!"!<21>$"n<> <11><>Ј<EFBFBD><D088>J<EFBFBD>Rٙ<52><D999>T*<2A>J<EFBFBD>R<EFBFBD>R<EFBFBD>hT*<2A>J<EFBFBD>R<EFBFBD>T*<2A>J<EFBFBD><4A>x<EFBFBD><78><EFBFBD><EFBFBD>o<EFBFBD><6F>I<EFBFBD><49>g<EFBFBD><67><EFBFBD>}<7D><><EFBFBD>{<7B><><EFBFBD> <20> "<22><>!I:L<><4C>ޮ<<3C><><EFBFBD>eHN<48><4E><EFBFBD>vz켫>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<>v<EFBFBD><76>7<EFBFBD><37>H<EFBFBD><48>s<><73><EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>hT'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)=<1E><><1C>zN<0E>~<7E><><EFBFBD>g<EFBFBD>q/<2F>S<EFBFBD>uZ<75><17>>Ѣ<><D1A2>><3E>_<><5F>{-*}F<><46><EFBFBD>K-<2D>۲<EFBFBD><DBB2>sE9<17><><EFBFBD><EFBFBD><EFBFBD>><3E>|<7C><>G<EFBFBD><47><EFBFBD>5<EFBFBD>*W<><57><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><72>L<><4C>F<EFBFBD>d]<5D>e<EFBFBD><65><EFBFBD>\G<><47>c2%<25>[#"Υyn<79><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>><3E>5<EFBFBD><35><EFBFBD>2<EFBFBD>ʛ
|
BIN
honeycombs/435h-bs1.dat
Normal file
BIN
honeycombs/435h-bs1.dat
Normal file
Binary file not shown.
BIN
honeycombs/435h-bs2.dat
Normal file
BIN
honeycombs/435h-bs2.dat
Normal file
Binary file not shown.
BIN
honeycombs/435h-d2.dat
Normal file
BIN
honeycombs/435h-d2.dat
Normal file
Binary file not shown.
BIN
honeycombs/435h-s2.dat
Normal file
BIN
honeycombs/435h-s2.dat
Normal file
Binary file not shown.
BIN
honeycombs/435h.dat
Normal file
BIN
honeycombs/435h.dat
Normal file
Binary file not shown.
BIN
honeycombs/436h-s2.dat
Normal file
BIN
honeycombs/436h-s2.dat
Normal file
Binary file not shown.
BIN
honeycombs/436h.dat
Normal file
BIN
honeycombs/436h.dat
Normal file
Binary file not shown.
BIN
honeycombs/534h-c0.dat
Normal file
BIN
honeycombs/534h-c0.dat
Normal file
Binary file not shown.
5
honeycombs/534h-c7.dat
Normal file
5
honeycombs/534h-c7.dat
Normal file
@@ -0,0 +1,5 @@
|
||||
x<EFBFBD><EFBFBD><EFBFBD>\<5C>u<01><>߳<EFBFBD>ۘ<>De<44><65><15>TT<54><54>čm<C48D><6D>*&M2*<2A><)&64J*J,R,*TTJ,*4T4T**ZT<5A>L<EFBFBD><4C>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD>ШP<D0A8><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><>^<5E><>כ<EFBFBD><D79B><EFBFBD>=<3D>=<3D>w<><77>v+<2B>3f<33>1f<31>b3<62>8<EFBFBD><38><EFBFBD>L_<4C>y<EFBFBD><79><19><><EFBFBD>B -<2D><>u<><75><16>r<EFBFBD><72><EFBFBD><EFBFBD>t<EFBFBD>s<EFBFBD><73> +#<23><13><><EFBFBD>r<EFBFBD><72><EFBFBD>$<24>d<EFBFBD>կ<><D5AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g8<67><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1D><>R<EFBFBD>U<EFBFBD>WOPUS<><53><0F>ToP?<3F><>T?<3F>~L<><4C><EFBFBD>i<EFBFBD>V<EFBFBD>RQԍjP<6A>@ݢ^<5E>nR7<52><37><EFBFBD><EFBFBD><EFBFBD>ֈ<EFBFBD><1D><><EFBFBD><EFBFBD><EFBFBD>oSWD<57><1E>Tգԣ<D5A3><D4A3><EFBFBD>T<EFBFBD><0C>-<2D><15>[շ<><D5B7>P<EFBFBD>#nW<6E>z<EFBFBD>z<EFBFBD><7A>6<EFBFBD><36>>q<><71><EFBFBD>85YMQOROVOQ<4F><51><EFBFBD>ǟ|^T<><1F>x<EFBFBD>+<2B><1B>*<2A>&<26>Z<EFBFBD><5A>z<EFBFBD>z<EFBFBD><7A><19><><EFBFBD><EFBFBD><EFBFBD>:<3A>6<EFBFBD>v<EFBFBD>#j<>9<EFBFBD><39>z<EFBFBD><7A><EFBFBD><1E>m<>N<13>l{<7B>9<EFBFBD><39><08>P=L=\MPW<50>^c<>i<EFBFBD>x<EFBFBD><78>><3E><>m1C<><43>,<2C>}<7D>z<EFBFBD><7A>n<EFBFBD>Z<EFBFBD><5A>,U<><55><EFBFBD><EFBFBD>r<EFBFBD>@<40> g<>z<EFBFBD>o<>]<5D><>5<EFBFBD>]<5D>W<EFBFBD><57><EFBFBD>D<EFBFBD><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1B><><EFBFBD>r<EFBFBD>@5N=X}Iu<49>/<2F>_R<5F><52>ɿ<EFBFBD>w<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>/<2F><>D<1C>Q<EFBFBD>7<EFBFBD>x_Q[Շ<>g<EFBFBD><67><EFBFBD><EFBFBD>կ<EFBFBD>ԅ<>b<EFBFBD><62><EFBFBD>Cj<6A>y<EFBFBD>:<3A><>~q<><71><EFBFBD>u<><1A><>Z<EFBFBD><5A>:<3A><>^V<><56><EFBFBD><EFBFBD>U_PR<><52><EFBFBD><EFBFBD><EFBFBD>QW}<7D>7<EFBFBD>o<EFBFBD><1D><>#<23><>]u]<5D>x]<5D><1E><1E>&<26>ǫ'<27>'<27><><EFBFBD>:~<7E><><EFBFBD>w<EFBFBD>?Q<>PL<7F>T<EFBFBD>R<EFBFBD><52>N<EFBFBD><4E><EFBFBD><EFBFBD>N<EFBFBD>@OTS<54><53><EFBFBD>ٴOm3<6D><33>{<7B>s<EFBFBD>ζ<EFBFBD>\b<><62><EFBFBD><EFBFBD><EFBFBD>nα<6E><CEB1>)P<0B>"<22>_<EFBFBD><5F>m<EFBFBD>M<EFBFBD><4D><EFBFBD>u<EFBFBD><75><EFBFBD>?<3F>>jru<72><75>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>p<EFBFBD>gt<>T7;<3B>&<26><>{
|
||||
<EFBFBD><EFBFBD><EFBFBD>}<7D><>[<5B><1D>o<EFBFBD><6F>ۡ<EFBFBD>vh{<7B>9<EFBFBD>nr~<10>yt<79><74>I۷h<DBB7><16>k<EFBFBD><6B><EFBFBD><0F>j<EFBFBD><6A><EFBFBD><EFBFBD>8<EFBFBD>7.<2E>@<40>r̥<>\5<><35>q<EFBFBD>7<EFBFBD>v<EFBFBD>k@]<5D><><EFBFBD>4^<5E><>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>s<EFBFBD><73>ھV<DABE><56>j~<7E><>+<2B>&z>͡<><CDA1>o<EFBFBD><6F><EFBFBD><EFBFBD>|<7C>t;<3B><><EFBFBD><e>n<>Y{:<3A>O<EFBFBD><4F><EFBFBD>S<EFBFBD>V<EFBFBD><56>O<><4F><EFBFBD>IS<49><07><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><1B><1D>?5w<35><18>Sb&L<><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŕ<EFBFBD><C594><EFBFBD>^g;<3B><>ټ<EFBFBD><D9BC><EFBFBD>P<EFBFBD>k<1B><>k<EFBFBD><6B><EFBFBD><EFBFBD><17><><EFBFBD><18><><EFBFBD><EFBFBD>,q.r<>a<EFBFBD>o<EFBFBD><6F><EFBFBD>ήˍ)<29>\<5C><1B><><EFBFBD>E\
|
||||
<EFBFBD><EFBFBD>.f<>gCĖ<43><C496>ٷ<14>2?۬;<3B>=g<>w<EFBFBD><~<7E><19><><EFBFBD>zA<11><>"<22><>-<2D>m<EFBFBD>i<EFBFBD>[&<><7F>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>-<2D><>5<EFBFBD>^<5E><><EFBFBD><EFBFBD><15><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y?C<>u<0B><>B<EFBFBD>zc{OC<4F>d<EFBFBD><64><18>o<EFBFBD>><1E>Qyϐ"<22>^^33u<33><75><EFBFBD>ȍ<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>}<7D><>7<EFBFBD><05><EFBFBD><7F><EFBFBD><EFBFBD>ޞ<EFBFBD><DE9E>_<EFBFBD><5F>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>(<28><><EFBFBD>Z<14><>>A<>kz<><7A><EFBFBD><EFBFBD>53n<33>֧<EFBFBD>gw#7<>)e<><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD>u<EFBFBD><75>zm<7A>{5<><35>b<EFBFBD><62><EFBFBD>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67>Q<>n<EFBFBD>{o.<2E>&<26><>tx<74><78><EFBFBD><7F><EFBFBD>%<25><><EFBFBD>K<EFBFBD><4B><EFBFBD>>}5<10>8<EFBFBD>#<01>HB2R<32>G*<2A>@:2D&<26><><EFBFBD><1C>"<0F>pQ<70><12><><0C><>@%<25>P
|
||||
<EFBFBD><EFBFBD>hjQ<EFBFBD>z4<EFBFBD>MhFZцvt<76>]<5D>Fzч~`C<18>F1<46>qL<71><4C>
|
BIN
honeycombs/534h.dat
Normal file
BIN
honeycombs/534h.dat
Normal file
Binary file not shown.
BIN
honeycombs/535h.dat
Normal file
BIN
honeycombs/535h.dat
Normal file
Binary file not shown.
BIN
honeycombs/536h.dat
Normal file
BIN
honeycombs/536h.dat
Normal file
Binary file not shown.
@@ -192,7 +192,7 @@ EX bool is_zebra_trapdoor(cell *c) {
|
||||
else if(arb::in() && arb::current.have_line)
|
||||
return arb::linespattern(c);
|
||||
#if MAXMDIM >= 4
|
||||
else if(reg3::in_rule()) switch(geometry) {
|
||||
else if(PURE && reg3::exact_rules()) switch(geometry) {
|
||||
case gSpace534: {
|
||||
if(c->master->fieldval == 0) return true;
|
||||
forCellCM(c1, c) if(c1->master->fieldval == 0) return true;
|
||||
|
103
reg3.cpp
103
reg3.cpp
@@ -1304,18 +1304,11 @@ EX namespace reg3 {
|
||||
}
|
||||
|
||||
EX bool minimize_quotient_maps = false;
|
||||
EX bool subrule = false;
|
||||
|
||||
EX bool strafe_test = false;
|
||||
|
||||
hrmap_quotient3 *gen_quotient_map(bool minimized, fieldpattern::fpattern &fp) {
|
||||
#if CAP_FIELD
|
||||
#if CAP_CRYSTAL
|
||||
if(geometry == gSpace344) {
|
||||
return new hrmap_from_crystal(minimized ? 1 : 2);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if(geometry == gSpace535 && minimized) {
|
||||
return new seifert_weber::hrmap_singlecell(108*degree);
|
||||
}
|
||||
@@ -1454,6 +1447,7 @@ EX namespace reg3 {
|
||||
}
|
||||
|
||||
hrmap_h3() {
|
||||
println(hlog, "generating hrmap_h3");
|
||||
origin = init_heptagon(S7);
|
||||
heptagon& h = *origin;
|
||||
h.s = hsOrigin;
|
||||
@@ -1856,22 +1850,6 @@ EX namespace reg3 {
|
||||
|
||||
ruleset() : fp(0) {}
|
||||
|
||||
void load_ruleset(string fname) {
|
||||
|
||||
shstream ins(decompress_string(read_file_as_string(fname)));
|
||||
dynamicval<bool> q(fieldpattern::use_quotient_fp, true);
|
||||
hread_fpattern(ins, fp);
|
||||
|
||||
hread(ins, root);
|
||||
hread(ins, children);
|
||||
hread(ins, other);
|
||||
// hread(ins, childpos);
|
||||
|
||||
int t = S7;
|
||||
int qty = isize(children) / t;
|
||||
for(int i=0; i<=qty; i++) childpos.push_back(i * t);
|
||||
}
|
||||
|
||||
void load_ruleset_new(string fname) {
|
||||
|
||||
shstream ins(decompress_string(read_file_as_string(fname)));
|
||||
@@ -1887,6 +1865,8 @@ EX namespace reg3 {
|
||||
hread(ins, children);
|
||||
hread(ins, other);
|
||||
hread(ins, childpos);
|
||||
|
||||
println(hlog, "roots = ", isize(root), " states = ", isize(childpos)-1, " hashv = ", fp.hashv);
|
||||
}
|
||||
|
||||
/** \brief address = (fieldvalue, state) */
|
||||
@@ -2045,8 +2025,10 @@ EX namespace reg3 {
|
||||
|
||||
hrmap_h3_rule() {
|
||||
|
||||
load_ruleset(get_rule_filename());
|
||||
quotient_map = gen_quotient_map(is_minimized(), fp);
|
||||
println(hlog, "generating hrmap_h3_rule");
|
||||
|
||||
load_ruleset_new(get_rule_filename(false));
|
||||
quotient_map = gen_quotient_map(minimize_quotient_maps, fp);
|
||||
find_mappings();
|
||||
|
||||
origin = init_heptagon(S7);
|
||||
@@ -2263,7 +2245,7 @@ EX namespace reg3 {
|
||||
|
||||
println(hlog, "loading a subrule ruleset");
|
||||
|
||||
load_ruleset_new(get_rule_filename());
|
||||
load_ruleset_new(get_rule_filename(true));
|
||||
quotient_map = gen_quotient_map(minimize_quotient_maps, fp);
|
||||
int t = quotient_map->acells[0]->type;
|
||||
find_mappings();
|
||||
@@ -2422,39 +2404,43 @@ EX hrmap *new_alt_map(heptagon *o) {
|
||||
return new hrmap_h3_rule_alt(o);
|
||||
}
|
||||
|
||||
EX bool reg3_rule_available = true;
|
||||
EX string other_rule = "";
|
||||
/** 1 -- consider pure rules, 2 -- consider variation rules, 3 -- consider both */
|
||||
EX int consider_rules = 3;
|
||||
|
||||
EX bool is_minimized() {
|
||||
return geometry != gSpace535 && geometry != gSpace344;
|
||||
}
|
||||
EX string replace_rule_file;
|
||||
|
||||
EX string get_rule_filename() {
|
||||
if(other_rule != "") return other_rule;
|
||||
switch(geometry) {
|
||||
case gSpace336: return "honeycomb-rules-336.dat";
|
||||
case gSpace344: return "honeycomb-rules-344.dat";
|
||||
case gSpace345: return "honeycomb-rules-345.dat";
|
||||
case gSpace353: return "honeycomb-rules-353.dat";
|
||||
case gSpace354: return "honeycomb-rules-354.dat";
|
||||
case gSpace355: return "honeycomb-rules-355.dat";
|
||||
case gSpace435: return "honeycomb-rules-435.dat";
|
||||
case gSpace436: return "honeycomb-rules-436.dat";
|
||||
case gSpace534: return "honeycomb-rules-534.dat";
|
||||
case gSpace535: return "honeycomb-rules-535.dat";
|
||||
case gSpace536: return "honeycomb-rules-536.dat";
|
||||
|
||||
default: return "";
|
||||
EX string get_rule_filename(bool with_variations) {
|
||||
if(replace_rule_file != "") return replace_rule_file;
|
||||
string s;
|
||||
s += "honeycombs/";
|
||||
s += ginf[geometry].tiling_name[1];
|
||||
s += ginf[geometry].tiling_name[3];
|
||||
s += ginf[geometry].tiling_name[5];
|
||||
if(hyperbolic) s += "h";
|
||||
else s += "c";
|
||||
if(with_variations) {
|
||||
if(variation == eVariation::coxeter) s += "-c" + its(coxeter_param);
|
||||
if(variation == eVariation::subcubes) s += "-s" + its(subcube_count);
|
||||
if(variation == eVariation::dual_subcubes) s += "-d" + its(subcube_count);
|
||||
if(variation == eVariation::bch) s += "-bs" + its(subcube_count);
|
||||
}
|
||||
s += ".dat";
|
||||
return find_file(s);
|
||||
}
|
||||
|
||||
EX bool in_rule() {
|
||||
return reg3_rule_available && get_rule_filename() != "";
|
||||
EX bool variation_rule_available() {
|
||||
return (consider_rules & 2) && file_exists(get_rule_filename(true));
|
||||
}
|
||||
|
||||
EX bool pure_rule_available() {
|
||||
return (consider_rules & 1) && file_exists(get_rule_filename(false));
|
||||
}
|
||||
|
||||
ruleset& get_ruleset() {
|
||||
if(subrule) return *((hrmap_h3_subrule*)currentmap);
|
||||
if(in_rule()) return *((hrmap_h3_rule*)currentmap);
|
||||
auto h1 = dynamic_cast<hrmap_h3_subrule*> (currentmap);
|
||||
if(h1) return *h1;
|
||||
auto h2 = dynamic_cast<hrmap_h3_rule*> (currentmap);
|
||||
if(h2) return *h2;
|
||||
throw hr_exception("get_ruleset called but not in rule");
|
||||
}
|
||||
|
||||
@@ -2475,8 +2461,8 @@ EX hrmap* new_map() {
|
||||
if(geometry == gSeifertWeber) return new seifert_weber::hrmap_singlecell(108*degree);
|
||||
if(geometry == gHomologySphere) return new seifert_weber::hrmap_singlecell(36*degree);
|
||||
if(quotient && !sphere) return new hrmap_field3(&currfp);
|
||||
if(subrule) return new hrmap_h3_subrule;
|
||||
if(in_rule()) return new hrmap_h3_rule;
|
||||
if(variation_rule_available()) return new hrmap_h3_subrule;
|
||||
if(pure_rule_available()) return new hrmap_h3_rule;
|
||||
if(sphere) return new hrmap_sphere3;
|
||||
return new hrmap_h3;
|
||||
}
|
||||
@@ -2489,6 +2475,15 @@ EX bool in_hrmap_h3() {
|
||||
return dynamic_cast<hrmap_h3*> (currentmap);
|
||||
}
|
||||
|
||||
EX bool in_hrmap_rule_or_subrule() {
|
||||
return dynamic_cast<hrmap_h3_rule*> (currentmap) || dynamic_cast<hrmap_h3_subrule*> (currentmap);
|
||||
}
|
||||
|
||||
EX bool exact_rules() {
|
||||
if(PURE) return in_hrmap_rule_or_subrule();
|
||||
return dynamic_cast<hrmap_h3_subrule*> (currentmap);
|
||||
}
|
||||
|
||||
EX int quotient_count() {
|
||||
return isize(hypmap()->quotient_map->allh);
|
||||
}
|
||||
@@ -2553,7 +2548,7 @@ EX int celldistance(cell *c1, cell *c2) {
|
||||
int b = bucketer(h);
|
||||
if(cgi.close_distances.count(b)) return cgi.close_distances[b];
|
||||
|
||||
if(in_rule())
|
||||
if(in_hrmap_rule_or_subrule())
|
||||
return clueless_celldistance(c1, c2);
|
||||
|
||||
dynamicval<eGeometry> g(geometry, gBinary3);
|
||||
|
@@ -2098,11 +2098,9 @@ EX void generate_rules() {
|
||||
start_time = SDL_GetTicks();
|
||||
delete_tmap();
|
||||
|
||||
if(WDIM == 3) {
|
||||
if(WDIM == 3 && reg3::in_hrmap_rule_or_subrule()) {
|
||||
stop_game();
|
||||
reg3::reg3_rule_available = false;
|
||||
fieldpattern::use_rule_fp = true;
|
||||
fieldpattern::use_quotient_fp = true;
|
||||
reg3::consider_rules = 0;
|
||||
flags |= w_numerical;
|
||||
start_game();
|
||||
}
|
||||
|
11
rulegen3.cpp
11
rulegen3.cpp
@@ -1716,19 +1716,20 @@ int readRuleArgs3() {
|
||||
// -urq 7 to prepare honeycomb generation
|
||||
stop_game();
|
||||
shift(); int i = argi();
|
||||
reg3::reg3_rule_available = (i & 8) ? 0 : 1;
|
||||
reg3::consider_rules = i >> 3;
|
||||
fieldpattern::use_rule_fp = (i & 1) ? 1 : 0;
|
||||
fieldpattern::use_quotient_fp = (i & 2) ? 1 : 0;
|
||||
reg3::minimize_quotient_maps = (i & 4) ? 1 : 0;
|
||||
}
|
||||
|
||||
else if(argis("-subrule")) {
|
||||
else if(argis("-load-honeycomb")) {
|
||||
stop_game();
|
||||
shift(); reg3::other_rule = args();
|
||||
shstream ins(decompress_string(read_file_as_string(arg::args())));
|
||||
string s = args();
|
||||
shift(); reg3::replace_rule_file = s;
|
||||
shstream ins(decompress_string(read_file_as_string(s)));
|
||||
ins.read(ins.vernum);
|
||||
mapstream::load_geometry(ins);
|
||||
reg3::subrule = true;
|
||||
reg3::consider_rules = 2;
|
||||
}
|
||||
|
||||
else if(argis("-less-states")) {
|
||||
|
Reference in New Issue
Block a user