#include "StdAfx.h"
|
#include "RecipeManager.h"
|
#include "CHCommonClasses/MacroFile.h"
|
|
CRecipeManager::CRecipeManager()
|
{
|
Reset();
|
}
|
|
CRecipeManager::CRecipeManager(const CString& strFilename)
|
{
|
ReadRecipeInfo(strFilename);
|
}
|
|
CRecipeManager::~CRecipeManager(void)
|
{
|
Reset();
|
}
|
|
BOOL CRecipeManager::ReadRecipeInfo(const CString& strFilename)
|
{
|
CMacroFile macroFile;
|
if (!macroFile.Read(strFilename))
|
{
|
return FALSE;
|
}
|
|
Reset();
|
|
UINT nRecipeCount = 0;
|
macroFile.GetItem(_T("RECIPE_COUNT"), nRecipeCount);
|
|
CString strItem=_T(""), strRecipeFile=_T("");
|
CRecipeInfo recipeInfo;
|
CRecipeTriangle recipeTriangle;
|
for (UINT i=0; i<nRecipeCount; i++)
|
{
|
recipeInfo.Reset();
|
|
strItem.Format(_T("RECIPE_NAME_%02d"), i);
|
macroFile.GetItem(strItem, recipeInfo.strRecipeName, _T(""));
|
|
strItem.Format(_T("RECIPE_RECIPE_FILE_%02d"), i);
|
macroFile.GetItem(strItem, recipeInfo.strRecipeFile, _T(""));
|
|
strItem.Format(_T("RECIPE_MODEL_FILE_%02d"), i);
|
macroFile.GetItem(strItem, recipeInfo.strModelFile, _T(""));
|
|
recipeTriangle.Reset();
|
|
strRecipeFile = TRIANGLE_RECIPE_PATH;
|
strRecipeFile += recipeInfo.strRecipeFile;
|
if (!recipeTriangle.ReadRecipe(strRecipeFile))
|
{
|
continue;
|
}
|
|
m_vectorRecipeInfo.push_back(recipeInfo);
|
m_vectorRecipeTriangle.push_back(recipeTriangle);
|
}
|
|
return TRUE;
|
}
|
|
BOOL CRecipeManager::WriteRecipeInfo(const CString& strFilename)
|
{
|
CMacroFile macroFile;
|
|
UINT nRecipecount = (UINT)m_vectorRecipeInfo.size();
|
macroFile.SetItem(_T("RECIPE_COUNT"), nRecipecount);
|
|
CString strItem=_T(""), strRecipeFile=_T("");
|
int nIndex = 0;
|
for (VectorRecipeInfoIt it=m_vectorRecipeInfo.begin(); it!=m_vectorRecipeInfo.end(); it++)
|
{
|
strItem.Format(_T("RECIPE_NAME_%02d"), nIndex);
|
macroFile.SetItem(strItem, it->strRecipeName);
|
|
strItem.Format(_T("RECIPE_RECIPE_FILE_%02d"), nIndex);
|
macroFile.SetItem(strItem, it->strRecipeFile);
|
|
strItem.Format(_T("RECIPE_MODEL_FILE_%02d"), nIndex);
|
macroFile.SetItem(strItem, it->strModelFile);
|
|
strRecipeFile = TRIANGLE_RECIPE_PATH;
|
strRecipeFile += it->strRecipeFile;
|
m_vectorRecipeTriangle[nIndex].WriteRecipe(strRecipeFile);
|
|
nIndex++;
|
}
|
|
return macroFile.Write(strFilename);
|
|
}
|
|
BOOL CRecipeManager::SetRecipeInfo(UINT nIndex, const CRecipeInfo& recipeInfo)
|
{
|
if (nIndex>=m_vectorRecipeInfo.size()) return FALSE;
|
m_vectorRecipeInfo[nIndex] = recipeInfo;
|
return TRUE;
|
}
|
|
void CRecipeManager::AddRecipe(const CRecipeInfo& recipeInfo, const CRecipeTriangle& recipeTrianlge)
|
{
|
m_vectorRecipeInfo.push_back(recipeInfo);
|
m_vectorRecipeTriangle.push_back(recipeTrianlge);
|
}
|
|
void CRecipeManager::DeleteRecipe(UINT nIndex)
|
{
|
// delete recipe info
|
if (nIndex < m_vectorRecipeInfo.size())
|
{
|
// delete recipe file
|
CString strFilename = TRIANGLE_RECIPE_PATH;
|
strFilename += m_vectorRecipeInfo[nIndex].strRecipeFile;
|
DeleteFile(strFilename);
|
|
// delete recipe model file
|
strFilename = TRIANGLE_RECIPE_PATH;
|
strFilename += m_vectorRecipeInfo[nIndex].strModelFile;
|
DeleteFile(strFilename);
|
|
UINT nSize = (UINT)m_vectorRecipeInfo.size();
|
for (UINT i=nIndex; i<m_vectorRecipeInfo.size()-1; i++)
|
{
|
m_vectorRecipeInfo[i] = m_vectorRecipeInfo[i+1];
|
}
|
m_vectorRecipeInfo.resize(nSize-1);
|
}
|
|
// delete recipe triangle
|
if (nIndex < m_vectorRecipeTriangle.size())
|
{
|
UINT nSize = (UINT)m_vectorRecipeTriangle.size();
|
for (UINT i=nIndex; i<m_vectorRecipeTriangle.size()-1; i++)
|
{
|
m_vectorRecipeTriangle[i] = m_vectorRecipeTriangle[i+1];
|
}
|
m_vectorRecipeTriangle.resize(nSize-1);
|
}
|
|
return;
|
}
|