2019-12-15 19:07:38 +01:00
|
|
|
#include "misc.h"
|
2020-04-01 13:09:14 +02:00
|
|
|
#include "../Specific/setup.h"
|
2020-04-22 14:12:10 +02:00
|
|
|
#include "..\Specific\level.h"
|
2019-12-15 19:07:38 +01:00
|
|
|
|
2019-12-16 19:04:28 +01:00
|
|
|
#define CHK_ANY(var, flag) (var & flag) != 0
|
|
|
|
#define CHK_NOP(var, flag) !(var & flag)
|
|
|
|
|
2019-12-15 19:07:38 +01:00
|
|
|
short GF(short animIndex, short frameToStart)
|
|
|
|
{
|
|
|
|
return short(Anims[animIndex].frameBase + frameToStart);
|
|
|
|
}
|
|
|
|
|
|
|
|
short GF2(short objectID, short animIndex, short frameToStart)
|
|
|
|
{
|
|
|
|
return short(Anims[Objects[objectID].animIndex + animIndex].frameBase + frameToStart);
|
|
|
|
}
|
|
|
|
|
2019-12-17 17:37:53 +01:00
|
|
|
void GetRoomList(short roomNumber, short* roomArray, short* numRooms)
|
2019-12-15 19:07:38 +01:00
|
|
|
{
|
2019-12-17 17:37:53 +01:00
|
|
|
short numDoors, *door, adjoiningRoom;
|
|
|
|
int i, j;
|
|
|
|
bool adjoiningRoomFound;
|
|
|
|
|
|
|
|
roomArray[0] = roomNumber;
|
|
|
|
door = Rooms[roomNumber].door;
|
|
|
|
if (door)
|
|
|
|
{
|
|
|
|
numDoors = *door;
|
|
|
|
door++;
|
|
|
|
|
|
|
|
for (i = 0; i < numDoors; i++)
|
|
|
|
{
|
|
|
|
adjoiningRoom = *door;
|
|
|
|
adjoiningRoomFound = false;
|
|
|
|
|
|
|
|
for (j = 0; j < *numRooms; j++)
|
|
|
|
{
|
|
|
|
if (roomArray[i] == adjoiningRoom)
|
|
|
|
{
|
|
|
|
adjoiningRoomFound = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!adjoiningRoomFound)
|
2020-01-18 20:52:57 +01:00
|
|
|
roomArray[*(numRooms++)] = adjoiningRoom;
|
2019-12-17 17:37:53 +01:00
|
|
|
|
|
|
|
door += 16;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void GetRoomList(short roomNumber, vector<short>* destRoomList)
|
|
|
|
{
|
|
|
|
vector<short> roomList;
|
|
|
|
short numDoors, *door, adjoiningRoom;
|
|
|
|
int i, j;
|
|
|
|
bool adjoiningRoomFound;
|
|
|
|
|
|
|
|
roomList.push_back(roomNumber);
|
|
|
|
door = Rooms[roomNumber].door;
|
|
|
|
if (door)
|
|
|
|
{
|
|
|
|
numDoors = *door;
|
|
|
|
door++;
|
|
|
|
|
|
|
|
for (i = 0; i < numDoors; i++)
|
|
|
|
{
|
|
|
|
adjoiningRoom = *door;
|
|
|
|
adjoiningRoomFound = false;
|
|
|
|
|
|
|
|
for (j = 0; j < roomList.size(); j++)
|
|
|
|
{
|
|
|
|
if (roomList[i] == adjoiningRoom)
|
|
|
|
{
|
|
|
|
adjoiningRoomFound = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!adjoiningRoomFound)
|
|
|
|
roomList.push_back(adjoiningRoom);
|
|
|
|
|
|
|
|
door += 16;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
*destRoomList = roomList;
|
2019-12-16 19:04:28 +01:00
|
|
|
}
|