Mercurial > hg > early-roguelike
annotate arogue5/rooms.c @ 201:6fb21004a981
Fix some preprocessor directives.
Include process.h in the right place, and use the correct definition of
PATH_MAX, when compiling on Windows.
| author | John "Elwin" Edwards | 
|---|---|
| date | Wed, 12 Aug 2015 16:56:19 -0400 | 
| parents | c49f7927b0fa | 
| children | 56e748983fa8 | 
| rev | line source | 
|---|---|
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 1 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 2 * Draw the nine rooms on the screen | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 3 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 4 * Advanced Rogue | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 5 * Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 6 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 7 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 8 * Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 9 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 10 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 11 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 12 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 13 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 14 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 15 #include "curses.h" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 16 #include "rogue.h" | 
| 67 | 17 #include <stdlib.h> | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 18 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 19 do_rooms() | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 20 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 21 register int i; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 22 register struct room *rp; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 23 register struct linked_list *item; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 24 register struct thing *tp; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 25 register int left_out; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 26 coord top; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 27 coord bsze; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 28 coord mp; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 29 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 30 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 31 * bsze is the maximum room size | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 32 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 33 bsze.x = COLS/3; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 34 bsze.y = (LINES-2)/3; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 35 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 36 * Clear things for a new level | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 37 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 38 for (rp = rooms; rp < &rooms[MAXROOMS]; rp++) { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 39 rp->r_flags = 0; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 40 rp->r_fires = NULL; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 41 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 42 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 43 * Put the gone rooms, if any, on the level | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 44 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 45 left_out = rnd(4); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 46 for (i = 0; i < left_out; i++) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 47 rooms[rnd_room()].r_flags |= ISGONE; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 48 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 49 * dig and populate all the rooms on the level | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 50 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 51 for (i = 0, rp = rooms; i < MAXROOMS; rp++, i++) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 52 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 53 bool has_gold=FALSE; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 54 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 55 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 56 * Find upper left corner of box that this room goes in | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 57 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 58 top.x = (i%3)*bsze.x; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 59 top.y = i/3*bsze.y + 1; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 60 if (rp->r_flags & ISGONE) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 61 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 62 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 63 * Place a gone room. Make certain that there is a blank line | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 64 * for passage drawing. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 65 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 66 do | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 67 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 68 rp->r_pos.x = top.x + rnd(bsze.x-2) + 1; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 69 rp->r_pos.y = top.y + rnd(bsze.y-2) + 1; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 70 rp->r_max.x = -COLS; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 71 rp->r_max.x = -LINES; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 72 } until(rp->r_pos.y > 0 && rp->r_pos.y < LINES-2); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 73 continue; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 74 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 75 if (rnd(10) < level-1) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 76 rp->r_flags |= ISDARK; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 77 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 78 * Find a place and size for a random room | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 79 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 80 do | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 81 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 82 rp->r_max.x = rnd(bsze.x - 4) + 4; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 83 rp->r_max.y = rnd(bsze.y - 4) + 4; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 84 rp->r_pos.x = top.x + rnd(bsze.x - rp->r_max.x); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 85 rp->r_pos.y = top.y + rnd(bsze.y - rp->r_max.y); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 86 } until (rp->r_pos.y != 0); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 87 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 88 /* Draw the room */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 89 draw_room(rp); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 90 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 91 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 92 * Put the gold in | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 93 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 94 if (rnd(100) < 50 && level >= cur_max) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 95 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 96 register struct linked_list *item; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 97 register struct object *cur; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 98 coord tp; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 99 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 100 has_gold = TRUE; /* This room has gold in it */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 101 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 102 item = spec_item(GOLD, NULL, NULL, NULL); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 103 cur = OBJPTR(item); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 104 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 105 /* Put the gold into the level list of items */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin | 
