#include "c_extern.h" #include "direct.h" #include UBYTE *PtrSce ; UBYTE *PtrScene ; #define GET_BYTE (*PtrSce++) #define GET_WORD (*(WORD*)PtrSce) ; PtrSce+=2 /*══════════════════════════════════════════════════════════════════════════* █▀▀▀▄ █ ██▀▀▀ █ ▄▀ █▀▀▀▀ █ █ ██▄ █ █▀▀▀▀ ██ █ ██ ▀▀▀▀█ ██▀▄ ██▀▀ ██ █ ██▀██ ██ ▀▀▀▀ ▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ *══════════════════════════════════════════════════════════════════════════*/ /*──────────────────────────────────────────────────────────────────────────*/ void GetDiskEnv( UBYTE *progpath ) { _splitpath( (char*)progpath, ProgDrive, ProgDir, Name, Ext ) ; getcwd( OrgDir, _MAX_DIR ) ; _dos_getdrive( &OrgDrive ) ; } void RestoreDiskEnv() { ULONG total ; _dos_setdrive( OrgDrive, &total ) ; chdir( OrgDir ) ; } /*══════════════════════════════════════════════════════════════════════════* ██▀▀▀ █▀▀▀▀ █▀▀▀▀ ██▄ █ █▀▀▀▀ █▀▀▀▀ █ █ █▀▀▀▀ ▀▀▀▀█ ██ ██▀▀ ██▀██ ██▀▀ ██▀▀ ██ ██ ██▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀▀ *══════════════════════════════════════════════════════════════════════════*/ /*──────────────────────────────────────────────────────────────────────────*/ WORD LoadScene( WORD numscene ) { T_OBJET *ptrobj ; WORD n, info3 ; UBYTE string[256] ; UBYTE mess[256] ; WORD sizetoload ; WORD indexfile3d ; // PtrScene = PtrSce = LoadMalloc_HQR( PATH_RESSOURCE"scene.hqr", numscene ) ; HQRM_Load( PATH_RESSOURCE"scene.hqr", numscene, &PtrScene ) ; CHECK_MEMORY PtrSce = PtrScene ; if( !PtrSce ) { Message( "Scene.Hqr introuvable ou pas assez mem", TRUE ) ; } // info world: INFO_WORLD NewCube = numscene ; Island = GET_BYTE ; GameOverCube = GET_BYTE ; n = GET_WORD ; n = GET_WORD ; // ListHoloObj[NUM_PERSO].Alpha = GET_WORD ; // ListHoloObj[NUM_PERSO].Beta = GET_WORD ; // ListHoloObj[NUM_PERSO].Size = GET_WORD ; // ambiance: AMBIANCE AlphaLight = GET_WORD ; BetaLight = GET_WORD ; SampleAmbiance[0] = GET_WORD ; SampleRepeat[0] = GET_WORD ; SampleRnd[0] = GET_WORD ; SampleAmbiance[1] = GET_WORD ; SampleRepeat[1] = GET_WORD ; SampleRnd[1] = GET_WORD ; SampleAmbiance[2] = GET_WORD ; SampleRepeat[2] = GET_WORD ; SampleRnd[2] = GET_WORD ; SampleAmbiance[3] = GET_WORD ; SampleRepeat[3] = GET_WORD ; SampleRnd[3] = GET_WORD ; SecondMin = GET_WORD ; SecondEcart = GET_WORD ; CubeJingle = GET_BYTE ; // PlayMidiFile( CubeJingle ) ; // hero inits: HERO_START ptrobj = ListObjet ; CubeStartX = GET_WORD ; CubeStartY = GET_WORD ; CubeStartZ = GET_WORD ; sizetoload = GET_WORD ; ptrobj->PtrTrack = PtrSce ; PtrSce += sizetoload ; sizetoload = GET_WORD ; ptrobj->PtrLife = PtrSce ; PtrSce += sizetoload ; ptrobj++ ; // objets: OBJECT NbObjets = GET_WORD ; for( n=1; nFlags = GET_WORD ; indexfile3d = GET_WORD ; if( !(ptrobj->Flags & SPRITE_3D) ) { HQRM_Load( PATH_RESSOURCE"File3D.hqr", indexfile3d, &ptrobj->PtrFile3D ) ; CHECK_MEMORY /* ptrobj->PtrFile3D = LoadMalloc_HQR( PATH_RESSOURCE"File3D.hqr", indexfile3d ) ; */ } ptrobj->GenBody = GET_BYTE ; ptrobj->GenAnim = GET_BYTE ; /* if( n==5 ) { CoulText( 15,0 ) ; Text( 10, 300, "obj 5 org anim: %d", ptrobj->GenAnim ) ; } */ ptrobj->Sprite = GET_WORD ; ptrobj->OldPosX = ptrobj->PosObjX = GET_WORD ; ptrobj->OldPosY = ptrobj->PosObjY = GET_WORD ; ptrobj->OldPosZ = ptrobj->PosObjZ = GET_WORD ; ptrobj->HitForce = GET_BYTE ; ptrobj->OptionFlags = GET_WORD ; ptrobj->OptionFlags &= ~EXTRA_GIVE_NOTHING ; ptrobj->Beta = GET_WORD ; ptrobj->SRot = GET_WORD ; ptrobj->Move = GET_WORD ; ptrobj->Info = GET_WORD ; ptrobj->Info1 = GET_WORD ; ptrobj->Info2 = GET_WORD ; ptrobj->Info3 = GET_WORD ; ptrobj->NbBonus = GET_BYTE ; ptrobj->CoulObj = GET_BYTE ; ptrobj->Armure = GET_BYTE ; ptrobj->LifePoint = GET_BYTE ; sizetoload = GET_WORD ; ptrobj->PtrTrack = PtrSce ; PtrSce = PtrSce + sizetoload ; sizetoload = GET_WORD ; ptrobj->PtrLife = PtrSce ; PtrSce = PtrSce + sizetoload ; } // zone declechement: ZONE NbZones = GET_WORD ; ListZone = (T_ZONE*)PtrSce ; PtrSce += NbZones * 12 * 2 ; // point track: TRACK NbBrickTrack = GET_WORD ; ListBrickTrack = (T_TRACK*)PtrSce ; return TRUE ; } /*══════════════════════════════════════════════════════════════════════════* █▀▀▀▄ █▀▀▀▀ █▀▀█ █ █ █▀▀▀▀ ██ █ ██▀▀ ██▀▀█ ██ █ ██ ▀█ ▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ *══════════════════════════════════════════════════════════════════════════*/ /*──────────────────────────────────────────────────────────────────────────*/ /* void *LoadTestMalloc( char *filename ) { void *ptr ; UBYTE string[256] ; ptr = LoadMalloc( filename ) ; if( !ptr ) { strcpy( string, "ARG ! Mem:" ) ; strcat( string, Itoa( (ULONG)Malloc(-1) ) ) ; strcat( string, " fichier:" ) ; strcat( string, filename ) ; Message( string, TRUE ) ; } return ptr ; } */ /*══════════════════════════════════════════════════════════════════════════*/ /*══════════════════════════════════════════════════════════════════════════*/