Removed more unused code.
This commit is contained in:
parent
cf29827c40
commit
ab5897ec78
8 changed files with 2 additions and 1289 deletions
|
@ -619,73 +619,6 @@ void AssignRunTimeBehaviours(STRATEGYBLOCK* sbptr)
|
|||
InitPlayer(sbptr, I_BehaviourMarinePlayer);
|
||||
}
|
||||
|
||||
#if Saturn || PSX
|
||||
|
||||
int SetUpDoor(int shape1, int shape2, MODULE* mptr)
|
||||
{
|
||||
DISPLAYBLOCK* dptr = mptr->m_dptr;
|
||||
MODULEMAPBLOCK* momptr = mptr->m_mapptr;
|
||||
MORPHCTRL* morphctrl;
|
||||
MORPHHEADER* morphheader;
|
||||
MORPHFRAME* morphframe;
|
||||
STRATEGYBLOCK* sbptr;
|
||||
|
||||
GLOBALASSERT(dptr);
|
||||
GLOBALASSERT(momptr);
|
||||
|
||||
sbptr = AttachNewStratBlock(mptr, momptr, dptr);
|
||||
|
||||
// this code causes a memory leak
|
||||
|
||||
morphctrl = (MORPHCTRL*)AllocateMem(sizeof(MORPHCTRL));
|
||||
if(!morphctrl)
|
||||
{
|
||||
memoryInitialisationFailure = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
morphheader = (MORPHHEADER*)AllocateMem(sizeof(MORPHHEADER));
|
||||
if(!morphheader)
|
||||
{
|
||||
memoryInitialisationFailure = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
morphframe = (MORPHFRAME*)AllocateMem(sizeof(MORPHFRAME));
|
||||
if(!morphframe)
|
||||
{
|
||||
memoryInitialisationFailure = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if Saturn
|
||||
morphframe->mf_shape1 = shape2;
|
||||
morphframe->mf_shape2 = shape1;
|
||||
#else
|
||||
morphframe->mf_shape1 = shape1;
|
||||
morphframe->mf_shape2 = shape2;
|
||||
#endif
|
||||
|
||||
dptr->ObShapeData = GetShapeData(shape1);
|
||||
|
||||
morphheader->mph_numframes = 1;
|
||||
morphheader->mph_maxframes = ONE_FIXED;
|
||||
morphheader->mph_frames = morphframe;
|
||||
|
||||
morphctrl->ObMorphCurrFrame = 0;
|
||||
morphctrl->ObMorphFlags = 0;
|
||||
morphctrl->ObMorphSpeed = 0;
|
||||
morphctrl->ObMorphHeader = morphheader;
|
||||
|
||||
EnableBehaviourType(sbptr, I_BehaviourProximityDoor, (void*)morphctrl);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /*SupportSaturn*/
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Use this function to initialise binary loaded objects
|
||||
----------------------------------------------------------------------*/
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#include "equipmnt.h"
|
||||
#endif
|
||||
|
||||
#include "gameflow.h"
|
||||
|
||||
#include "pmove.h"
|
||||
|
||||
|
||||
|
@ -269,8 +267,8 @@ typedef struct player_status
|
|||
int CloakingEffectiveness;
|
||||
|
||||
// John 28/7/97 Game Flow stuff
|
||||
PLAYERMISSION CurrentMission;
|
||||
unsigned long StateChangeObjectFlags;
|
||||
int UNUSED_Enum_CurrentMission;
|
||||
unsigned long UNUSED_StateChangeObjectFlags;
|
||||
|
||||
/* Encumberance */
|
||||
ENCUMBERANCE_STATE Encumberance;
|
||||
|
|
|
@ -1,641 +0,0 @@
|
|||
#include "3dc.h"
|
||||
#include "module.h"
|
||||
#include "inline.h"
|
||||
|
||||
#include "stratdef.h"
|
||||
#include "gamedef.h"
|
||||
#include "bh_types.h"
|
||||
#include "inventry.h"
|
||||
#include "gameplat.h"
|
||||
|
||||
#include "gameflow.h"
|
||||
|
||||
#include "bh_types.h"
|
||||
#include "bh_gener.h"
|
||||
|
||||
#define UseLocalAssert Yes
|
||||
|
||||
#include "ourasert.h"
|
||||
|
||||
extern void ActivateSelfDestructSequence(int seconds);
|
||||
|
||||
GAMEOBJECT GameObjects[] =
|
||||
{
|
||||
GOT_LIFTOVERRIDE1,
|
||||
//0x4b630a49,0xe6d1ca,
|
||||
0,0,
|
||||
|
||||
GOT_LIFTOVERRIDE2,
|
||||
//0xa90f8f50,0x252139,
|
||||
0,0,
|
||||
|
||||
GOT_LIFTOVERRIDE3,
|
||||
//0x32d82514,0x286a42,
|
||||
0,0,
|
||||
|
||||
GOT_LIFTOVERRIDE4,
|
||||
//0xa2befeb4,0xe2e009,
|
||||
0,0,
|
||||
|
||||
GOT_SELFDESTRUCT,
|
||||
//0xf2d0d89c,0x923401,
|
||||
0,0,
|
||||
|
||||
GOT_PREDSHIP1,
|
||||
//0x385fb8b9,0x7e14ad,
|
||||
0,0,
|
||||
|
||||
GOT_PREDSHIP2,
|
||||
0,0,
|
||||
|
||||
/* New stuff for Jules's level: 1/12/97 CDF */
|
||||
|
||||
GOT_FAKESWITCH_IN_GENERATOR,
|
||||
0x5caeb020,0x88620,
|
||||
|
||||
GOT_DATALOG_1,
|
||||
0xbbfbd11a,0x1d34bf,
|
||||
|
||||
GOT_DATALOG_2,
|
||||
0x68045d04,0x69092e,
|
||||
|
||||
GOT_DATALOG_3,
|
||||
0x3d784e97,0x31a9c5,
|
||||
|
||||
GOT_ENDLEVEL_EVENT,
|
||||
0x5655280,0xb5aef1,
|
||||
|
||||
// This has to be last in the list
|
||||
GOT_LASTGAMEOBJECT,
|
||||
0,0
|
||||
|
||||
};
|
||||
|
||||
GAME_STRATBLOCK_LIST_ENTRY GameStratblockList[] = {
|
||||
|
||||
GT_YARD_DOOR_1,
|
||||
{0xd9,0x15,0xd7,0xcc,0xa7,0xf4,0xb6,0x00,},
|
||||
GT_YARD_DOOR_2,
|
||||
{0x01,0x0a,0x0f,0xf5,0x76,0x0b,0x5a,0x00,},
|
||||
GT_YARD_DOOR_3,
|
||||
{0x7b,0x18,0x0f,0xa7,0x14,0xae,0x67,0x00,},
|
||||
GT_YARD_DOOR_4,
|
||||
{0xd7,0x52,0x95,0x48,0xcc,0xf2,0x14,0x00,},
|
||||
|
||||
GT_LAST_TARGET_OBJECT,
|
||||
{0,0,0,0,0,0,0,0,},
|
||||
|
||||
};
|
||||
|
||||
BOOL GameFlowOn = 1;
|
||||
|
||||
static unsigned long MakeFlag (unsigned long num)
|
||||
{
|
||||
return(1<<num);
|
||||
}
|
||||
|
||||
int ChangingLevelGameFlowUpdate (I_AVP_ENVIRONMENTS current, I_AVP_ENVIRONMENTS next)
|
||||
{
|
||||
int retval = 0;
|
||||
|
||||
if (!(AvP.Network == I_No_Network) || !GameFlowOn)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* Hack for safety. I fear change. CDF 1/12/97 */
|
||||
return(0);
|
||||
|
||||
switch (AvP.PlayerType)
|
||||
{
|
||||
case I_Marine:
|
||||
{
|
||||
switch (PlayerStatusPtr->CurrentMission)
|
||||
{
|
||||
case MarineMission_NoneAsYet:
|
||||
{
|
||||
GLOBALASSERT (current == I_Entrance && next == I_Gen1);
|
||||
|
||||
DoStartMissionSequence (MarineMission_DisableLifts);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_DisableLifts;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_Gen1_Gen2) +
|
||||
MakeFlag (LS_Gen3Internal) +
|
||||
MakeFlag (LS_Gen2_Gen3);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_DisableLifts:
|
||||
{
|
||||
GLOBALASSERT ((current == I_Gen1 ||
|
||||
current == I_Gen2 ||
|
||||
current == I_Gen3)
|
||||
&&
|
||||
(next == I_Gen1 ||
|
||||
next == I_Gen2 ||
|
||||
next == I_Gen3)
|
||||
);
|
||||
|
||||
if (next == I_Gen2)
|
||||
{
|
||||
PlayerStatusPtr->securityClearances &= ~MakeFlag (LS_Gen1_Gen2);
|
||||
}
|
||||
|
||||
if (current == I_Gen3 && next == I_Gen1)
|
||||
{
|
||||
DoStartMissionSequence (MarineMission_GoToSP2);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_GoToSP2;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_Gen1_SP2);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_GoToSP2:
|
||||
{
|
||||
GLOBALASSERT (current == I_Gen1 && next == I_Sp2);
|
||||
|
||||
DoStartMissionSequence (MarineMission_LeaveRnDs);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_LeaveRnDs;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_SP2_RnD2) +
|
||||
MakeFlag (LS_RnD2_RnD3) +
|
||||
MakeFlag (LS_Gen1_RnD4) +
|
||||
MakeFlag (LS_RnD3_RnD4);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_LeaveRnDs:
|
||||
{
|
||||
GLOBALASSERT ((current == I_Rnd4 ||
|
||||
current == I_Rnd2 ||
|
||||
current == I_Gen1 ||
|
||||
current == I_Sp2 ||
|
||||
current == I_Rnd3)
|
||||
&&
|
||||
(next == I_Rnd4 ||
|
||||
next == I_Rnd2 ||
|
||||
next == I_Gen1 ||
|
||||
next == I_Sp2 ||
|
||||
next == I_Rnd3)
|
||||
);
|
||||
|
||||
if (current == I_Rnd4 && next == I_Gen1)
|
||||
{
|
||||
DoStartMissionSequence (MarineMission_GoToCMC6);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_GoToCMC6;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_Gen1_CMC6);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_GoToCMC6:
|
||||
{
|
||||
GLOBALASSERT (current == I_Gen1 && next == I_Cmc6);
|
||||
|
||||
DoStartMissionSequence (MarineMission_GoToCMC2);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_GoToCMC2;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_CMC2_CMC4) +
|
||||
MakeFlag (LS_CMC4_CMC6);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_GoToCMC2:
|
||||
{
|
||||
GLOBALASSERT ((current == I_Cmc4 ||
|
||||
current == I_Cmc2 ||
|
||||
current == I_Cmc6)
|
||||
&&
|
||||
(next == I_Cmc4 ||
|
||||
next == I_Cmc2 ||
|
||||
next == I_Cmc6)
|
||||
);
|
||||
|
||||
if (current == I_Cmc4 && next == I_Cmc2)
|
||||
{
|
||||
DoStartMissionSequence (MarineMission_DestructBase);
|
||||
retval = 1;
|
||||
PlayerStatusPtr->CurrentMission = MarineMission_DestructBase;
|
||||
PlayerStatusPtr->securityClearances = MakeFlag (LS_MPS2_MPS4) +
|
||||
MakeFlag (LS_SP3_MPS2) +
|
||||
MakeFlag (LS_Gen1_Medlab) +
|
||||
MakeFlag (LS_Gen1_CMC2) +
|
||||
MakeFlag (LS_Gen1_SP3);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_DestructBase:
|
||||
{
|
||||
if (current == I_Mps4 && next == I_Surface)
|
||||
{
|
||||
DoStartMissionSequence (MarineMission_Won);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_Won:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
{
|
||||
GLOBALASSERT (0 == "Mission not in marine list");
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case I_Predator:
|
||||
{
|
||||
switch (PlayerStatusPtr->CurrentMission)
|
||||
{
|
||||
case PredMission_DestroyComputers:
|
||||
{
|
||||
if (current == I_Cmc4 && next == I_Cmc6)
|
||||
{
|
||||
PlayerStatusPtr->securityClearances =
|
||||
MakeFlag (LS_Gen1_Entrance)+
|
||||
MakeFlag (LS_Gen1_Medlab)+
|
||||
MakeFlag (LS_Gen1_Gen2)+
|
||||
MakeFlag (LS_Gen1_Gen3)+
|
||||
MakeFlag (LS_Gen1_SP3)+
|
||||
MakeFlag (LS_Gen1_CMC6)+
|
||||
MakeFlag (LS_Gen1_CMC2)+
|
||||
MakeFlag (LS_Gen1_RnD4)+
|
||||
MakeFlag (LS_Gen1_SP2)+
|
||||
MakeFlag (LS_Gen2_Gen3)+
|
||||
MakeFlag (LS_CMC2_CMC4)+
|
||||
MakeFlag (LS_CMC4_CMC6)+
|
||||
MakeFlag (LS_SP3_MPS2)+
|
||||
MakeFlag (LS_MPS2_MPS4)+
|
||||
MakeFlag (LS_MPS4_SURFACE)+
|
||||
MakeFlag (LS_SP2_RnD2)+
|
||||
MakeFlag (LS_RnD2_RnD3)+
|
||||
MakeFlag (LS_RnD3_RnD4)+
|
||||
MakeFlag (LS_Gen3Internal)+
|
||||
MakeFlag (LS_MaxLifts);
|
||||
|
||||
}
|
||||
else if (current == I_Cmc6)
|
||||
{
|
||||
DoStartMissionSequence (PredMission_GetShipGen3);
|
||||
PlayerStatusPtr->CurrentMission = PredMission_GetShipGen3;
|
||||
retval = 1;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case PredMission_GetShipGen3:
|
||||
{
|
||||
if (PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_PREDSHIP1))
|
||||
{
|
||||
if (PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_PREDSHIP2))
|
||||
{
|
||||
DoStartMissionSequence (PredMission_KillPredAlien);
|
||||
PlayerStatusPtr->CurrentMission = PredMission_KillPredAlien;
|
||||
retval = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
DoStartMissionSequence (PredMission_GetShipCMC2);
|
||||
PlayerStatusPtr->CurrentMission = PredMission_GetShipCMC2;
|
||||
retval = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case PredMission_GetShipCMC2:
|
||||
{
|
||||
if (PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_PREDSHIP2))
|
||||
{
|
||||
DoStartMissionSequence (PredMission_KillPredAlien);
|
||||
PlayerStatusPtr->CurrentMission = PredMission_KillPredAlien;
|
||||
retval = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case PredMission_KillPredAlien:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
case PredMission_KillQueen:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
case PredMission_ReturnToShip:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
GLOBALASSERT (0 == "Mission not in Predator list");
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case I_Alien:
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
GLOBALASSERT (0 == "Player type is wrong");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(retval);
|
||||
|
||||
}
|
||||
|
||||
void InitGameFlowSystem (struct player_status * ps, INITGAMEFLOWTYPE igft)
|
||||
{
|
||||
if (!GameFlowOn)
|
||||
{
|
||||
ps->securityClearances = 0xfffffff;
|
||||
return;
|
||||
}
|
||||
if (igft == IGFT_NewGame)
|
||||
{
|
||||
switch (AvP.PlayerType)
|
||||
{
|
||||
case I_Marine:
|
||||
{
|
||||
ps->CurrentMission = MarineMission_NoneAsYet;
|
||||
ps->StateChangeObjectFlags = 0;
|
||||
//ps->securityClearances = MakeFlag (LS_Gen1_Entrance);
|
||||
ps->securityClearances = 0;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I_Predator:
|
||||
{
|
||||
ps->CurrentMission = PredMission_DestroyComputers;
|
||||
ps->StateChangeObjectFlags = 0;
|
||||
ps->securityClearances = MakeFlag (LS_CMC4_CMC6);
|
||||
break;
|
||||
}
|
||||
|
||||
case I_Alien:
|
||||
{
|
||||
ps->CurrentMission = AlienMission_DestroyMarines;
|
||||
ps->StateChangeObjectFlags = 0;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static GAMEOBJECT * GetGameObject (const char * id)
|
||||
{
|
||||
GAMEOBJECT * goptr = &GameObjects[0];
|
||||
|
||||
while (goptr->StateChangeObjectNum != GOT_LASTGAMEOBJECT)
|
||||
{
|
||||
int id1, id2;
|
||||
|
||||
id1 = *(int*)id;
|
||||
id2 = *(((int*)id) + 1);
|
||||
|
||||
if ((id1 == goptr->id1) && (id2 == goptr->id2))
|
||||
{
|
||||
return(goptr);
|
||||
}
|
||||
|
||||
goptr++;
|
||||
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
STRATEGYBLOCK *GetMeThisStrategyBlock(GAMETARGETOBJECTS This_One) {
|
||||
|
||||
int a,num;
|
||||
|
||||
a=0;
|
||||
num=-1;
|
||||
|
||||
while (GameStratblockList[a].TargetObjectNum!=GT_LAST_TARGET_OBJECT) {
|
||||
if (GameStratblockList[a].TargetObjectNum==This_One) {
|
||||
num=a;
|
||||
break;
|
||||
}
|
||||
a++;
|
||||
}
|
||||
|
||||
if (num==-1) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
return(FindSBWithName(GameStratblockList[num].SBname));
|
||||
|
||||
}
|
||||
|
||||
BOOL GameFlowStateChangeObjectEncountered (STRATEGYBLOCK * sbPtr)
|
||||
{
|
||||
//I don't hink any of these are necessary any more - Richard.
|
||||
#if 0
|
||||
char * id = sbPtr->SBname;
|
||||
|
||||
if (!(AvP.Network == I_No_Network) || !GameFlowOn)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
switch (AvP.PlayerType)
|
||||
{
|
||||
case I_Marine:
|
||||
{
|
||||
switch (PlayerStatusPtr->CurrentMission)
|
||||
{
|
||||
case MarineMission_DisableLifts:
|
||||
{
|
||||
GAMEOBJECT * goptr = GetGameObject (id);
|
||||
|
||||
GLOBALASSERT(0);
|
||||
/* How could that happen??? */
|
||||
|
||||
if (goptr)
|
||||
{
|
||||
if (goptr->StateChangeObjectNum >= GOT_LIFTOVERRIDE1 &&
|
||||
goptr->StateChangeObjectNum <= GOT_LIFTOVERRIDE4)
|
||||
{
|
||||
PlayerStatusPtr->StateChangeObjectFlags |= MakeFlag (goptr->StateChangeObjectNum);
|
||||
}
|
||||
if (goptr->StateChangeObjectNum == GOT_LIFTOVERRIDE3)
|
||||
{
|
||||
PlayerStatusPtr->securityClearances &= ~MakeFlag (LS_Gen3Internal);
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_LIFTOVERRIDE1)) &&
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_LIFTOVERRIDE2)) &&
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_LIFTOVERRIDE3)) &&
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_LIFTOVERRIDE4))
|
||||
)
|
||||
{
|
||||
PlayerStatusPtr->securityClearances |= MakeFlag (LS_Gen1_Gen3);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_DestructBase:
|
||||
{
|
||||
GAMEOBJECT * goptr = GetGameObject (id);
|
||||
|
||||
GLOBALASSERT(0);
|
||||
/* How could that happen??? */
|
||||
|
||||
if (goptr) if (goptr->StateChangeObjectNum == GOT_SELFDESTRUCT)
|
||||
{
|
||||
ActivateSelfDestructSequence(150);
|
||||
PlayerStatusPtr->securityClearances |= MakeFlag (LS_MPS4_SURFACE);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case MarineMission_NoneAsYet:
|
||||
{
|
||||
/* This is Jules's level. CDF 1/12/97 */
|
||||
GAMEOBJECT * goptr = GetGameObject (id);
|
||||
|
||||
if (goptr) {
|
||||
switch (goptr->StateChangeObjectNum) {
|
||||
case GOT_FAKESWITCH_IN_GENERATOR:
|
||||
{
|
||||
STRATEGYBLOCK *target;
|
||||
|
||||
target=NULL;
|
||||
target=GetMeThisStrategyBlock(GT_YARD_DOOR_1);
|
||||
if (target) {
|
||||
UnlockThisProxdoor(target);
|
||||
}
|
||||
target=NULL;
|
||||
target=GetMeThisStrategyBlock(GT_YARD_DOOR_2);
|
||||
if (target) {
|
||||
UnlockThisProxdoor(target);
|
||||
}
|
||||
target=NULL;
|
||||
target=GetMeThisStrategyBlock(GT_YARD_DOOR_3);
|
||||
if (target) {
|
||||
UnlockThisProxdoor(target);
|
||||
}
|
||||
target=NULL;
|
||||
target=GetMeThisStrategyBlock(GT_YARD_DOOR_4);
|
||||
if (target) {
|
||||
UnlockThisProxdoor(target);
|
||||
}
|
||||
ActivateHive();
|
||||
|
||||
break;
|
||||
}
|
||||
case GOT_DATALOG_1:
|
||||
case GOT_DATALOG_2:
|
||||
case GOT_DATALOG_3:
|
||||
PlayerStatusPtr->StateChangeObjectFlags |= MakeFlag (goptr->StateChangeObjectNum);
|
||||
return(1);
|
||||
break;
|
||||
case GOT_ENDLEVEL_EVENT:
|
||||
if (
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_DATALOG_1)) &&
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_DATALOG_2)) &&
|
||||
(PlayerStatusPtr->StateChangeObjectFlags & MakeFlag (GOT_DATALOG_3))
|
||||
) {
|
||||
/* I guess we'd better end the level, then. */
|
||||
textprint("\n\n\nEND OF LEVEL!\n\n\n");
|
||||
AvP.MainLoopRunning = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
textprint("Unknown gameflow object %d! I'm well confused!\n",goptr->StateChangeObjectNum);
|
||||
GLOBALASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case I_Predator:
|
||||
{
|
||||
#if 1
|
||||
return(1);
|
||||
#else
|
||||
switch (PlayerStatusPtr->CurrentMission)
|
||||
{
|
||||
case PredMission_GetShipGen3:
|
||||
case PredMission_GetShipCMC2:
|
||||
{
|
||||
GAMEOBJECT * goptr = GetGameObject (id);
|
||||
if (goptr)
|
||||
if (goptr->StateChangeObjectNum == GOT_PREDSHIP1 ||
|
||||
goptr->StateChangeObjectNum == GOT_PREDSHIP2)
|
||||
{
|
||||
PlayerStatusPtr->StateChangeObjectFlags |= MakeFlag (goptr->StateChangeObjectNum);
|
||||
return(1);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,126 +0,0 @@
|
|||
#ifndef _gameflow_h
|
||||
#define _gameflow_h 1
|
||||
|
||||
// allow a compile flag to switch system on and off
|
||||
// otherwise assert frenzy may ensue
|
||||
#include "gamedef.h"
|
||||
#include "system.h"
|
||||
|
||||
extern BOOL GameFlowOn;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IGFT_NewGame,
|
||||
IGFT_ResumeGame,
|
||||
}INITGAMEFLOWTYPE;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MarineMission_NoneAsYet,
|
||||
MarineMission_DisableLifts,
|
||||
MarineMission_GoToSP2,
|
||||
MarineMission_LeaveRnDs,
|
||||
MarineMission_GoToCMC6,
|
||||
MarineMission_GoToCMC2,
|
||||
MarineMission_DestructBase,
|
||||
MarineMission_Won,
|
||||
|
||||
PredMission_DestroyComputers,
|
||||
PredMission_GetShipGen3,
|
||||
PredMission_GetShipCMC2,
|
||||
PredMission_KillPredAlien,
|
||||
PredMission_KillQueen,
|
||||
PredMission_ReturnToShip,
|
||||
|
||||
AlienMission_DestroyMarines,
|
||||
AlienMission_DestroyMarinesWithSpit,
|
||||
AlienMission_DestoryOtherBaddies,
|
||||
AlienMission_DestroyQueen,
|
||||
|
||||
PlayerMissions_Last,
|
||||
|
||||
} PLAYERMISSION;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LS_Gen1_Entrance = 1,
|
||||
LS_Gen1_Medlab,
|
||||
LS_Gen1_Gen2,
|
||||
LS_Gen1_Gen3,
|
||||
LS_Gen1_SP3,
|
||||
LS_Gen1_CMC6,
|
||||
LS_Gen1_CMC2,
|
||||
LS_Gen1_RnD4,
|
||||
LS_Gen1_SP2,
|
||||
LS_Gen2_Gen3,
|
||||
LS_CMC2_CMC4,
|
||||
LS_CMC4_CMC6,
|
||||
LS_SP3_MPS2,
|
||||
LS_MPS2_MPS4,
|
||||
LS_MPS4_SURFACE,
|
||||
LS_SP2_RnD2,
|
||||
LS_RnD2_RnD3,
|
||||
LS_RnD3_RnD4,
|
||||
LS_Gen3Internal,
|
||||
LS_MaxLifts,
|
||||
|
||||
} LIFTSECURITYNUMBERS;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GOT_LIFTOVERRIDE1,
|
||||
GOT_LIFTOVERRIDE2,
|
||||
GOT_LIFTOVERRIDE3,
|
||||
GOT_LIFTOVERRIDE4,
|
||||
GOT_SELFDESTRUCT,
|
||||
GOT_COMPUTERSYSTEM,
|
||||
GOT_PREDSHIP1,
|
||||
GOT_PREDSHIP2,
|
||||
/* New stuff for Jules's level: 1/12/97 CDF */
|
||||
GOT_FAKESWITCH_IN_GENERATOR,
|
||||
GOT_DATALOG_1,
|
||||
GOT_DATALOG_2,
|
||||
GOT_DATALOG_3,
|
||||
GOT_ENDLEVEL_EVENT,
|
||||
|
||||
GOT_LASTGAMEOBJECT,
|
||||
} GAMESTATECHANGEOBJECTS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GAMESTATECHANGEOBJECTS StateChangeObjectNum;
|
||||
int id1;
|
||||
int id2;
|
||||
} GAMEOBJECT;
|
||||
|
||||
typedef enum {
|
||||
GT_YARD_DOOR_1,
|
||||
GT_YARD_DOOR_2,
|
||||
GT_YARD_DOOR_3,
|
||||
GT_YARD_DOOR_4,
|
||||
|
||||
GT_LAST_TARGET_OBJECT,
|
||||
} GAMETARGETOBJECTS;
|
||||
|
||||
typedef struct {
|
||||
GAMETARGETOBJECTS TargetObjectNum;
|
||||
char SBname[SB_NAME_LENGTH];
|
||||
} GAME_STRATBLOCK_LIST_ENTRY;
|
||||
|
||||
struct player_status;
|
||||
|
||||
// Internal Platform independent fns.
|
||||
extern int ChangingLevelGameFlowUpdate (I_AVP_ENVIRONMENTS current, I_AVP_ENVIRONMENTS next);
|
||||
// returns 1 if it is playing an FMV, or 0 otherwise
|
||||
|
||||
extern void InitGameFlowSystem (struct player_status * ps, INITGAMEFLOWTYPE igft);
|
||||
|
||||
// returns 1 if the Object should be picked up, 0 otherwise
|
||||
extern BOOL GameFlowStateChangeObjectEncountered (STRATEGYBLOCK * sbPtr);
|
||||
|
||||
// Internal Platform dependent fns.
|
||||
// see glfwplat.c
|
||||
extern void DoStartMissionSequence (PLAYERMISSION mission);
|
||||
|
||||
|
||||
#endif
|
|
@ -12,7 +12,6 @@
|
|||
#include "language.h"
|
||||
#include "cheat.h"
|
||||
#include "weapons.h"
|
||||
#include "gameflow.h"
|
||||
#include "equipmnt.h"
|
||||
|
||||
/* Extern for global keyboard buffer */
|
||||
|
|
|
@ -1,235 +0,0 @@
|
|||
#include "3dc.h"
|
||||
#include "module.h"
|
||||
#include "inline.h"
|
||||
|
||||
#include "stratdef.h"
|
||||
#include "gamedef.h"
|
||||
#include "bh_types.h"
|
||||
#include "gameplat.h"
|
||||
#include "gameflow.h"
|
||||
|
||||
static char * messages[PlayerMissions_Last]=
|
||||
{
|
||||
"BASE COMMANDER:\n\
|
||||
WOAH, CAN'T SPEAK NOW, THERE'S \n\
|
||||
SOME MAJOR SHIT GOING DOWN. GET\n\
|
||||
YOUR ARSE TO GENERAL.",
|
||||
|
||||
"BASE COMMANDER:\n\
|
||||
HEADS UP TROOP WE'RE IN SOME PRETTY \n\
|
||||
SHIT. TAKE OUT THE 4 VEHICLE LIFT \n\
|
||||
MANUAL OVERRIDE CONTROLS IN \n\
|
||||
LIVING QUARTERS AND HANGAR ONE. WE'LL \n\
|
||||
OPEN ACCESS TO THE LIFT OUT. THEY'RE\n\
|
||||
THE ONES WITH THE COMPUTER TERMINAL AT\n\
|
||||
THE TOP AND A YELLOW STRIPED PIPE AT\n\
|
||||
THE BOTTOM. OH, AND, WATCH YOUR BACK,\n\
|
||||
THERE IS SOME ER.. EXPERIMENTAL TECH\n\
|
||||
STUFF LOOSE IN THE BASE.",
|
||||
|
||||
"BASE COMMANDER:\n\
|
||||
TROOP, FURTHER ORDERS FROM ON HIGH.\n\
|
||||
GET TO SECURITY 2, THERE'S SOME AMMO\n\
|
||||
WAITING. BASE COM OUT.",
|
||||
|
||||
"BASE COMMANDER:\n\
|
||||
BASE COM HERE. I DON'T LIKE THIS MUCH, \n\
|
||||
BUT THIS PRETTY LI'L LADY WON'T TAKE\n\
|
||||
NO FOR AN ANSWER. THE SCI TECH STUFF,\n\
|
||||
ITS WORSE THAN WE THOUGHT, 'SPECIALLY\n\
|
||||
IN R'N'D LABS. WE CAN'T ALLOW ACCESS\n\
|
||||
TO THE LIFT. I GUESS THE ONLY OPTION\n\
|
||||
IS TO GO THE LONG WAY ROUND. WATCH\n\
|
||||
YOUR BACK, AND TRY TO KILL AS MANY AS\n\
|
||||
YOU CAN, OK?",
|
||||
|
||||
"BASE COMMANDER:\n\
|
||||
AN ESCAPE SHIP IS PREPPED, WE'LL WAIT\n\
|
||||
AS LONG AS WE CAN. MEET POINT IS MY \n\
|
||||
OFFICE IN MAIN CONTROL, GET HERE ASAP.",
|
||||
|
||||
"BASE COMMANDER:\n\
|
||||
SHIT, TROOP WE COULDN'T WAIT. WE'RE \n\
|
||||
NOW IN MAIN ARMOURY. ACCESS TO GENERAL \n\
|
||||
AND MAIN CONTROL IS SEALED OFF. WE'LL \n\
|
||||
HOLD DOWN IN HANGAR TWO FOR YOU.\n\
|
||||
WATCH OUT FOR SENTRY GUNS, WE'VE\n\
|
||||
PLACED THEM TO COVER OUR BACKS. THE\n\
|
||||
ARMOURY IS STILL FULL OF AMMO.",
|
||||
|
||||
"CORPORATION WOMAN:\n\
|
||||
WE ARE NOW IN ORBIT. YOUR ONLY CHANCE\n\
|
||||
TO SURVIVE IS TO REACH THE EMERGENCY \n\
|
||||
SHUTTLE, BUT IT WILL ONLY WORK IF THE \n\
|
||||
BASE SELF-DESTRUCT IS SET. YOU CAN \n\
|
||||
REACH THE DESTRUCT CORE IN MAIN \n\
|
||||
REACTOR. ONCE YOU'VE SET IT, YOU \n\
|
||||
CAN GET OUT ACROSS THE SURFACE TO THE\n\
|
||||
SHUTTLE.",
|
||||
|
||||
"CONGRATULATIONS, YOU HAVE WON.\n\
|
||||
ENJOY THE SURFACE LEVEL.",
|
||||
|
||||
|
||||
|
||||
|
||||
"DESTROY THE COMPUTERS IN MAIN CONTROL\n",
|
||||
|
||||
"RECOVER SHIP PART FROM HANGAR ONE\n",
|
||||
|
||||
"RECOVER SHIP PART FROM HANGAR TWO\n",
|
||||
|
||||
"KILL PREDATOR ALIENS\n",
|
||||
|
||||
"KILL ALIEN QUEEN AND SET SELF-\n\
|
||||
DESTRUCT IN MAIN REACTOR\n",
|
||||
|
||||
"RETURN TO SHIP IN NON-TERRESTRIAL\n\
|
||||
TECHNOLOGY LAB.\n",
|
||||
|
||||
|
||||
|
||||
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
||||
};
|
||||
|
||||
extern SCREENDESCRIPTORBLOCK ScreenDescriptorBlock;
|
||||
|
||||
|
||||
void DoStartMissionSequence (PLAYERMISSION mission)
|
||||
{
|
||||
|
||||
char buffer[1024];
|
||||
|
||||
sprintf(buffer, "%s\n\nPress Return\n", messages[mission]);
|
||||
|
||||
ColourFillBackBuffer(0);
|
||||
#if PreBeta
|
||||
jtextprint ("%s", buffer);
|
||||
FlipBuffers();
|
||||
#elif debug
|
||||
textprint ("%s", buffer);
|
||||
FlushTextprintBuffer();
|
||||
FlipBuffers();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
char * GetCurrentMissionString ()
|
||||
{
|
||||
if (PlayerStatusPtr->CurrentMission < PlayerMissions_Last)
|
||||
{
|
||||
return(messages[PlayerStatusPtr->CurrentMission]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
void ShowMissionMessage ()
|
||||
{
|
||||
char buffer[1024];
|
||||
|
||||
if (!messages[PlayerStatusPtr->CurrentMission])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
sprintf(buffer, "%s\nSecurity %x Flags %x\n", messages[PlayerStatusPtr->CurrentMission],
|
||||
PlayerStatusPtr->securityClearances,
|
||||
PlayerStatusPtr->StateChangeObjectFlags);
|
||||
|
||||
#if PreBeta
|
||||
jtextprint ("%s", buffer);
|
||||
#elif debug
|
||||
textprint ("%s", buffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
// this will only print one string from the top of the screen
|
||||
|
||||
static int CharWidthInPixels(unsigned char Ch)
|
||||
{
|
||||
if
|
||||
(
|
||||
(
|
||||
(Ch>=FontStart)
|
||||
&&
|
||||
(Ch<=FontEnd)
|
||||
)
|
||||
||
|
||||
(' '==Ch)
|
||||
|
||||
)
|
||||
{
|
||||
return CharWidth;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int LastDisplayableXForChars(void)
|
||||
{
|
||||
return ScreenDescriptorBlock.SDB_Width-CharWidth;
|
||||
}
|
||||
|
||||
void jtextprint (const char* t, ...)
|
||||
{
|
||||
char buffer [1024];
|
||||
/*
|
||||
Get message string from arguments into buffer...
|
||||
*/
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, t);
|
||||
vsprintf(&buffer[0], t, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
{
|
||||
int x=0,y=0;
|
||||
char * cptr = &buffer[0];
|
||||
|
||||
while (*cptr != 0)
|
||||
{
|
||||
switch (*cptr)
|
||||
{
|
||||
case '\n':
|
||||
{
|
||||
y += CharVertSep;
|
||||
x = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
BlitWin95Char (x, y, *cptr);
|
||||
|
||||
x+=CharWidthInPixels(*cptr);
|
||||
if (x>LastDisplayableXForChars())
|
||||
{
|
||||
y += CharVertSep;
|
||||
x = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cptr ++;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
187
src/mslhand.c
187
src/mslhand.c
|
@ -1,187 +0,0 @@
|
|||
#include "3dc.h"
|
||||
|
||||
#include "mslhand.h"
|
||||
|
||||
#if PSX
|
||||
#include "psx_inc.h"
|
||||
#endif
|
||||
|
||||
#define UseLocalAssert 1
|
||||
#include "ourasert.h"
|
||||
|
||||
extern SHAPEHEADER * mainshapelist[];
|
||||
|
||||
static int begins[ MSLS_MAXSECTIONS ];
|
||||
static int ends[ MSLS_MAXSECTIONS ];
|
||||
|
||||
static int autodelete[ maxobjects ];
|
||||
|
||||
#define MSS_FREE (-1)
|
||||
|
||||
static void EnsureInitialized(void)
|
||||
{
|
||||
static int initialized = 0;
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
int i;
|
||||
|
||||
initialized = 1;
|
||||
|
||||
for (i=0; i<MSLS_MAXSECTIONS; ++i)
|
||||
{
|
||||
begins[i]=MSS_FREE;
|
||||
ends[i]=MSS_FREE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int GetNextMSLEntry(MSL_SECTION sect, unsigned int num_shapes, int auto_delete)
|
||||
{
|
||||
int i, blockstart, maxend = maxobjects;
|
||||
/* I assume that the size of the global array 'mainshapelist' will be 'maxobjects' */
|
||||
|
||||
EnsureInitialized();
|
||||
|
||||
for (i=sect+1; i<MSLS_MAXSECTIONS; ++i)
|
||||
{
|
||||
if (MSS_FREE != begins[i])
|
||||
{
|
||||
maxend = begins[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=sect-1; MSS_FREE == begins[sect]; --i)
|
||||
{
|
||||
ends[sect] = begins[sect] = i>=0 ? ends[i] : 0;
|
||||
}
|
||||
|
||||
blockstart = ends[sect];
|
||||
/* can use a local assert here to fail on a mainshapelist overflow, otherwise return error code */
|
||||
LOCALASSERT(ends[sect] + num_shapes <= maxend);
|
||||
if (ends[sect] + num_shapes > maxend ) return MSL_OVERFLOW;
|
||||
ends[sect] += num_shapes;
|
||||
|
||||
for (i=blockstart; i<ends[sect]; ++i)
|
||||
{
|
||||
mainshapelist[i] = 0;
|
||||
autodelete[i] = auto_delete;
|
||||
}
|
||||
|
||||
return blockstart;
|
||||
}
|
||||
|
||||
void FlushMSLSection(MSL_SECTION sect)
|
||||
{
|
||||
|
||||
#if StandardShapeLanguage
|
||||
|
||||
int i;
|
||||
|
||||
EnsureInitialized();
|
||||
|
||||
if (MSS_FREE == begins[sect] || MSS_FREE == ends[sect]) return;
|
||||
|
||||
for (i=begins[sect]; i<ends[sect]; ++i)
|
||||
{
|
||||
if (autodelete[i] && mainshapelist[i])
|
||||
{
|
||||
SHAPEHEADER * shp = mainshapelist[i];
|
||||
|
||||
int max_num_texs = 0;
|
||||
int i;
|
||||
|
||||
if (shp->points)
|
||||
{
|
||||
if (*shp->points) free(*shp->points);
|
||||
free(shp->points);
|
||||
}
|
||||
if (shp->sh_normals)
|
||||
{
|
||||
if (*shp->sh_normals) free(*shp->sh_normals);
|
||||
free(shp->sh_normals);
|
||||
}
|
||||
if (shp->sh_vnormals)
|
||||
{
|
||||
if (*shp->sh_vnormals) free(*shp->sh_vnormals);
|
||||
free(shp->sh_vnormals);
|
||||
}
|
||||
if (shp->sh_extraitemdata)
|
||||
free(shp->sh_extraitemdata);
|
||||
/* the items are allocated in one big bunch
|
||||
// 9 int's per item (to make bsp simple)
|
||||
// this should be changed if it is to be done
|
||||
// a different way
|
||||
*/
|
||||
if (shp->items)
|
||||
{
|
||||
for (i=0; i<shp->numitems; i++)
|
||||
{
|
||||
if (shp->items[i][0] == 5 || shp->items[i][0] == 6)
|
||||
{
|
||||
int UVIndex = (shp->items[i][3] &0xffff0000) >> 16;
|
||||
max_num_texs = max (max_num_texs, shp->items[i][3] &0x7fff);
|
||||
if(shp->items[i][2]& iflag_txanim)
|
||||
{
|
||||
int j;
|
||||
TXANIMHEADER** thlist=(TXANIMHEADER**)shp->sh_textures[UVIndex];
|
||||
for(j=1;thlist[j]!=0;j++)
|
||||
{
|
||||
int k;
|
||||
TXANIMHEADER* th=thlist[j];
|
||||
for(k=0;k<th->txa_numframes;k++)
|
||||
{
|
||||
free(th->txa_framedata[k].txf_uvdata);
|
||||
}
|
||||
free (th->txa_framedata);
|
||||
free (th);
|
||||
}
|
||||
free (thlist);
|
||||
shp->sh_textures[UVIndex]=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
free(shp->sh_textures[UVIndex]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
free (*shp->items);
|
||||
free (shp->items);
|
||||
}
|
||||
|
||||
if (shp->sh_textures)
|
||||
{
|
||||
free (shp->sh_textures);
|
||||
}
|
||||
|
||||
if (shp->sh_localtextures)
|
||||
{
|
||||
for (i=0; i<(max_num_texs+1); i++)
|
||||
{
|
||||
free (shp->sh_localtextures[i]);
|
||||
}
|
||||
free (shp->sh_localtextures);
|
||||
}
|
||||
|
||||
if (shp->sh_instruction)
|
||||
free(shp->sh_instruction);
|
||||
|
||||
free(shp);
|
||||
}
|
||||
mainshapelist[i]=0;
|
||||
autodelete[i]=0;
|
||||
}
|
||||
|
||||
begins[sect]=MSS_FREE;
|
||||
ends[sect]=MSS_FREE;
|
||||
|
||||
#else
|
||||
|
||||
printf("\nDo NOT call this function!\n");
|
||||
//GLOBALASSERT(1==0);
|
||||
|
||||
#endif
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#ifndef _included_mslhand_h_
|
||||
#define _included_mslhand_h_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum MSL_Section
|
||||
{
|
||||
MSLS_COMPILEDIN,
|
||||
MSLS_CHARACTER,
|
||||
MSLS_ENVIRONMENT,
|
||||
|
||||
MSLS_MAXSECTIONS
|
||||
|
||||
} MSL_SECTION;
|
||||
|
||||
#define MSL_OVERFLOW (-1)
|
||||
|
||||
int GetNextMSLEntry(MSL_SECTION, unsigned int num_shapes, int auto_delete);
|
||||
|
||||
void FlushMSLSection(MSL_SECTION);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_included_mslhand_h_ */
|
Loading…
Add table
Add a link
Reference in a new issue