You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
1.9 KiB

/**
* @file towners.h
*
* Interface of functionality for loading and spawning towners.
*/
#ifndef __TOWNERS_H__
#define __TOWNERS_H__
DEVILUTION_BEGIN_NAMESPACE
#ifdef __cplusplus
extern "C" {
#endif
typedef enum _talker_id {
TOWN_SMITH,
TOWN_HEALER,
TOWN_DEADGUY,
TOWN_TAVERN,
TOWN_STORY,
TOWN_DRUNK,
TOWN_WITCH,
TOWN_BMAID,
TOWN_PEGBOY,
TOWN_COW,
TOWN_FARMER,
TOWN_GIRL,
TOWN_COWFARM,
NUM_TOWNER_TYPES,
} _talker_id;
typedef struct TNQ {
Uint8 _qsttype;
Uint8 _qstmsg;
bool _qstmsgact;
} TNQ;
typedef struct TownerStruct {
int _tmode;
int _ttype;
int _tx; // Tile X-position of NPC
int _ty; // Tile Y-position of NPC
int _txoff; // Sprite X-offset (unused)
int _tyoff; // Sprite Y-offset (unused)
int _txvel; // X-velocity during movement (unused)
int _tyvel; // Y-velocity during movement (unused)
int _tdir; // Facing of NPC (unused)
Uint8 *_tAnimData;
int _tAnimDelay; // Tick length of each frame in the current animation
int _tAnimCnt; // Increases by one each game tick, counting how close we are to _pAnimDelay
int _tAnimLen; // Number of frames in current animation
int _tAnimFrame; // Current frame of animation.
int _tAnimFrameCnt;
Sint8 _tAnimOrder;
int _tAnimWidth;
int _tAnimWidth2;
int _tTenPer;
int _teflag;
int _tbtcnt;
int _tSelFlag;
bool _tMsgSaid;
TNQ qsts[MAXQUESTS];
int _tSeed;
int _tVar1;
int _tVar2;
int _tVar3;
int _tVar4;
char _tName[PLR_NAME_LEN];
Uint8 *_tNAnim[8];
int _tNFrames;
Uint8 *_tNData;
} TownerStruct;
extern TownerStruct towner[NUM_TOWNERS];
void InitTowners();
void FreeTownerGFX();
void ProcessTowners();
ItemStruct *PlrHasItem(int pnum, int item, int *i);
void TalkToTowner(int p, int t);
extern _speech_id Qtalklist[NUM_TOWNER_TYPES][MAXQUESTS];
#ifdef __cplusplus
}
#endif
DEVILUTION_END_NAMESPACE
#endif /* __TOWNERS_H__ */