22#ifndef MM1_DATA_BESTIARY_H
23#define MM1_DATA_BESTIARY_H
25#include "common/stream.h"
26#include "mm/mm1/data/monsters.h"
37 byte _seen[(MONSTERS_COUNT + 7) / 8] = {};
41 memset(_seen, 0,
sizeof(_seen));
44 bool hasSeen(uint
id)
const {
45 return id >= 1 &&
id <= MONSTERS_COUNT &&
46 (_seen[(
id - 1) / 8] & (1 << ((
id - 1) % 8)));
49 void discover(uint
id) {
50 if (
id >= 1 &&
id <= MONSTERS_COUNT)
51 _seen[(
id - 1) / 8] |= 1 << ((
id - 1) % 8);
56 for (uint
id = 1;
id <= MONSTERS_COUNT; ++id) {
67 stream.
write(_seen,
sizeof(_seen));
73 const int64 start = stream.
pos();
74 if (stream.
size() - start < 6 + (int64)
sizeof(_seen))
83 if (stream.
read(_seen,
sizeof(_seen)) !=
sizeof(_seen))
uint32 readUint32BE()
Definition: stream.h:515
uint16 readUint16BE()
Definition: stream.h:501
virtual uint32 read(void *dataPtr, uint32 dataSize)=0
virtual int64 pos() const =0
virtual int64 size() const =0
virtual bool seek(int64 offset, int whence=SEEK_SET)=0
void writeUint16BE(uint16 value)
Definition: stream.h:173
virtual uint32 write(const void *dataPtr, uint32 dataSize)=0
void writeUint32BE(uint32 value)
Definition: stream.h:180
Definition: bestiary.h:35
Definition: detection.h:27