summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/hackvr/examples/dungen/dun2hackvr.c46
1 files changed, 14 insertions, 32 deletions
diff --git a/share/hackvr/examples/dungen/dun2hackvr.c b/share/hackvr/examples/dungen/dun2hackvr.c
index 3d40a70..a7cd517 100644
--- a/share/hackvr/examples/dungen/dun2hackvr.c
+++ b/share/hackvr/examples/dungen/dun2hackvr.c
@@ -24,51 +24,33 @@ void print_field() {
}
//we need to draw the room here.
//each room will be... 16x16? sure....
- //we can use bitmasks to find with sides of the room need to be whole walls
+ //we can use bitmasks to find which sides of the room need to be whole walls
//and which will contain passages to the next rooms
- //whole walls are a single rectangle that goes from z0 to z... 8 I guess
- //we need to loop over each wall and check if it has a passage through it now
+ //whole walls are a single rectangle
+ //we need to loop over each wall and check if it has a passage through it
if(field[i]) {
- for(d=0;d<4;d++) {
+ for(d=0;d<4;d++) {//loop over the 4 possible directions/walls
if((field[i] & (1<<(3-d))) > 0) {//if this has an exit in this bit...
printf("wall_%d_%d addshape 2 4 -7 0 7 -7 8 7 -2 8 7 -2 0 7\n",i,d);//we need 4 parts for the doorway
printf("wall_%d_%d addshape 2 4 2 0 7 2 8 7 7 8 7 7 0 7\n",i,d);
- printf("wall_%d_%d addshape 2 4 -2 0 7 -2 8 7 -2 8 8 -2 0 8\n",i,d);
- printf("wall_%d_%d addshape 2 4 2 0 8 2 8 8 2 8 7 2 0 7\n",i,d);
- } else {
+ if(d % 2) {//only do the south and west doorjams. every door has an opposite door that matches it anyway
+ printf("wall_%d_%d addshape 2 4 -2 0 7 -2 8 7 -2 8 9 -2 0 9\n",i,d);
+ printf("wall_%d_%d addshape 2 4 2 0 9 2 8 9 2 8 7 2 0 7\n",i,d);
+ }
+ } else {//no door in this wall
printf("wall_%d_%d addshape 2 4 -7 0 7 -7 8 7 7 8 7 7 0 7\n",i,d);//solid wall
}
- printf("wall_%d_%d rotate 0 %d 0\n",i,d,deg[d]);
- printf("wall_%d_%d move %d 0 %d\n",i,d, (i%16) * 16 - (7 * 16),-(i/16) * 16 + (16));
+ printf("wall_%d_%d rotate 0 %d 0\n",i,d,deg[d]);//rotate this wall into position
+ printf("wall_%d_%d move %d 0 %d\n",i,d, (i%16) * 16 - (7 * 16),-(i/16) * 16 + (16));//and put it in the right spot ofc
}
}
}
-
}
int main(int argc,char *argv[]) {
- int i;
- //fprintf(stderr,"\x1b[H\x1b[2J");
- a[0x0]=" ";
- a[0x1]="- ";
- a[0x2]=" -";
- a[0x3]="---";
- a[0x4]=" . ";
- a[0x5]="-. ";
- a[0x6]=" .-";
- a[0x7]="-.-";
- a[0x8]=" ' ";
- a[0x9]="-' ";
- a[0xa]=" '-";
- a[0xb]="-'-";
- a[0xc]=" | ";
- a[0xd]="-| ";
- a[0xe]=" |-";
- a[0xf]="-|-";
- while(read(0,field,sizeof(field)) > 0) {
+ if(read(0,field,sizeof(field)) > 0)
print_field();
- break;
- //sleep(1);
+ return 0;
}
- return 0;
+ return 1;
}