From c0e8d2bf6e5b0f3aff23ab26902bf2d4930e25a2 Mon Sep 17 00:00:00 2001 From: epoch Date: Sun, 23 Feb 2020 23:52:22 -0600 Subject: cleaned up dun2hackvr.c a bunch, added some comments. only draw half of the doorjam rectangles now because I noticed I could get away with just making them twice as big. --- share/hackvr/examples/dungen/dun2hackvr.c | 46 ++++++++++--------------------- 1 file changed, 14 insertions(+), 32 deletions(-) (limited to 'share/hackvr/examples/dungen') 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; } -- cgit v1.2.3