Mercurial > hg > early-roguelike
annotate xrogue/rooms.c @ 273:51ddbe7b992d
UltraRogue: begin autoconfiscation.
Build options can now be set with configure.
| author | John "Elwin" Edwards | 
|---|---|
| date | Mon, 04 Sep 2017 21:08:09 -0400 | 
| parents | f54901b9c39b | 
| children | 
| rev | line source | 
|---|---|
| 133 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 1 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 2 rooms.c - Draw the nine rooms on the screen | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 3 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 4 XRogue: Expeditions into the Dungeons of Doom | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 5 Copyright (C) 1991 Robert Pietkivitch | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 6 All rights reserved. | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 7 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 8 Based on "Advanced Rogue" | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 9 Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 10 All rights reserved. | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 11 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 12 Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 13 Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 14 All rights reserved. | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 15 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 16 See the file LICENSE.TXT for full copyright and licensing information. | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 17 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 18 | 
| 135 | 19 #include <stdlib.h> | 
| 133 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 20 #include <curses.h> | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 21 #include "rogue.h" | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 22 | 
| 220 
f54901b9c39b
XRogue: convert to ANSI-style function declarations.
 John "Elwin" Edwards parents: 
135diff
changeset | 23 void horiz(int cnt); | 
| 
f54901b9c39b
XRogue: convert to ANSI-style function declarations.
 John "Elwin" Edwards parents: 
135diff
changeset | 24 void vert(int cnt); | 
| 
f54901b9c39b
XRogue: convert to ANSI-style function declarations.
 John "Elwin" Edwards parents: 
135diff
changeset | 25 | 
| 
f54901b9c39b
XRogue: convert to ANSI-style function declarations.
 John "Elwin" Edwards parents: 
135diff
changeset | 26 void | 
| 
f54901b9c39b
XRogue: convert to ANSI-style function declarations.
 John "Elwin" Edwards parents: 
135diff
changeset | 27 do_rooms(void) | 
| 133 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 28 { | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 29 register int i; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 30 register struct room *rp; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 31 register struct linked_list *item; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 32 register struct thing *tp; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 33 int left_out; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 34 int num_monsters; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 35 int which_monster; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 36 int j; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 37 coord top; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 38 coord bsze; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 39 coord mp; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 40 coord *np; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 41 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 42 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 43 * bsze is the maximum room size | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 44 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 45 bsze.x = cols/3; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 46 bsze.y = (lines-2)/3; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 47 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 48 * Clear things for a new level | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 49 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 50 for (rp = rooms; rp < &rooms[MAXROOMS]; rp++) { | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 51 rp->r_flags = 0; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 52 _r_free_fire_list(&rp->r_fires); | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 53 } | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 54 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 55 * Put the gone rooms, if any, on the level | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 56 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 57 left_out = rnd(4); | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 58 for (i = 0; i < left_out; i++) | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 59 rooms[rnd_room()].r_flags |= ISGONE; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 60 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 61 * dig and populate all the rooms on the level | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 62 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 63 for (i = 0, rp = rooms; i < MAXROOMS; rp++, i++) | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 64 { | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 65 bool has_gold=FALSE; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 66 | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 67 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 68 * Find upper left corner of box that this room goes in | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 69 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 70 top.x = (i%3)*bsze.x; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 71 top.y = i/3*bsze.y + 1; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 72 if (rp->r_flags & ISGONE) | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 73 { | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 74 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 75 * Place a gone room. Make certain that there is a blank line | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 76 * for passage drawing. | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 77 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 78 do | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 79 { | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 80 rp->r_pos.x = top.x + rnd(bsze.x-2) + 1; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 81 rp->r_pos.y = top.y + rnd(bsze.y-2) + 1; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 82 rp->r_max.x = -cols; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 83 rp->r_max.y = -lines; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 84 } until(rp->r_pos.y > 0 && rp->r_pos.y < lines-2); | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 85 continue; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 86 } | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 87 if (rnd(10) < level-1) | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 88 rp->r_flags |= ISDARK; | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 89 /* | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 90 * Find a place and size for a random room | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 91 */ | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 92 do | 
| 
e6179860cb76
Import XRogue 8.0 from the Roguelike Restoration Project (r1490)
 John "Elwin" Edwards parents: diff
changeset | 
