/
Crimson2/alias/
Crimson2/area.tmp/
Crimson2/area.tmp/AnomalySpaceDock/
Crimson2/area.tmp/AnomalyStation/
Crimson2/area.tmp/AntHill/
Crimson2/area.tmp/ArcticTerrarium/
Crimson2/area.tmp/BuilderCity/
Crimson2/area.tmp/Dungeon/
Crimson2/area.tmp/MiningDock/
Crimson2/area.tmp/PipeSystem/
Crimson2/area.tmp/RattArea/
Crimson2/area.tmp/RobotFactory/
Crimson2/area.tmp/SilverDale/
Crimson2/area.tmp/StarshipFearless/
Crimson2/area.tmp/StationConduits/
Crimson2/area.tmp/TerrariumAlpha/
Crimson2/area.tmp/TerrariumBeta/
Crimson2/area.tmp/TestArea/
Crimson2/area.tmp/Void/
Crimson2/area/
Crimson2/area/AnomalySpaceDock/
Crimson2/area/AnomalyStation/
Crimson2/area/MiningDock/
Crimson2/area/PipeSystem/
Crimson2/area/SilverDale/
Crimson2/area/StationConduits/
Crimson2/area/Void/
Crimson2/board/
Crimson2/clone/
Crimson2/lib/
Crimson2/mole/
Crimson2/mole/mole_src/HELP/
Crimson2/player/
Crimson2/util/
Crimson2/wldedit/
Crimson2/wldedit/res/
#define BOARD_NAME_MAX   20
#define BOARD_NOTREPLY   -1

typedef struct BoardListType {
  BYTE   bFileName[BOARD_NAME_MAX];
  LWORD  bVirtual;
  STR   *bName;
  STR   *bEditor;
  FLAG   bFlag; /* add class specific etc flags l8r */
  WORD   bMax; /* max # of messages on this board */
  WORD   bMinLevel; /* Min level to read */
  INDEX  bIndex;
} BOARDLIST;

typedef struct BoardMsgType {
  STR     *bAuthor;
  STR     *bTitle;
  STR     *bText;
  time_t   bCreateTime;
  time_t   bLastRead;
  WORD     bReplyTo; /* -1 for not a reply */
  WORD     bSequence; /* sequence number */
  BYTE     bNotify;
} BOARDMSG;

#define BOARD_LIST_SIZE      1024
#define BOARDMSG_ALLOC_SIZE  256

#define B_UNSAVED            1<<0


/* list of all the boards */
extern BOARDLIST *boardList;
extern LWORD      boardListMax;
extern FLAG       boardListFlag;
extern BYTE      *bFlagList[];

extern INDEXPROC(BoardMsgCompare);

extern void      BoardInit(void);
extern void      BoardTableWrite(void);
extern void      BoardRead(BYTE board);
extern BYTE      BoardWrite(BYTE board);
extern LWORD     BoardCreate(BYTE *fileName, LWORD virtual);
extern LWORD     BoardOf(LWORD virtual);
extern BOARDMSG *BoardMsgCreate(BYTE board, THING *thing, BYTE *title, WORD replyTo);
extern void      BoardMsgDelete(LWORD board, LWORD msgNum);
extern void      BoardMsgDeleteCheck(BYTE board);
extern BYTE     *BoardMsgGetHeader(BYTE *buf, LWORD board, LWORD msgNum);
extern void      BoardIdle(void);
extern void      BoardShow(BYTE board, THING *thing);
extern void      BoardShowMessage(BYTE board, LWORD msgNum, THING *thing);

#define BoardMsg(x) ((BOARDMSG*)(x))
#define BOARDFREE(x) x=BoardFree(x)