135 lines
3.7 KiB
C++
135 lines
3.7 KiB
C++
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Crytek Engine Source File.
|
|
// Copyright (C), Crytek Studios, 2002.
|
|
// -------------------------------------------------------------------------
|
|
// File name: errorreport.h
|
|
// Version: v1.00
|
|
// Created: 30/5/2003 by Timur.
|
|
// Compilers: Visual Studio.NET
|
|
// Description: Class that collects error reports to present them later.
|
|
// -------------------------------------------------------------------------
|
|
// History:
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __errorreport_h__
|
|
#define __errorreport_h__
|
|
#pragma once
|
|
|
|
// forward declarations.
|
|
class CBaseObject;
|
|
class CMaterial;
|
|
class CParticleItem;
|
|
|
|
/*! Single error entry in error report.
|
|
*/
|
|
class CErrorRecord
|
|
{
|
|
public:
|
|
enum ESeverity
|
|
{
|
|
ESEVERITY_ERROR,
|
|
ESEVERITY_WARNING,
|
|
ESEVERITY_COMMENT
|
|
};
|
|
enum EFlags
|
|
{
|
|
FLAG_NOFILE = 0x0001, // Indicate that required file was not found.
|
|
FLAG_SCRIPT = 0x0002, // Error with scripts.
|
|
FLAG_TEXTURE = 0x0004, // Error with scripts.
|
|
FLAG_OBJECTID = 0x0008, // Error with object Ids, Unresolved/Duplicate etc...
|
|
FLAG_AI = 0x0010, // Error with AI.
|
|
};
|
|
//! Severety of this error.
|
|
ESeverity severity;
|
|
//! Module of error.
|
|
EValidatorModule module;
|
|
//! Error Text.
|
|
CString error;
|
|
//! File which is missing or causing problem.
|
|
CString file;
|
|
//! More detailed description for this error.
|
|
CString description;
|
|
//! Object that caused this error.
|
|
CBaseObject *pObject;
|
|
//! Material that caused this error.
|
|
CMaterial *pMaterial;
|
|
//! Particle item.
|
|
CParticleItem *pParticle;
|
|
int flags;
|
|
|
|
CErrorRecord()
|
|
{
|
|
severity = ESEVERITY_WARNING;
|
|
module = VALIDATOR_MODULE_EDITOR;
|
|
pObject = 0;
|
|
pMaterial = 0;
|
|
pParticle = 0;
|
|
flags = 0;
|
|
}
|
|
CString GetErrorText();
|
|
};
|
|
|
|
/*! Error report manages collection of errors occured duruing map analyzes or level load.
|
|
*/
|
|
class CErrorReport : public IValidator
|
|
{
|
|
public:
|
|
CErrorReport();
|
|
|
|
//! If enabled errors are reported immidiatly and not stored.
|
|
void SetImmidiateMode( bool bEnable );
|
|
bool IsImmidiateMode() const { return m_bImmidiateMode; };
|
|
|
|
//! Adds new error to report.
|
|
void ReportError( CErrorRecord &err );
|
|
|
|
//! Check if error report have any errors.
|
|
bool IsEmpty() const;
|
|
|
|
//! Get number of contained error records.
|
|
int GetErrorCount() const { return m_errors.size(); };
|
|
//! Get access to indexed error record.
|
|
CErrorRecord& GetError( int i );
|
|
//! Clear all error records.
|
|
void Clear();
|
|
|
|
//! Display dialog with all errors.
|
|
void Display();
|
|
|
|
//! Assign current Object to which new reported warnings are assigned.
|
|
void SetCurrentValidatorObject( CBaseObject *pObject );
|
|
//! Assign current Material to which new reported warnings are assigned.
|
|
void SetCurrentValidatorMaterial( CMaterial *pMtl );
|
|
//! Assign current ParticleItem to which new reported warnings are assigned.
|
|
void SetCurrentValidatorParticle( CParticleItem *pParticle );
|
|
//! Assign current filename.
|
|
void SetCurrentFile( const CString &file );
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Implement IValidator interface.
|
|
//////////////////////////////////////////////////////////////////////////
|
|
virtual void Report( SValidatorRecord &record );
|
|
|
|
private:
|
|
//! Array of all error records added to report.
|
|
std::vector<CErrorRecord> m_errors;
|
|
bool m_bImmidiateMode;
|
|
CBaseObject* m_pObject;
|
|
CMaterial* m_pMaterial;
|
|
CParticleItem *m_pParticle;
|
|
CString m_currentFilename;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//! Automatic class to record and display error.
|
|
class CErrorsRecorder
|
|
{
|
|
public:
|
|
CErrorsRecorder();
|
|
~CErrorsRecorder();
|
|
};
|
|
|
|
#endif // __errorreport_h__
|