/* ******************************************************************** * * FILE : assemblies.h Copyright (C) 1999 Geoff Davis * * USAGE: Definitions, constants and prototypes for assembly engine. * * -------------------------------------------------------------------- * * 1999 MAY 07 gdavis/azrael@laker.net Initial implementation. * * ******************************************************************** */ #if !defined( __ASSEMBLIES_H__ ) #define __ASSEMBLIES_H__ /* ******************************************************************** * * Preprocessor constants. * * ******************************************************************** */ /* Assembly type: Used in ASSEMBLY.iAssemblyType */ #define ASSM_ASSEMBLE 0 // Assembly must be assembled. #define ASSM_BAKE 1 // Assembly must be baked. #define ASSM_BREW 2 // Assembly must be brewed. #define ASSM_CRAFT 3 // Assembly must be crafted. #define ASSM_FLETCH 4 // Assembly must be fletched. #define ASSM_KNIT 5 // Assembly must be knitted. #define ASSM_MAKE 6 // Assembly must be made. #define ASSM_MIX 7 // Assembly must be mixed. #define ASSM_THATCH 8 // Assembly must be thatched. #define ASSM_WEAVE 9 // Assembly must be woven. #define MAX_ASSM 10 // Number of assembly types. /* ******************************************************************** * * Type aliases. * * ******************************************************************** */ typedef struct assembly_data ASSEMBLY; typedef struct component_data COMPONENT; /* ******************************************************************** * * Structure definitions. * * ******************************************************************** */ /* Assembly structure definition. */ struct assembly_data { long lVnum; /* Vnum of the object assembled. */ long lNumComponents; /* Number of components. */ unsigned char uchAssemblyType; /* Type of assembly (ASSM_xxx). */ struct component_data *pComponents; /* Array of component info. */ }; /* Assembly component structure definition. */ struct component_data { bool bExtract; /* Extract the object after use. */ bool bInRoom; /* Component in room, not inven. */ long lVnum; /* Vnum of the component object. */ }; /* ******************************************************************** * * Prototypes for assemblies.c. * * ******************************************************************** */ void assemblyBootAssemblies( void ); void assemblySaveAssemblies( void ); void assemblyListToChar( struct char_data *pCharacter ); bool assemblyAddComponent( long lVnum, long lComponentVnum, bool bExtract, bool bInRoom ); bool assemblyCheckComponents( long lVnum, struct char_data *pCharacter ); bool assemblyCreate( long lVnum, int iAssembledType ); bool assemblyDestroy( long lVnum ); bool assemblyHasComponent( long lVnum, long lComponentVnum ); bool assemblyRemoveComponent( long lVnum, long lComponentVnum ); int assemblyGetType( long lVnum ); long assemblyCountComponents( long lVnum ); long assemblyFindAssembly( const char *pszAssemblyName ); long assemblyGetAssemblyIndex( long lVnum ); long assemblyGetComponentIndex( ASSEMBLY *pAssembly, long lComponentVnum ); ASSEMBLY* assemblyGetAssemblyPtr( long lVnum ); /* ******************************************************************** */ #endif