mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	support for portal spaces
This commit is contained in:
		
							
								
								
									
										2
									
								
								cell.cpp
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								cell.cpp
									
									
									
									
									
								
							| @@ -953,6 +953,7 @@ EX cdata *arcmCdata(cell *c) { | ||||
|  | ||||
| EX int getCdata(cell *c, int j) { | ||||
|   if(fake::in()) return FPIU(getCdata(c, j)); | ||||
|   if(experimental) return 0; | ||||
|   if(hybri) { c = hybrid::get_where(c).first; return PIU(getBits(c)); } | ||||
|   else if(INVERSE) { | ||||
|     cell *c1 = gp::get_mapped(c); | ||||
| @@ -978,6 +979,7 @@ EX int getCdata(cell *c, int j) { | ||||
|  | ||||
| EX int getBits(cell *c) { | ||||
|   if(fake::in()) return FPIU(getBits(c)); | ||||
|   if(experimental) return 0; | ||||
|   if(hybri) { c = hybrid::get_where(c).first; return PIU(getBits(c)); } | ||||
|   else if(INVERSE) { | ||||
|     cell *c1 = gp::get_mapped(c); | ||||
|   | ||||
| @@ -803,6 +803,8 @@ static const flagtype qAFFINE          = Flag(24); | ||||
|  | ||||
| static const flagtype qULTRA           = Flag(25); | ||||
|  | ||||
| static const flagtype qPORTALSPACE     = Flag(26); | ||||
|  | ||||
| // note: dnext assumes that x&7 equals 7 | ||||
| static const int SEE_ALL = 50; | ||||
| static const int OINF = 100; | ||||
|   | ||||
| @@ -3578,6 +3578,7 @@ EX namespace windmap { | ||||
|     } | ||||
|  | ||||
|   EX void create() { | ||||
|     if(cgflags & qPORTALSPACE) return; | ||||
|     samples.clear(); | ||||
|     neighbors.clear(); | ||||
|     getid.clear(); | ||||
|   | ||||
| @@ -39,7 +39,12 @@ EX namespace euc { | ||||
|     static const coord D1 = main_axes[1]; | ||||
|     static const coord D2 = main_axes[2]; | ||||
|     vector<coord> shifttable; | ||||
|     switch(geometry) { | ||||
|          | ||||
|     /* for portal spaces... */ | ||||
|     auto g = geometry; | ||||
|     if(S7 == 6 && WDIM == 3) g = gCubeTiling; | ||||
|  | ||||
|     switch(g) { | ||||
|       case gCubeTiling: | ||||
|         shifttable = { +D0, +D1, +D2 }; | ||||
|         break; | ||||
| @@ -340,6 +345,7 @@ EX namespace euc { | ||||
|     } | ||||
|    | ||||
|   EX bool pseudohept(cell *c) { | ||||
|     if(cgflags & qPORTALSPACE) return false; | ||||
|     coord co = cubemap()->ispacemap[c->master]; | ||||
|     if(S7 == 12) { | ||||
|       for(int i=0; i<3; i++) if((co[i] & 1)) return false; | ||||
| @@ -415,6 +421,7 @@ EX namespace euc { | ||||
|     } | ||||
|  | ||||
|   EX void set_land(cell *c) { | ||||
|     if(cgflags & qPORTALSPACE) return; | ||||
|     setland(c, specialland);  | ||||
|     auto m = cubemap(); | ||||
|     auto co = m->ispacemap[c->master]; | ||||
|   | ||||
							
								
								
									
										2
									
								
								help.cpp
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								help.cpp
									
									
									
									
									
								
							| @@ -884,7 +884,7 @@ EX void describeMouseover() { | ||||
|       out += ")"; | ||||
|       } | ||||
|  | ||||
|     if(cheater && euc::in(3)) { | ||||
|     if(cheater && euc::in(3) && !(cgflags & qPORTALSPACE)) { | ||||
|       auto co = euc::get_ispacemap()[c->master]; | ||||
|       out += " (" + its(co[0]); | ||||
|       for(int i=1; i<WDIM; i++) out += "," + its(co[i]); | ||||
|   | ||||
| @@ -34,6 +34,7 @@ EX int ctof012(cell *c) { | ||||
|   } | ||||
|  | ||||
| int gp_threecolor() { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   if(!GOLDBERG) return 0; | ||||
|   #if CAP_GP | ||||
|   if(S3 == 3 && (gp::param.first - gp::param.second) % 3 == 0) return 2; | ||||
| @@ -42,6 +43,7 @@ int gp_threecolor() { | ||||
|   } | ||||
|  | ||||
| int eupattern(cell *c) { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   auto co = euc2_coordinates(c); | ||||
|   int x = co.first, y = co.second; | ||||
|   if(a4) | ||||
| @@ -57,6 +59,7 @@ int eupattern4(cell *c) { | ||||
|   } | ||||
|  | ||||
| EX bool ishept(cell *c) { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   // EUCLIDEAN | ||||
|   if(euc::in() && PURE) return eupattern(c) == 0; | ||||
|   else if(hybri) { cell *c1 = hybrid::get_where(c).first; return c1 == c1->master->c7; } | ||||
| @@ -64,6 +67,7 @@ EX bool ishept(cell *c) { | ||||
|   } | ||||
|  | ||||
| EX bool ishex1(cell *c) { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   // EUCLIDEAN | ||||
|   if(euc::in() && PURE) return eupattern(c) == 1; | ||||
|   #if CAP_GP | ||||
| @@ -73,6 +77,7 @@ EX bool ishex1(cell *c) { | ||||
|   } | ||||
|  | ||||
| bool ishex2(cell *c) { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   // EUCLIDEAN | ||||
|   if(euc::in() && PURE) return eupattern(c) == 1; | ||||
|   #if CAP_GP | ||||
| @@ -82,6 +87,7 @@ bool ishex2(cell *c) { | ||||
|   } | ||||
|  | ||||
| EX int chessvalue(cell *c) { | ||||
|   if(cgflags & qPORTALSPACE) return 0; | ||||
|   #if CAP_ARCM | ||||
|   if(arcm::in())  | ||||
|     return arcm::chessvalue(c); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue