jedi-outcast/utils/Assimilate/AssimilateDoc.h

185 lines
4.8 KiB
C++

// AssimilateDoc.h : interface of the CAssimilateDoc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_ASSIMILATEDOC_H__2CCA554A_2AD3_11D3_82E0_0000C0366FF2__INCLUDED_)
#define AFX_ASSIMILATEDOC_H__2CCA554A_2AD3_11D3_82E0_0000C0366FF2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
enum
{
TK_AS_GRABINIT = TK_USERDEF,
TK_AS_GRAB,
TK_AS_GRAB_GLA,
TK_AS_FILL,
TK_AS_ACTION,
TK_AS_SOUND,
TK_AS_ENUM,
TK_AS_GRABFINALIZE,
TK_AS_CONVERT,
TK_AS_CONVERTMDX,
TK_AS_CONVERTMDX_NOASK,
TK_AS_FRAMES,
TK_AS_PLAYERPARMS,
TK_AS_SCALE,
TK_AS_PCJ,
TK_AS_KEEPMOTION,
TK_AS_ORIGIN,
TK_AS_SMOOTH,
TK_AS_LOSEDUPVERTS,
TK_AS_MAKESKIN,
TK_AS_IGNOREBASEDEVIATIONS,
TK_AS_SKEW90,
TK_AS_NOSKEW90,
TK_AS_SKEL,
TK_AS_MAKESKEL,
TK_AS_LOOP,
TK_AS_ADDITIONAL,
TK_AS_PREQUAT,
TK_AS_FRAMESPEED,
TK_AS_QDSKIPSTART, // useful so qdata can quickly skip extra stuff without having to know the syntax of what to skip
TK_AS_QDSKIPSTOP,
TK_AS_GENLOOPFRAME,
TK_DOLLAR,
TK_UNDERSCORE,
TK_DASH,
TK_DOT,
TK_SLASH,
TK_BACKSLASH,
};
enum
{
AS_NOTHING,
AS_NEWFILE,
AS_DELETECONTENTS,
AS_FILESUPDATED,
};
enum
{
TABLE_ANY,
TABLE_QDT,
TABLE_GRAB,
TABLE_CONVERT,
};
class CAssimilateDoc : public CDocument
{
protected: // create from serialization only
CAssimilateDoc();
DECLARE_DYNCREATE(CAssimilateDoc)
// Attributes
public:
static LPCTSTR GetKeyword(int token, int table = 0);
// Operations
public:
int GetNumModels();
CModel* GetFirstModel();
void Resequence();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAssimilateDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual void DeleteContents();
virtual BOOL DoFileSave();
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
virtual BOOL OnOpenDocument_Actual(LPCTSTR lpszPathName, bool bCheckOut) ;
virtual void OnCloseDocument();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CAssimilateDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
void ClearModelUserSelectionBools();
CModel *GetCurrentUserSelectedModel();
void DeleteModel(CModel *deleteModel);
protected:
void Init();
void Parse(CFile* file);
void Parse(LPCSTR psFilename);
void Write(CFile* file);
void AddFile(LPCTSTR name);
CModel* AddModel();
void EndModel();
void ParseGrab(CTokenizer* tokenizer, int iGrabType);
void ParseConvert(CTokenizer* tokenizer, int iTokenType);
void AddComment(LPCTSTR comment);
bool Validate(bool bInfoBoxAllowed = false, int iLODLevel = 0);
bool Build(bool bAllowedToShowSuccessBox, int iLODLevel, bool bSkipSave);
bool WriteCFGFiles(bool bPromptForNames, bool &bCFGWritten);
CComment* m_comments;
CModel* m_modelList;
CModel* m_curModel; // fixme: update this in either usage or label to say only Mike's code uses it during loading, not elsewhere
CModel* m_lastModel;
static keywordArray_t s_Symbols[];
static keywordArray_t s_Keywords[];
static keywordArray_t s_grabKeywords[];
static keywordArray_t s_convertKeywords[];
// Generated message map functions
protected:
//{{AFX_MSG(CAssimilateDoc)
afx_msg void OnAddfiles();
afx_msg void OnExternal();
afx_msg void OnResequence();
afx_msg void OnBuild();
afx_msg void OnBuildMultiLOD();
afx_msg void OnValidate();
afx_msg void OnCarWash();
afx_msg void OnCarWashActual();
afx_msg void OnValidateMultiLOD();
afx_msg void OnViewAnimEnums();
afx_msg void OnUpdateViewAnimEnums(CCmdUI* pCmdUI);
afx_msg void OnViewFrameDetails();
afx_msg void OnUpdateViewFrameDetails(CCmdUI* pCmdUI);
afx_msg void OnUpdateResequence(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI);
afx_msg void OnUpdateExternal(CCmdUI* pCmdUI);
afx_msg void OnUpdateValidate(CCmdUI* pCmdUI);
afx_msg void OnUpdateBuild(CCmdUI* pCmdUI);
afx_msg void OnEditBuildall();
afx_msg void OnEditBuildDependant();
afx_msg void OnViewFramedetailsonadditionalsequences();
afx_msg void OnUpdateViewFramedetailsonadditionalsequences(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditBuilddependant(CCmdUI* pCmdUI);
afx_msg void OnEditLaunchmodviewoncurrent();
afx_msg void OnUpdateEditLaunchmodviewoncurrent(CCmdUI* pCmdUI);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
extern bool gbCarWash_YesToXSIScan;
extern bool gbCarWash_DoingScan;
extern CString strCarWashErrors;
bool SendToNotePad(LPCSTR psWhatever, LPCSTR psLocalFileName);
#endif // !defined(AFX_ASSIMILATEDOC_H__2CCA554A_2AD3_11D3_82E0_0000C0366FF2__INCLUDED_)