File: handwave.h

package info (click to toggle)
spellcast 1.0-21
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k, jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 768 kB
  • ctags: 834
  • sloc: ansic: 7,660; makefile: 128; sh: 11
file content (131 lines) | stat: -rw-r--r-- 4,432 bytes parent folder | download | duplicates (5)
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 */);