/*========================================================================= * RND_Scpt.c : * Script read * * (c) Ubi Studios 1997 *=======================================================================*/ #define D_RND_Input_StructureDefine #include "Acp_base.h" #include "RND_CPA.h" #include "MemRND.h" #include "ErrRND.h" #include "RND_Main.h" #include "RND_Scpt.h" #include "RND_Str.h" #undef D_RND_Input_StructureDefine /*#define RND_WITHOUT_SNA // just for Concat*/ /*************************************************************************/ #if (!defined(U64)) #ifndef RND_WITHOUT_SNA #include "sna.h" #endif SCR_tde_Anl_ReturnValue RND_fn_eRandomScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction) { FILE *p_stFile; SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn; char szFilename[_MAX_PATH]; _p_stFile = _p_stFile; if (M_IsTitle) { M_CheckScriptParamNumber(1); RND_g_stRandomStructure.ulSizeOfTable = atoi(_ap_szParams[0]); Mmg_M_InitBlock(RND,E_ucRNDMemoryBlock,C_uwAllocSize+RND_g_stRandomStructure.ulSizeOfTable*sizeof(unsigned long)); Mmg_M_SetModeAlloc4Ch(RND,E_ucRNDMemoryBlock,C_ucMmgDefaultChannel); MMG_fn_vAddMemoryInfo (MMG_C_lTypeRND , MMG_C_lSubTypeRND , NULL); RND_g_stRandomStructure.p_ulTable = Mmg_fn_p_vAlloc4Ch(RND_g_stRandomStructure.ulSizeOfTable*sizeof(unsigned long),C_ucMmgDefaultChannel); /* GuS 98/08/07 */ #ifndef RND_WITHOUT_SNA #ifndef RETAIL if ( SNA_M_bTestSaveGameDesc() ) SNA_fn_vWriteLongEntryToCurrentDscFile( SNA_C_ul_RandomDescTitle, atol(_ap_szParams[0]) ); #endif #endif } else if (M_IsEntry) { if (M_ActionIs("ComputeTable")) { RND_fn_vComputeRandomTable(); #ifndef RND_WITHOUT_SNA #ifndef RETAIL if ( SNA_M_bTestSaveGameDesc() ) SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_RandomComputeTable ); #endif #endif } else if (M_ActionIs("ReadTable")) { strcpy(szFilename,SCR_M_RdL0_GetOpenFileNameR(0)); if (strrchr(szFilename,'.')!=NULL) *strrchr(szFilename,'.') = 0; strcat(szFilename,".trn"); if ((p_stFile=fopen(szFilename,"rb"))!=NULL) { fread(RND_g_stRandomStructure.p_ulTable,RND_g_stRandomStructure.ulSizeOfTable,sizeof(unsigned long),p_stFile); fclose(p_stFile); #ifndef RND_WITHOUT_SNA #ifndef RETAIL if ( SNA_M_bTestSaveGameDesc() ) { SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_RandomReadTable ); SNA_fn_vWriteBlockToCurrentDscFile ( (char *)RND_g_stRandomStructure.p_ulTable, RND_g_stRandomStructure.ulSizeOfTable * sizeof(unsigned long) ); } #endif #endif } else { RND_fn_vComputeRandomTable(); #ifndef RND_WITHOUT_SNA #ifndef RETAIL if ( SNA_M_bTestSaveGameDesc() ) SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_RandomComputeTable ); #endif #endif } } RND_fn_vRemapRandomTable(); } #ifndef RND_WITHOUT_SNA #ifndef RETAIL else if( M_IsEnd ) { if ( SNA_M_bTestSaveGameDesc() ) SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ulEndOfDescSection ); } #endif #endif return(eReturnValue); } #endif /* !U64*/ /*************************************************************************/