aboutsummaryrefslogtreecommitdiff
path: root/src/parsec/include/con_info.h
blob: a06da72216e42ec35f1b8348f13cb5ec69225a54 (plain)
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
/*
 * PARSEC HEADER: con_info.h
 */

#ifndef _CON_INFO_H_
#define _CON_INFO_H_


// callback function type
typedef int (*notify_callback_fpt)( GenObject *base );


// access information for single object property (type/class field)

struct proplist_s {

	const char*			propname;		// name property can be accessed by
	size_t				propoffset;		// offset of property in obj structure
	int 				bmin;			// minimum value of property
	int 				bmax;			// maximum value of property
	int					fieldtype;		// field's data type
	notify_callback_fpt notify_callback; // callback on field value changes
};

//NOTE:
// bmin and bmax (value bounds) for all types other than
// PROPTYPE_INT have to be specified in fixed-point!

//NOTE:
// for PROPTYPE_STRING and PROPTYPE_CHARPTR bmin and bmax specify
// minimum and maximum number of chars (excluding the '\0').

#define PROPTYPE_INT		0
#define PROPTYPE_FLOAT		1
#define PROPTYPE_GEOMV		2
#define PROPTYPE_FIXED		3
#define PROPTYPE_STRING		4
#define PROPTYPE_CHARPTR	5


// external functions

void	CON_RegisterCustomType( dword objtypeid, proplist_s *proplist );

char*	BuildTypeInfo( int typeindex );
char*	BuildClassInfo( int classindex );

int		CheckSetObjTypeProperty( const char *query, const char *scan );
int 	CheckSetObjClassProperty( const char *query, const char *scan );
int		CheckSetObjInstanceProperty( const char *query, const char *scan );

int 	CheckTypeInfo( const char *scan );
int 	CheckClassInfo( const char *scan );
int		CheckInstanceInfo( const char *scan );

int		WritePropList( FILE* fp, dword objid );

int		Cmd_FaceInfo( char *command );


#endif // _CON_INFO_H_