1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
/* header file for client */
typedef void game;
#define Turn_NORMAL (0)
#define Turn_HASTE (1)
#define Turn_TIMESTOP (2)
#define Gesture_NOTHING (0)
#define Gesture_PALM (1)
#define Gesture_DIGIT (2)
#define Gesture_FINGERS (3)
#define Gesture_WAVE (4)
#define Gesture_CLAPHALF (5)
#define Gesture_SNAP (6)
#define Gesture_KNIFE (7)
#define Gesture_ANTISPELL (8) /* not less than NUMGESTURES, because. */
#define Gesture_UNCLEAR (9) /* not less than NUMGESTURES, because. */
#define NUMGESTURES (8)
#define Gesture_DOUBLE (16)
#define MAXPLAYERS (8)
#define Gender_NONE (0)
#define Gender_MALE (1)
#define Gender_FEMALE (2)
#define Gender_NEUTER (3)
#define Stuff_RESIST_HEAT (1<<0)
#define Stuff_RESIST_COLD (1<<1)
#define Stuff_PROTECT_EVIL (1<<2)
#define Stuff_POISON (1<<3)
#define Stuff_DISEASE (1<<4)
#define Stuff_INVISIBLE (1<<5)
#define Stuff_BLIND (1<<6)
#define Qu_NoQuery (0)
/* placeholder; to be ignored by client */
#define Qu_LeftHand (1)
#define Qu_RightHand (2)
/* rock is an array of int. rock[0] is the list length; rock[1..len] is a spell number,
ORed with QuVal_Hand_Both if the spell requires both hands. Answer is an index
into rock (0..len-1) */
#define Qu_SetOffDelay (3)
/* rock is the spell number */
#define Qu_ElementalType (4)
/* no rock */
#define Qu_ParalysisHand (5)
#define Qu_CharmHand (6)
/* rock is index number of target wizard */
#define Qu_CharmGesture (7)
/* rock is index number of target wizard. Answer is Gesture_*. */
#define Qu_MonsterTarget (8)
/* rock is (0 if monster gets one attack, 1 or 2 if it gets two) * 256 + monster index.
Answer is a wizard/creature number, ORed with QuVal_Target_*. (Or 0 for none). */
#define Qu_WhichToDelay (9)
#define Qu_WhichToPerm (10)
/* rock is a pointer to an int array of spell numbers, terminated by -1. */
/* for qtypes higher than this, it's a target picker. rock is the spell number,
ORed with QuVal_Hand_*. Answer is a wizard/creature/corpse number, ORed with
QuVal_Target_*. (Or 0 for none) */
#define Qu_TargetBeing (20)
#define Qu_TargetBeingNone (21)
#define Qu_TargetWizard (22)
#define Qu_TargetWizardNone (23)
#define Qu_TargetRaiseDead (24)
#define QuVal_Hand_Left (256)
#define QuVal_Hand_Right (512)
#define QuVal_Hand_Both (1024)
#define QuVal_Hand_MASK (QuVal_Hand_Left | QuVal_Hand_Right | QuVal_Hand_Both)
#define QuVal_Target_Wizard (256)
#define QuVal_Target_Creature (512)
#define QuVal_Target_Corpse (1024)
#define QuVal_Target_MASK (QuVal_Target_Wizard | QuVal_Target_Creature | QuVal_Target_Corpse)
struct query {
int player;
int qtype;
char *rock;
int answer; /* to be filled in */
};
struct interface {
/* in the printing calls, any char * may be NULL */
void (*proc_PrintMsg)( /* char *msg, game *game, rock */ );
void (*proc_PrintMsg2)( /* int person1, char *msg1, char *msgelse, game *game, rock */ );
void (*proc_PrintMsg3)( /* int person1, int person2, char *msg1, char *msg2,
char *msgelse, game *game, rock */ );
void (*proc_Queries)( /* int numqueries, struct query *qlist, game *game, rock */ );
};
extern game *BeginGame( /* int numplayers, char **names, int *genders, struct interface *callbacks, rock */ );
/* names is a pointer to an array of name strings. */
extern int RunTurn( /* game *game, int *moves */ );
/* moves contains two ints for each player (left, right). The encoding is with Gesture_*. */
extern void SeeGesture( /* game *game, int player, int asker, int *buf, int size */ );
extern void FreeGame( /* game *game */ );
extern int TurnType( /* game *game */ );
extern int TurnPlayerActive( /* game *game, int player */ );
extern int NumberOfTargets( /* game *game, int targettype */);
extern char *NameOfTarget( /* game *game, int targettype, int targetnum */);
extern int StuffAboutTarget( /* game *game, int targettype, int targetnum */);
/* targettype is QuVal_Target_* */
extern int NumberOfBeings( /* game *game, int targettype */);
extern int HitPointsOfBeing( /* game *game, int targettype, int indexnum */);
extern int StuffAboutBeing( /* game *game, int targettype, int indexnum */);
extern int OwnerOfCreature( /* game *game, int indexnum */);
extern char *NameOfBeing( /* game *game, int targettype, int indexnum */);
/* targettype is QuVal_Target_* */
extern void LogInTranscript( /* game *game, char *str */);
extern void WriteTranscript( /* game *game, FILE *f */);
|