579 lines
23 KiB
C
579 lines
23 KiB
C
/*=========================================================================
|
|
* StdGame.h : StdGame's functions
|
|
*
|
|
*
|
|
* StdGame MUST BE REPLACE BY THE HEADER FILENAME
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date 01/10/96
|
|
* Revision date
|
|
*
|
|
* That file needs to be compatible for all platforms.
|
|
*
|
|
* (c) Ubi Studios 1996
|
|
*=======================================================================*/
|
|
|
|
#if !defined(__StdGame_H__)
|
|
#define __StdGame_H__
|
|
|
|
/******************************************/
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif /* _MSC_VER >= 1000 */
|
|
/******************************************/
|
|
|
|
#include "GAM/Header.h"
|
|
|
|
#undef EXTERN
|
|
#undef extern
|
|
#if !defined(D_StdGame_VariableDefine)
|
|
#define EXTERN extern
|
|
#else
|
|
#define EXTERN
|
|
#endif /* D_StdGame_VariableDefine */
|
|
|
|
/******************************************/
|
|
#define GAM_C_DesactivateAtAll 0x01
|
|
#define GAM_C_Activable 0x02
|
|
#define GAM_C_Active 0x04
|
|
#define GAM_C_AllSecondPassDone 0x08
|
|
/******************************************/
|
|
#define GAM_C_Always 0x10
|
|
#define GAM_C_UselessCulling 0x20
|
|
#define GAM_C_AlwaysActive 0x40
|
|
#define GAM_C_TooFar 0x80
|
|
/******************************************/
|
|
#define GAM_C_SavedMiscFlags (GAM_C_DesactivateAtAll|GAM_C_Activable|GAM_C_Active)
|
|
|
|
/**************************************************************************************************************
|
|
|
|
GAM_C_DesactivateAtAll | GAM_C_Activable | Means
|
|
------------------------|-----------------------|-------------------------
|
|
0 | 0 | desactivated by AI
|
|
------------------------|-----------------------|-------------------------
|
|
0 | 1 | activable (active if in an active sector)
|
|
------------------------|-----------------------|-------------------------
|
|
1 | 0 | definitively dead (dead and init : NeverBackWhenTaken)
|
|
------------------------|-----------------------|-------------------------
|
|
1 | 1 | dead (dead and init : PlayerDead or always or GoOutOfZone)
|
|
|
|
*************************************************************************************************************/
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C"
|
|
{
|
|
#endif /* __cplusplus */
|
|
|
|
/********************************************************************************/
|
|
struct tdstStandardGame_
|
|
{
|
|
/*
|
|
* type of the object this structure describes
|
|
*/
|
|
tdObjectType otObjectFamilyType; /**** -1 (C_InvalidObjectType) is a invalid type ****/
|
|
#ifndef U64
|
|
tdObjectType otObjectModelType; /**** -1 (C_InvalidObjectType) is a invalid type ****/
|
|
#endif
|
|
tdObjectType otObjectPersonalType; /**** (if > C_AlwaysObjectType) is a always object ****/
|
|
|
|
/* super-object father pointer */
|
|
HIE_tdxHandleToSuperObject h_SuperObject;
|
|
|
|
/*
|
|
* how is the object activation performed ?
|
|
*/
|
|
enum tdeObjectinitInit_ eInitFlagWhenOutOfZone;
|
|
enum tdeObjectinitInit_ eInitFlagWhenDeadOrTaken;
|
|
|
|
/* last modification's trame number */
|
|
unsigned long ulLastTrame;
|
|
|
|
/* Capabilities of the object to follow a path in the WPgraph */
|
|
unsigned long ubf32Capabilities;
|
|
|
|
unsigned char ucTractionFactor;
|
|
|
|
/* number of hit points an object have at a given time */
|
|
unsigned char ucHitPoints/*,ucHitPointsInit*/;
|
|
unsigned char ucHitPointsMax/*,ucHitPointsMaxInit*/;
|
|
unsigned char ucHitPointsMaxMax;
|
|
|
|
unsigned long ulCustomBits;
|
|
|
|
/* Special management for platforms */
|
|
unsigned char ucPlatFormType;
|
|
|
|
/* used to know if the object is dead, taken ..., and must be not reappear if the player dead */
|
|
/* is the object to be handled at all by the game engine ? is this object to be handled by the game engine at the current time ? */
|
|
unsigned char ucMiscFlags; /* DesactivateAtAll + Activable + Active + AllSecondPassDone*/
|
|
|
|
/* ANNECY MT - 08/07/98 {*/
|
|
unsigned char ucTransparencyZoneMin;
|
|
unsigned char ucTransparencyZoneMax;
|
|
/* END ANNECY MT }*/
|
|
|
|
/* ANNECY AV {*/
|
|
/* Instead of using SAI functions to manage intialisation, which are memory eater, we save our variables ourself*/
|
|
/* This uses 8 bytes while SAI uses 96 bytes : we save 17 Ko for 200 actors !*/
|
|
unsigned long ulSaveCustomBits;
|
|
|
|
unsigned char ucSaveHitPoints;
|
|
unsigned char ucSaveHitPointsMax;
|
|
unsigned char ucSaveMiscFlags;
|
|
/* END ANNECY AV }*/
|
|
|
|
/* ANNECY MT - 22/10/98 {*/
|
|
unsigned char ucTooFarLimit;
|
|
/* END ANNECY MT }*/
|
|
|
|
#if defined(ACTIVE_EDITOR)
|
|
unsigned char bIsLoadedInFix;
|
|
unsigned char bIsInAllSubMaps;
|
|
#endif /* ACTIVE_EDITOR */
|
|
};
|
|
|
|
/***********************/
|
|
/**** Handle define ****/
|
|
/***********************/
|
|
typedef struct tdstStandardGame_ * MS_tdxHandleToStandardGame;
|
|
|
|
/* ANNECY AV DEMO {*/
|
|
#if !defined(U64) && !defined(SCR2BIN)
|
|
#include "Gam/Specif/Demos.h"
|
|
#endif
|
|
/* END ANNECY AV }*/
|
|
|
|
/**** StdGame scripts ****/
|
|
#define C_SectionStdGameDescription "StandardGame"
|
|
#define C_EntryStdGameType "Type"
|
|
#define C_EntryStdGameHitPointInit "HitPointsInit"
|
|
#define C_EntryStdGameHitPoint "HitPoints"
|
|
#define C_EntryStdGameHitPointMaxInit "HitPointsMaxInit"
|
|
#define C_EntryStdGameHitPointMax "HitPointsMax"
|
|
#define C_EntryStdGameHitPointMaxMax "HitPointsMaxMax"
|
|
#define C_EntryStdGameIsActivable "IsActivable"
|
|
#define C_EntryStdGameIsDesactivableAtAll "IsDesactivableAtAll"
|
|
#define C_EntryStdInitFlag "InitFlags"
|
|
/*#define C_EntryStdSpecialPositionFlag "SpecialPositionFlag"*/
|
|
#define C_ValueStdInitFlagNeverBack "NeverBack"
|
|
#define C_ValueStdInitFlagAlways "Always"
|
|
#define C_ValueStdInitFlagGoOutOfZone "WhenGoOutOfZone"
|
|
#define C_ValueStdInitFlagPlayerDead "WhenPlayerDead"
|
|
#define C_ValueStdInitFlagMapLoaded "WhenMapLoaded"
|
|
#define C_ValueStdInitFlagSavedGameLoaded "WhenSavedGameLoaded"
|
|
#define C_EntryStdGamePlatFormType "PlatFormType"
|
|
/*ANNECY BBB 20/11/97 {*/
|
|
#define C_EntryStdGameCustomBits "CustomBits"
|
|
#define C_EntryStdGameCustomBitsInit "CustomBitsInit"
|
|
/*ENDANNECY BBB 20/11/97 }*/
|
|
/* JO 18/11/97*/
|
|
#define C_EntryStdGameLinkedToSectorFlag "LinkedToSector"
|
|
|
|
#define C_EntryStdGameCapabilities "Capabilities"
|
|
#define C_EntryStdGameTractionFactor "TractionFactor"
|
|
|
|
/* ANNECY MT - 08/07/98 {*/
|
|
#define C_EntryStdGameTransparencyZone "TransparencyZone"
|
|
/* END ANNECY MT }*/
|
|
|
|
/* ANNECY MT - 22/10/98 {*/
|
|
#define C_EntryStdGameTooFarLimit "TooFarLimit"
|
|
/* END ANNECY MT }*/
|
|
|
|
/*
|
|
* Custom Bit Flag values
|
|
*/
|
|
#define GAM_C_CustBitUnseenFrozenAnimPlayer 0x00000001 /* 1*/
|
|
#define GAM_C_CustBitNeedModuleMatrices 0x00000002 /* 2*/
|
|
#define GAM_C_CustBitMovable 0x00000004 /* 3*/
|
|
#define GAM_C_CustBitProjectile 0x00000008 /* 4*/
|
|
#define GAM_C_CustBitRayHit 0x00000010 /* 5*/
|
|
#define GAM_C_CustBitSightable 0x00000020 /* 6*/
|
|
#define GAM_C_CustBitCannotCrushPrincipalActor 0x00000040 /* 7*/
|
|
#define GAM_C_CustBitCollectable 0x00000080 /* 8*/
|
|
#define GAM_C_CustBitActorHasShadow 0x00000100 /* 9*/
|
|
#define GAM_C_CustBitShadowOnMe 0x00000200 /* 10*/
|
|
#define GAM_C_CustBitPrunable 0x00000400 /* 11*/
|
|
#define GAM_C_CustBitOutOfVisibility 0x00000800 /* 12*/
|
|
#define GAM_C_CustBitUnseenFrozen 0x00001000 /* 13*/
|
|
#define GAM_C_CustBitNoAnimPlayer 0x00002000 /* 14*/
|
|
#define GAM_C_CustBitFightable 0x00004000 /* 15*/
|
|
#define GAM_C_CustBitNoMechanic 0x00008000 /* 16*/
|
|
#define GAM_C_CustBitNoAI 0x00010000 /* 17*/
|
|
#define GAM_C_CustBitDestroyWhenAnimEnded 0x00020000 /* 18*/
|
|
#define GAM_C_CustBitNoAnimPlayerWhenTooFar 0x00040000 /* 19*/
|
|
#define GAM_C_CustBitNoAIWhenTooFar 0x00080000 /* 20*/
|
|
#define GAM_C_CustBitUnfreezable 0x00100000 /* 21*/
|
|
#define GAM_C_CustBitUsesTransparencyZone 0x00200000 /* 22*/
|
|
#define GAM_C_CustBitNoMecaWhenTooFar 0x00400000 /* 23*/
|
|
#define GAM_C_CustBitSoundWhenInvisible 0x00800000 /* 24*/
|
|
#define GAM_C_CustBitProtection 0x01000000 /* 25*/
|
|
#define GAM_C_CustBitCameraHit 0x02000000 /* 26*/
|
|
#define GAM_C_CustBit27 0x04000000 /* 27*/
|
|
#define GAM_C_CustBitAIUser1 0x08000000 /* 28*/
|
|
#define GAM_C_CustBitAIUser2 0x10000000 /* 29*/
|
|
#define GAM_C_CustBitAIUser3 0x20000000 /* 30*/
|
|
#define GAM_C_CustBitAIUser4 0x40000000 /* 31*/
|
|
#define GAM_C_CustBitRayman 0x80000000 /* 32*/
|
|
|
|
/* those bits cannot be modified, because they are for internal use only */
|
|
#define C_ulUnchangableCustomBits ( GAM_C_CustBitOutOfVisibility | GAM_C_CustBitRayman | GAM_C_CustBitProtection )
|
|
/* JO 04/11/97*/
|
|
/*
|
|
* PlatForm Type Values
|
|
*/
|
|
#define C_ucPlatFormType_None 0
|
|
#define C_ucPlatFormType_StandardPlatForm 1
|
|
|
|
/*******************************/
|
|
/**** Base functions define ****/
|
|
/*******************************/
|
|
#if !defined(U64)
|
|
extern CPA_EXPORT SCR_tde_Anl_ReturnValue fn_eStdGameScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction);
|
|
#endif /* U64 */
|
|
|
|
extern CPA_EXPORT unsigned long fn_ulStdGameSizeOf();
|
|
extern CPA_EXPORT void fn_vStdGameAlloc(struct tdstEngineObject_ *p_stObject);
|
|
extern CPA_EXPORT MS_tdxHandleToStandardGame fn_h_StdGameRealAlloc();
|
|
extern CPA_EXPORT void fn_vStdGameFree(struct tdstEngineObject_ *p_stObject);
|
|
extern CPA_EXPORT void fn_vStdGameInit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit);
|
|
extern CPA_EXPORT void fn_vStdGameDesinit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit);
|
|
extern CPA_EXPORT void fn_vStdGameCopyClone(struct tdstEngineObject_ * _p_stObjectDest,struct tdstEngineObject_ * _p_stObjectSrc);
|
|
|
|
/********************************/
|
|
/**** Acces functions define ****/
|
|
/********************************/
|
|
|
|
INLINE
|
|
tdObjectType fn_otStandardGameGetFamilyType (MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->otObjectFamilyType); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetFamilyType (MS_tdxHandleToStandardGame h_StdGame,tdObjectType otFamilyType)
|
|
{ h_StdGame->otObjectFamilyType=otFamilyType; }
|
|
|
|
#ifndef U64
|
|
INLINE
|
|
tdObjectType fn_otStandardGameGetModelType(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->otObjectModelType); }
|
|
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetModelType(MS_tdxHandleToStandardGame h_StdGame,tdObjectType otModelType)
|
|
{ h_StdGame->otObjectModelType=otModelType; }
|
|
#endif
|
|
|
|
INLINE
|
|
tdObjectType fn_otStandardGameGetPersonalType(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->otObjectPersonalType); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetPersonalType(MS_tdxHandleToStandardGame h_StdGame,tdObjectType otPersonalType)
|
|
{ h_StdGame->otObjectPersonalType=otPersonalType; }
|
|
|
|
INLINE
|
|
unsigned long fn_ulStandardGameGetLastTrame(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->ulLastTrame); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetLastTrame(MS_tdxHandleToStandardGame h_StdGame,unsigned long ulLastTrame)
|
|
{ h_StdGame->ulLastTrame=ulLastTrame; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetHitPoints(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->ucHitPoints); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetHitPoints(MS_tdxHandleToStandardGame h_StdGame,unsigned char ucHitPoints)
|
|
{ h_StdGame->ucHitPoints=ucHitPoints; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetHitPointsMax(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->ucHitPointsMax); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetHitPointsInit(MS_tdxHandleToStandardGame h_StdGame,unsigned char ucHitPointsInit)
|
|
{ h_StdGame -> ucSaveHitPoints = ucHitPointsInit ; }
|
|
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetHitPointsMax(MS_tdxHandleToStandardGame h_StdGame,unsigned char ucHitPoints)
|
|
{ h_StdGame->ucHitPointsMax=ucHitPoints; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetHitPointsMaxMax(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->ucHitPointsMaxMax); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetHitPointsMaxMax(MS_tdxHandleToStandardGame h_StdGame,unsigned char ucHitPoints)
|
|
{ h_StdGame->ucHitPointsMaxMax=ucHitPoints; }
|
|
|
|
INLINE
|
|
unsigned char fn_bf1StandardGameGetIsDesactivateAtAll(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_DesactivateAtAll ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetIsDesactivateAtAll(MS_tdxHandleToStandardGame h_StdGame,unsigned char bf1IsDesactivateAtAll)
|
|
{
|
|
/* ANNECY AV DEMO {*/
|
|
#if !defined(U64) && !defined(SCR2BIN) && !defined(RETAIL)
|
|
if(g_DEMO_KeybTest == DEMO_RECORD)
|
|
{
|
|
if (h_StdGame->h_SuperObject &&
|
|
((bf1IsDesactivateAtAll == TRUE && (h_StdGame->ucMiscFlags & GAM_C_DesactivateAtAll) == 0) ||
|
|
(bf1IsDesactivateAtAll == FALSE && (h_StdGame->ucMiscFlags & GAM_C_DesactivateAtAll) != 0)))
|
|
{
|
|
DEMO_fn_vTestAndSaveActivationDesactivation (h_StdGame->h_SuperObject , ! bf1IsDesactivateAtAll);
|
|
}
|
|
}
|
|
#endif
|
|
/* END ANNECY AV }*/
|
|
if(bf1IsDesactivateAtAll)
|
|
h_StdGame->ucMiscFlags |= GAM_C_DesactivateAtAll;
|
|
else
|
|
h_StdGame->ucMiscFlags &= ~GAM_C_DesactivateAtAll;
|
|
}
|
|
|
|
INLINE
|
|
unsigned char fn_bf1StandardGameGetIsActivable(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_Activable ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetIsActivable(MS_tdxHandleToStandardGame h_StdGame,unsigned char bf1IsActivable)
|
|
{
|
|
/* ANNECY AV DEMO {*/
|
|
#if !defined(U64) && !defined(SCR2BIN) && !defined(RETAIL)
|
|
if (g_DEMO_KeybTest == DEMO_RECORD)
|
|
{
|
|
if (h_StdGame->h_SuperObject &&
|
|
((bf1IsActivable == TRUE && (h_StdGame->ucMiscFlags & GAM_C_Activable) == 0) ||
|
|
(bf1IsActivable == FALSE && (h_StdGame->ucMiscFlags & GAM_C_Activable) != 0)))
|
|
{
|
|
DEMO_fn_vTestAndSaveActivationDesactivation (h_StdGame->h_SuperObject , bf1IsActivable);
|
|
}
|
|
}
|
|
#endif
|
|
/* END ANNECY AV }*/
|
|
if(bf1IsActivable)
|
|
h_StdGame->ucMiscFlags |= GAM_C_Activable;
|
|
else
|
|
h_StdGame->ucMiscFlags &= ~GAM_C_Activable;
|
|
}
|
|
|
|
INLINE
|
|
unsigned char fn_bf1StandardGameGetIsActive(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_Active ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetIsActive(MS_tdxHandleToStandardGame h_StdGame,unsigned char bf1IsActive)
|
|
{
|
|
/* ANNECY AV DEMO {*/
|
|
#if !defined(U64) && !defined(SCR2BIN) && !defined(RETAIL)
|
|
if(g_DEMO_KeybTest == DEMO_RECORD)
|
|
{
|
|
if (h_StdGame->h_SuperObject &&
|
|
((bf1IsActive == TRUE && (h_StdGame->ucMiscFlags & GAM_C_Active) == 0) ||
|
|
(bf1IsActive == FALSE && (h_StdGame->ucMiscFlags & GAM_C_Active) != 0)))
|
|
{
|
|
DEMO_fn_vTestAndSaveActivationDesactivation (h_StdGame->h_SuperObject , bf1IsActive);
|
|
}
|
|
}
|
|
#endif
|
|
/* END ANNECY AV }*/
|
|
if(bf1IsActive)
|
|
h_StdGame->ucMiscFlags |= GAM_C_Active;
|
|
else
|
|
h_StdGame->ucMiscFlags &= ~GAM_C_Active;
|
|
}
|
|
|
|
INLINE
|
|
enum tdeObjectinitInit_ fn_eStandardGameGetInitFlagWhenOutOfZone(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->eInitFlagWhenOutOfZone); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetInitFlagWhenOutOfZone(MS_tdxHandleToStandardGame h_StdGame,enum tdeObjectinitInit_ eInitFlagWhenOutOfZone)
|
|
{ h_StdGame->eInitFlagWhenOutOfZone=eInitFlagWhenOutOfZone; }
|
|
|
|
INLINE
|
|
enum tdeObjectinitInit_ fn_eStandardGameGetInitFlagWhenDeadOrTaken(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(h_StdGame->eInitFlagWhenDeadOrTaken); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetInitFlagWhenDeadOrTaken(MS_tdxHandleToStandardGame h_StdGame,enum tdeObjectinitInit_ eInitFlagWhenDeadOrTaken)
|
|
{ h_StdGame->eInitFlagWhenDeadOrTaken=eInitFlagWhenDeadOrTaken; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetPlatFormType(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return h_StdGame->ucPlatFormType; }
|
|
|
|
INLINE
|
|
void fn_ucStandardGameSetPlatFormType(MS_tdxHandleToStandardGame h_StdGame,unsigned char _ucPlatFormType)
|
|
{ h_StdGame->ucPlatFormType = _ucPlatFormType; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetCapabilities(MS_tdxHandleToStandardGame h_StdGame, unsigned long _ubf32Capabilities)
|
|
{ h_StdGame->ubf32Capabilities = _ubf32Capabilities; }
|
|
|
|
INLINE
|
|
unsigned long fn_ulStandardGameGetCapabilities(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return ( h_StdGame->ubf32Capabilities ); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameAddCapabilities(MS_tdxHandleToStandardGame h_StdGame, unsigned long _ubf32Capabilities)
|
|
{ h_StdGame->ubf32Capabilities |= _ubf32Capabilities; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSubCapabilities(MS_tdxHandleToStandardGame h_StdGame, unsigned long _ubf32Capabilities)
|
|
{ h_StdGame->ubf32Capabilities -= (h_StdGame->ubf32Capabilities & _ubf32Capabilities); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetTractionFactor(MS_tdxHandleToStandardGame h_StdGame,unsigned char _ucTractionFactor)
|
|
{ h_StdGame->ucTractionFactor = _ucTractionFactor; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetTractionFactor(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return ( h_StdGame->ucTractionFactor ); }
|
|
|
|
INLINE
|
|
unsigned char fn_bIsAllSecondPassDone(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_AllSecondPassDone ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vAllSecondPassAreDone(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ h_StdGame->ucMiscFlags |= GAM_C_AllSecondPassDone; }
|
|
|
|
INLINE
|
|
unsigned long fn_ulStandardGameGetCustomBits(MS_tdxHandleToStandardGame _hStdGame)
|
|
{ return _hStdGame->ulCustomBits; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetCustomBits(MS_tdxHandleToStandardGame _hStdGame,unsigned long _ulCustomBits)
|
|
{ _hStdGame->ulCustomBits = _ulCustomBits; }
|
|
|
|
/* ANNECY MT - 08/07/98 {*/
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetTransparencyZoneMin(MS_tdxHandleToStandardGame _hStdGame)
|
|
{ return _hStdGame->ucTransparencyZoneMin; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetTransparencyZoneMin(MS_tdxHandleToStandardGame _hStdGame, unsigned char _ucTransparencyZoneMin)
|
|
{ _hStdGame->ucTransparencyZoneMin = _ucTransparencyZoneMin; }
|
|
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetTransparencyZoneMax(MS_tdxHandleToStandardGame _hStdGame)
|
|
{ return _hStdGame->ucTransparencyZoneMax; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetTransparencyZoneMax(MS_tdxHandleToStandardGame _hStdGame, unsigned char _ucTransparencyZoneMax)
|
|
{ _hStdGame->ucTransparencyZoneMax = _ucTransparencyZoneMax; }
|
|
/* END ANNECY MT }*/
|
|
|
|
extern CPA_EXPORT ACP_tdxBool fn_bStandardGameIsAPlatform (HIE_tdxHandleToSuperObject hSupObj);
|
|
extern CPA_EXPORT unsigned long fn_ulStandardGameGetCustomBitsSO (HIE_tdxHandleToSuperObject hSupObj);
|
|
extern CPA_EXPORT void fn_vStandardGameSetCustomBitsSO(HIE_tdxHandleToSuperObject hSupObj,unsigned long ulCustomBits);
|
|
|
|
extern CPA_EXPORT HIE_tdxHandleToSuperObject fn_h_StandardGameGetSuperObject(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_vStandardGameSetSuperObject(MS_tdxHandleToStandardGame h_StdGame,HIE_tdxHandleToSuperObject h_SuperObject);
|
|
|
|
extern CPA_EXPORT ACP_tdxBool fn_bStandardGameGetLinkToSectorFlag(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_bStandardGameSetLinkToSectorFlag(MS_tdxHandleToStandardGame h_StdGame,ACP_tdxBool _bLinkValue);
|
|
|
|
extern CPA_EXPORT unsigned char fn_ucStandardGameGetTransparencyZoneMinSO(HIE_tdxHandleToSuperObject hSupObj);
|
|
extern CPA_EXPORT unsigned char fn_ucStandardGameGetTransparencyZoneMaxSO(HIE_tdxHandleToSuperObject hSupObj);
|
|
|
|
/* ANNECY MT - 09/10/98 {*/
|
|
INLINE
|
|
void fn_vStandardGameSetAlwaysActive(MS_tdxHandleToStandardGame h_StdGame,ACP_tdxBool _bAlways)
|
|
{ if(_bAlways) h_StdGame->ucMiscFlags |= GAM_C_AlwaysActive; else h_StdGame->ucMiscFlags &= ~GAM_C_AlwaysActive; }
|
|
|
|
INLINE
|
|
unsigned char fn_bStandardGameIsAlwaysActive(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_AlwaysActive ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetAlways(MS_tdxHandleToStandardGame h_StdGame,ACP_tdxBool _bAlways)
|
|
{ if(_bAlways) h_StdGame->ucMiscFlags |= GAM_C_Always; else h_StdGame->ucMiscFlags &= ~GAM_C_Always; }
|
|
|
|
INLINE
|
|
unsigned char fn_bStandardGameIsAlways(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_Always ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetUselessCulling(MS_tdxHandleToStandardGame h_StdGame,ACP_tdxBool _bUseless)
|
|
{ if(_bUseless) h_StdGame->ucMiscFlags |= GAM_C_UselessCulling; else h_StdGame->ucMiscFlags &= ~GAM_C_UselessCulling; }
|
|
|
|
INLINE
|
|
unsigned char fn_bStandardGameIsUselessCulling(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_UselessCulling ? TRUE : FALSE); }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetTooFar(MS_tdxHandleToStandardGame h_StdGame,ACP_tdxBool _bTooFar)
|
|
{ if(_bTooFar) h_StdGame->ucMiscFlags |= GAM_C_TooFar; else h_StdGame->ucMiscFlags &= ~GAM_C_TooFar; }
|
|
|
|
INLINE
|
|
unsigned char fn_bStandardGameIsTooFar(MS_tdxHandleToStandardGame h_StdGame)
|
|
{ return(unsigned char)(h_StdGame->ucMiscFlags & GAM_C_TooFar ? TRUE : FALSE); }
|
|
/* END ANNECY MT }*/
|
|
|
|
/* ANNECY MT - 22/10/98 {*/
|
|
INLINE
|
|
unsigned char fn_ucStandardGameGetTooFarLimit(MS_tdxHandleToStandardGame _hStdGame)
|
|
{ return _hStdGame->ucTooFarLimit; }
|
|
|
|
INLINE
|
|
void fn_vStandardGameSetTooFarLimit(MS_tdxHandleToStandardGame _hStdGame, unsigned char _ucTooFarLimit)
|
|
{ _hStdGame->ucTooFarLimit = _ucTooFarLimit; }
|
|
|
|
extern CPA_EXPORT unsigned char fn_ucStandardGameGetTooFarLimitSO(HIE_tdxHandleToSuperObject hSupObj);
|
|
/* END ANNECY MT }*/
|
|
|
|
|
|
/**********************************/
|
|
/**** Special functions define ****/
|
|
/**********************************/
|
|
|
|
|
|
/**********************/
|
|
/**** SAI function ****/
|
|
/**********************/
|
|
extern CPA_EXPORT void fn_vStdGameInitValueSAI(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_vStdGameSavedValueSAI(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_vStdGameFreeInitValueSAI(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_vSetHitPointsToInitValue(struct tdstEngineObject_ *_p_stObject);
|
|
extern CPA_EXPORT void fn_vSetHitPointsMaxToInitValue(struct tdstEngineObject_ *_p_stObject);
|
|
/*ANNECY BBB 20/11/97 {*/
|
|
extern CPA_EXPORT void fn_vSetCustomBitsToInitValue(struct tdstEngineObject_ *_p_stObject);
|
|
/*ENDANNECY BBB 20/11/97 }*/
|
|
|
|
/*************************************/
|
|
/**** Access functions for Editor ****/
|
|
/*************************************/
|
|
#if defined(ACTIVE_EDITOR)
|
|
extern CPA_EXPORT unsigned char *fn_p_ucStdGameGetHitPointsInit(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT unsigned char *fn_p_ucStdGameGetHitPointsMaxInit(MS_tdxHandleToStandardGame h_StdGame);
|
|
extern CPA_EXPORT void fn_vStdGameSetLoadedInFix(MS_tdxHandleToStandardGame h_StdGame,unsigned char bValue);
|
|
extern CPA_EXPORT unsigned char fn_bStdGameIsLoadedInFix(MS_tdxHandleToStandardGame h_StdGame);
|
|
/* ANNECY MT - 19/11/98 {*/
|
|
extern CPA_EXPORT void fn_vStdGameSetInAllSubMaps(MS_tdxHandleToStandardGame h_StdGame,unsigned char bValue);
|
|
extern CPA_EXPORT unsigned char fn_bStdGameIsInAllSubMaps(MS_tdxHandleToStandardGame h_StdGame);
|
|
/* END ANNECY MT }*/
|
|
extern CPA_EXPORT unsigned long *fn_p_ulStdGameGetCustomBitsInit(MS_tdxHandleToStandardGame _hStdGame);
|
|
#endif /* ACTIVE_EDITOR */
|
|
|
|
/*NZO 25/09/97*/
|
|
#ifdef BIN_SaveBin
|
|
extern CPA_EXPORT unsigned long StdGame_fn_ulWriteBinaryBloc(unsigned long _ulStructAddress, char* _p_cDestBuffer);
|
|
#endif
|
|
/*NZO 25/09/97*/
|
|
#ifdef BIN_LoadBin
|
|
extern CPA_EXPORT void StdGame_fn_vReadBinaryBloc(unsigned long _ulStructAddress, char* _p_cDestBuffer);
|
|
#endif
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __StdGame_H__ */
|
|
|