/*=========================================================================
* LoadFml.h : This module contain all functions used to load 
*               a family type, this states, and all over
* This is a part of the Game project.
*
* Version              1.0
* Creation date        16/10/96
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
 
#if !defined(__LOADFML_H__)
#define __LOADFML_H__
 
#ifdef  __cplusplus
extern "C" {
#endif
 
#include "GAM/Header.h"
 
// Shaitan => module list in the level
/**** Modules scripts ****/
#define C_SectionCreateListOfPOs				  "CreateListOfPOs"
#define C_Entry_LoadPO							  "LoadNewPO"
// End Shaitan => module list in the level

/**** Actions scripts ****/
#define C_SectionCreateNewActionsArray            "CreateNewActionsArray"
#define C_SubSectionCreateNewAction               "CreateNewAction"
 
/**** States scripts ****/
// Shaitan => state list in the level
#define C_SectionCreateListOfState				  "CreateListOfState"
#define C_Entry_State							  "LoadNewState"
// End Shaitan => state list in the level

#define C_SectionCreateNewState                   "CreateNewState"
 
#define C_Entry_Animation                         "Animation"
#define C_Entry_NextState                         "NextState"
#define C_Entry_Speed                             "Speed"
#define C_Entry_Repeat                            "Repeat"
#define C_Entry_AddTargetState                    "AddTargetState"
#define C_Entry_ProhibitedTargetState							"ProhibitedTargetState"
#define C_Entry_AffectCollSet                     "AffectCollSet" 
#define C_Entry_LinkMechanics                     "LinkMechanics" 
 
#define C_Entry_TransitionStatusFlag              "TransitionStatusFlag" 
#define C_Value_TransitionAllowedByDefault        "AllowedByDefault" 
#define C_Value_TransitionProhibitedbyDefault     "ProhibitedbyDefault" 
 
 
#define C_szNoState                               "NoState_EndOfAction"     /* maj 13/12 DVD (Gizmo)*/
 
#define C_Entry_CustomBits						  "CustomBits"
 
/* CGHT 14/05/97*/
#define C_SectionSetBoundingVolume				  "SetBoundingVolume"
#define C_Entry_Geometric						  "BoundingVolume"
 
void fn_vRegisterAllBdVolumeScriptSections ();
 
 
void fn_vLoadFamily(struct tdstFamilyList_ *p_stFamily);
// Shaitan => state list in the level
void fn_vInitStateList (struct tdstFamilyList_ *p_stFamily);
// End Shaitan => state list in the level 
 
#if !defined(U64)
SCR_tde_Anl_ReturnValue fn_eScriptCallBackCreateNewState(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action	_eAction);
// Shaitan => state list in the level
SCR_tde_Anl_ReturnValue fn_eScriptCallBackCreateListOfState(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action	_eAction);
// End Shaitan => state list in the level
// Shaitan => module list in the level
SCR_tde_Anl_ReturnValue fn_eScriptCallBackCreateListOfPOs(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action	_eAction);
// End Shaitan => module list in the level
/* CGHT 14/05/97*/
SCR_tde_Anl_ReturnValue fn_eScriptCallBackSetBoundingVolume(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
#endif /* U64 */
 /*-----------------------------------------------------------------------------
 *  Description :   Save all the loaded families in binary mode
 *-----------------------------------------------------------------------------
 *  Input :         
 *  Output :        void
 *---------------------------------------------------------------------------*/
void fn_vSaveBinaryFamily(struct tdstFamilyList_ *_p_stFamily, unsigned long _ulId);
void fn_vSaveAllBinaryFamily(); /*AR970927*/
unsigned long GAM_fn_ulWriteFamilyBinaryBloc(unsigned long _ulFamily,char* _p_cBuffer);
void GAM_fn_vResolvePointersOfFamilyBinaryBloc(unsigned long _ulPointer);
 
/*-----------------------------------------------------------------------------
 *  Description : Save all structures composing a family into one file
 *-----------------------------------------------------------------------------
 *  Input :  _p_stFamily : Address of the family 
 *			 _szAnimationBankName : Name of the file containing all the family
 *  Output :        
 *---------------------------------------------------------------------------*/
void fn_vSaveStructuresOfAFamily(struct tdstFamilyList_ *_p_stFamily,char* _szAnimationBankName);
 
/*-----------------------------------------------------------------------------
 *  Description : fn_vWriteFamilyBinaryBloc : Generic write family function
 *-----------------------------------------------------------------------------
 *  Input :  _szFileName : File name
 *			 _ulFamilyId : Id of the family (globally generated)
 *			_p_stFamily : Pointer to the family to write
 *  Output :        
 *---------------------------------------------------------------------------*/
void fn_vWriteFamilyBinaryBloc(char* _szFileName,unsigned long _ulFamilyId,struct tdstFamilyList_ *_p_stFamily);
 
#ifdef  __cplusplus
}/* extern "C" */
#endif
 
 
#endif /* __LOADFML_H__ */
