/*=========================================================================
* GameScript.h : Contain all section and section entry of all Game script
* This is a part of the Game project.
*
* Version                      1.0
* Creation date        09/08/96
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1996
*=======================================================================*/
 
#if !defined(__GameScpt_h__)
#define __GameScpt_h__
 
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
 
#include "GAM/Header.h"
 
#define GAM_C_FixScriptPriority   1
#define GAM_C_LevelScriptPriority 2
#define GAM_C_FixDynamicScriptPriority   11
#define GAM_C_LevelDynamicScriptPriority 12
 
/************************************************************/
/**** IMPORTANT :                                        ****/
/****    All this sections must be registred in          ****/
/****    fn_vRegisterAllScriptSections in Basic.c file   ****/
/************************************************************/
 
/**** Directories script ****/
#define C_Section_DirectoriesDescription          "DirectoriesDescription"
 
/**** Memory script ****/
#define C_Section_MemoryDescription               "NewMemoryDescription"
#define C_Section_BinaryMemoryDescription         "NewBinaryMemoryDescription"
#define C_Section_BinaryMemoryDescriptionPass1    "NewBinaryMemoryDescriptionPass1"
#define C_Section_BinaryMemoryDescriptionPass2    "NewBinaryMemoryDescriptionPass2"
 
#define C_Entry_GAM_FixMemory                     "GameFixMemorySize"
#define C_Entry_GAM_LevelMemory                   "GameLevelMemorySize"
 
#define C_Entry_MenuMemory                        "MenuMemorySize"
#define C_Entry_FontMemory                        "FontMemorySize"
#define C_Entry_SAIFixMemory                      "SAIFixMemorySize"
#define C_Entry_SAILevelMemory                    "SAIMemorySize"
#define C_Entry_AIFixMemory                       "AIFixMemory"
#define C_Entry_AIMemory                          "AIMemory"
#define C_Entry_TMPFixMemory                      "TMPFixMemory"
#define C_Entry_TMPLevelMemory                    "TMPLevelMemory"
#define C_Entry_ACPTextMemory                     "ACPTextMemory"
#define C_Entry_ACPFixMemory                      "ACPFixMemory"
#define C_Entry_ACPLevelMemory                    "ACPMemory"
#define C_Entry_POSMemory						                   "PositionMemorySize"
#define C_Entry_ScriptMemory						                "ScriptMemorySize"
#define C_Entry_IPTMemory						  "IPTMemorySize"	
/* MR0912*/
#define C_Entry_LipsSynchMemory                   "LipsSynchMemory"
 
 
/* For BIN*/
#define C_Entry_UseMemorySnapshot					"UseMemorySnapshot"
 
/**** Input devices manager ****/
#define C_Section_InputDeviceManagerDescription   "InputDeviceManagerDescription"
#define C_Entry_InitInputDeviceManager            "InitInputDeviceManager"
#define C_Entry_AddInputDeviceFile                "AddInputDeviceFile"
#define C_Entry_Computable			              "Computetable"
 
/**** Random manager ****/
#define C_Section_RandomManagerDescription        "RandomManagerDescription"
#define C_Entry_InitRandomManager                 "InitRandomManager"
 
/**** Game Options ****/
#define C_Section_GameOptionsFile                 "GameOptionsFile"
#define C_Entry_GameOptionsDefault                "DefaultFile"
#define C_Entry_GameOptionsCurrent                "CurrentFile"
/*#define C_Entry_CreditsLevel                      "CreditsLevelName"*/
 
#define C_Entry_FrameSynchro					  "FrameSynchro"
 
#define C_Section_BigFile                         "BigFiles"
#define C_Entry_BigFileVignettes                  "Vignettes"
#define C_Entry_BigFileTextures                   "Textures"
 
/**** Anim Stacks ****/
#define C_Section_Animstacks					"AnimStacks"
#define	C_Entry_A3dGeneral							"A3dGeneral"	
#define	C_Entry_Vertexes							"Vertexes"
#define	C_Entry_Quaternions							"Quaternions"
#define	C_Entry_Hierarchies							"Hierarchies"
#define	C_Entry_NTTO								"NTTO"
#define	C_Entry_OnlyFrames							"OnlyFrames"
#define	C_Entry_Channels							"Channels"
#define	C_Entry_Frames								"Frames"
#define	C_Entry_FramesKF							"FramesKF"
#define	C_Entry_KeyFrames							"KeyFrames"
#define	C_Entry_Events								"Events"
#define C_Entry_MorphData							"MorphData"
 
/******************/
/**** Filename ****/
/******************/
#ifdef ACTIVE_EDITOR
#define C_GameMemoryFile		"GameData\\Game.mem"
#define C_GameScriptFile		"GameData\\Game.dsc"
#define C_GameVignetteFile		"GameData\\Game.pgb"
#endif /* ACTIVE_EDITOR*/
 
#define C_DefaultDirGameData	"GameData"
#define C_GameMemoryFileName	"Game.mem"
#define C_GameScriptFileName	"Game.dsc"
#define C_GameVignetteFileName	"Game.pgb"
 
#define C_GameFixScriptFile "Game.Fix"
/*#define C_WorldScriptFile "World.dsc"*/
 
 
#define C_ScriptCharacterDirectory "Charact"
#define C_MemoryDescriptionSuffixe "mem"   /**** Suffixe for memories filenames ****/
#define C_ScriptDescriptionSuffixe "dsc"   /**** Suffixe for descriptions filenames ****/
#define C_ScriptCharacterSuffixe "car"   /**** Suffixe for characters filenames ****/
#define C_ScriptLevelSuffixe "lvl" /**** Suffixe for level filenames ****/
#define C_ScriptAlwaysSuffixe "alw" /**** Suffixe for always filenames ****/
#define C_MecaLevelSuffixe   "ame"
/*#define C_ScriptPgbSuffixe "pgb"*/
 
/*****************************************************************************************/
/**** Below : macros used to read script.                                             ****/
/****         to use them, the callback function must have there parameters as next : ****/
/****             FILE *p_stHandle,char *szAction,char *d_szPars[],char cIsTitle      ****/
/*****************************************************************************************/
 
#define C_GrandChildSection    ( 2)
#define C_ChildSection         ( 1)
#define C_ThisSection          ( 0)
#define C_ParentSection        (-1)
#define C_GrandParentSection   (-2)
 
#define C_GrandChildContext    ( 2)
#define C_ChildContext         ( 1)
#define C_ThisContext          ( 0)
#define C_ParentContext        (-1)
#define C_GrandParentContext   (-2)
 
#define M_IsTitle         (_eAction==SCR_EA_Anl_BeginSection)
#define M_IsEnd           (_eAction==SCR_EA_Anl_EndSection)
#define M_IsBegSubSection (_eAction==SCR_EA_Anl_BeginSubSection)
#define M_IsEndSubSection (_eAction==SCR_EA_Anl_EndSubSection)
#define M_IsEntry         (_eAction==SCR_EA_Anl_Entry)
 
#define M_ActionIs(szActionAsked) (!strcmpi(_p_szName,szActionAsked))
 
#define M_CheckScriptParamNumber(ulNumber) \
{ \
 if (SCR_fn_uc_RdL0_GetNumberOfParameters(_ap_szParams)!=ulNumber) \
  M_GameFatalError(E_uwGameScriptBadNumberOfArg); \
}
 
#ifndef _FIRE_DEADCODE_U64_
EXTERN unsigned long g_SCR_a9MemTable[9]
#if defined(D_GameGlobals)
={0,0,0,0,0,0,0,0,0}
#endif /* D_GameGlobals */
;
#endif /* _FIRE_DEADCODE_U64_ */
 
 
 
#endif /* __GameScpt_h__ */
