diff options
Diffstat (limited to 'share/hackvr')
| -rw-r--r-- | share/hackvr/examples/dungen/dun2hackvr.c | 46 | 
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;  } | 
