reman3/Rayman_X/cpa/Appli/Max23Dos/src/IpoSave.c

133 lines
4.2 KiB
C

/*=========================================================================
*
* IPOSave.c - IPO saving functions
*
* Version 1.0
* Revision date
*
*=======================================================================*/
#include "IpoSave.h"
#include "SCR.h"
#include "conventi.h"
#include "print.h"
#include "system.h"
#include "sprobj.h"
#include "RLISave.h"
//--------------------------------------------------------------------
/****************************************************************************
* Description: save IPO header
*
* Parameters: p_stFile : script file pointer
* sFileName : file name
* p_vPtr : data pointer
* xAction : script action
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
void MLT_vSaveIpoFile (SCR_tdst_File_Description *p_stFile, char *sFileName, void *p_vPtr, SCR_tde_Ntfy_Action xAction)
{
xString mes;
// delete the existing section
SCR_fn_v_SvL1_DeleteSection(p_stFile);
// save header section
sprintf(mes, "%s%s", M_IPO_HEADER, SCR_CC_sz_Cfg_SectionIdMark);
SCR_M_SvL0_SaveBeginSection(p_stFile, mes, SCR_CC_C_Cfg_EOL);
// save version number
SCR_M_SvL0_SaveEntry(p_stFile, M_VersionNumber, SCR_CC_C_Cfg_NoChar);
SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, "1");
// save end section
SCR_M_SvL0_SaveEndSection(p_stFile, SCR_CC_C_Cfg_EOL);
}
/****************************************************************************
* Description: save IPO section
*
* Parameters: p_stFile : script file pointer
* sFileName : file name
* p_vPtr : data pointer
* xAction : script action
*---------------------------------------------------------------------------
* Revision date: Author:
*****************************************************************************/
void MLT_vSaveIpoSection (SCR_tdst_File_Description *p_stFile, char *sFileName, void *p_vPtr, SCR_tde_Ntfy_Action xAction)
{
MLT_tdxHandleToSuperObject hSprObj;
xString mes, sFile, sAction, sIdent, sIdent2;
char *sPhysicalName, *p_char;
// get super-object pointer
hSprObj = (MLT_tdxHandleToSuperObject)(p_vPtr);
// get corresponding section name
sPhysicalName = (char *)(hSprObj->sLinkedObject);
// add or rebuild section
if(xAction == SCR_EA_Ntfy_AddSection)
{
SCR_fn_v_SvL1_ToEndSection(p_stFile);
}
else
{
SCR_fn_v_SvL1_DeleteSection(p_stFile);
}
// get physical name
SCR_fn_v_RdL0_SplitSectionName(sPhysicalName, sFile, sAction, sIdent);
// updae it with IPO prefix
if( (p_char=strstr(hSprObj->sName, "=")) != NULL )
{
sprintf(sIdent2, "IPO_%s%s", sIdent, p_char);
}
else
{
sprintf(sIdent2, "IPO_%s", sIdent);
}
// get source file
sprintf(sFile, "%s%s.ipo", g_sDirectorySave, g_sFileIn);
// save IPO section
if (hSprObj->iFlags & IS_MIRROR)
SCR_fn_v_RdL0_ComputeSectionName(mes, sFile, M_IpoMirror, sIdent2);
else
SCR_fn_v_RdL0_ComputeSectionName(mes, sFile, M_Ipo, sIdent2);
SCR_M_SvL0_SaveBeginSection(p_stFile, MLT_p_cGetSectionName(mes), SCR_CC_C_Cfg_EOL);
// compute coresponding PO section
SCR_fn_v_RdL0_SplitSectionName(sPhysicalName, sFile, sAction, sIdent);
sprintf(sFile, "%s%s.phy", g_sDirectorySave, g_sFileIn);
if( (p_char=strstr(sIdent, "=")) != NULL )
strcpy(p_char, "\0");
sprintf(sIdent2, "PO_%s", sIdent);
SCR_fn_v_RdL0_ComputeSectionName(mes, sFile, M_Phy, sIdent2);
// save PO entry
SCR_M_SvL0_SaveEntry(p_stFile, M_IPOActionPO, SCR_CC_C_Cfg_NoChar);
SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, mes);
// if necessary, save RLI entry
if(g_bGenerateRLI && g_lLightIndex)
{
SCR_fn_v_RdL0_SplitSectionName(sPhysicalName, sFile, sAction, sIdent);
sprintf(sFile, "%s%s.rli", g_sDirectorySave, g_sFileIn);
sprintf(sIdent2, "ISI_%s", sIdent);
SCR_fn_v_RdL0_ComputeSectionName(mes, sFile, M_ISI, sIdent2);
SCR_M_SvL0_SaveEntry(p_stFile, M_IPOActionRLI, SCR_CC_C_Cfg_NoChar);
SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, mes);
}
// save end section
SCR_M_SvL0_SaveEndSection(p_stFile, SCR_CC_C_Cfg_EOL);
}