| (* Copyright (C) 2005-2026 Free Software Foundation, Inc. *) |
| (* This file is part of GNU Modula-2. |
| |
| GNU Modula-2 is free software; you can redistribute it and/or modify it under |
| the terms of the GNU General Public License as published by the Free |
| Software Foundation; either version 3, or (at your option) any later |
| version. |
| |
| GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| for more details. |
| |
| You should have received a copy of the GNU General Public License along |
| with gm2; see the file COPYING. If not, write to the Free Software |
| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *) |
| DEFINITION MODULE RoomMap ; |
| |
| (* |
| Title : RoomMap |
| Author : Gaius Mulley |
| Date : 20/8/88 |
| LastEdit : 20/8/88 |
| System : LOGITECH MODULA-2/86 |
| Description: Generates rooms from a list of boxes. |
| *) |
| |
| EXPORT QUALIFIED MaxNoOfRooms, |
| MaxNoOfTreasures, |
| Rooms, |
| NoOfRooms, |
| DoorStatus, |
| Treasure, TreasureInfo, Door, Line, |
| CreateRoomMap ; |
| |
| CONST |
| MaxNoOfRooms = 350 ; (* An upper limit *) |
| WallsPerRoom = 8 ; (* An upper limit *) |
| DoorsPerRoom = 6 ; (* An upper limit *) |
| MaxNoOfTreasures = 15 ; (* An upper limit *) |
| |
| TYPE |
| Line = RECORD |
| X1 : CARDINAL ; |
| Y1 : CARDINAL ; |
| X2 : CARDINAL ; |
| Y2 : CARDINAL |
| END ; |
| |
| DoorStatus = (Open, Closed, Secret) ; |
| |
| Door = RECORD |
| Position : Line ; |
| StateOfDoor : DoorStatus ; |
| LeadsTo : CARDINAL |
| END ; |
| |
| TreasureInfo = RECORD |
| Xpos : CARDINAL ; |
| Ypos : CARDINAL ; |
| Rm : CARDINAL ; |
| Tweight : CARDINAL ; |
| TreasureName : ARRAY [0..12] OF CHAR |
| END ; |
| |
| Room = RECORD |
| RoomNo : CARDINAL ; |
| NoOfWalls : CARDINAL ; |
| NoOfDoors : CARDINAL ; |
| Walls : ARRAY [1..WallsPerRoom] OF Line ; |
| Doors : ARRAY [1..DoorsPerRoom] OF Door ; |
| (* Treasures : BITSET ; *) |
| END ; |
| |
| |
| |
| VAR |
| NoOfRooms : CARDINAL ; |
| Treasure : ARRAY [1..MaxNoOfTreasures] OF TreasureInfo ; |
| Rooms : ARRAY [1..MaxNoOfRooms] OF Room ; |
| |
| |
| (* |
| CreateRoomMap - creates rooms from a list of boxes in BoxMap. |
| *) |
| |
| PROCEDURE CreateRoomMap ; |
| |
| |
| |
| END RoomMap. |