/*=========================================================================
 *
 * DFARCH3D.H - Dave Humphrey (uesp@m0use.net), 29 October 2000
 *
 *=======================================================================*/
#ifndef __DFARCH3D_H
#define __DFARCH3D_H


	/* Required Includes */
#include "dfbsa.h"
#include "df3dobj.h"


/*=========================================================================
 *
 * Begin Defines
 *
 *=======================================================================*/

	/* Number of objects allowed in the arch3d file */
  #define DFARCH_MAX_3DOBJECTS 11000

/*=========================================================================
 *		End of Defines
 *=======================================================================*/


/*=========================================================================
 *
 * Begin Type and Structure Definitions
 *
 *=======================================================================*/

/*=========================================================================
 *		End of Type and Structure Definitions
 *=======================================================================*/


/*=========================================================================
 *
 * Class CDFArch3D Definition
 *
 * Contains methods needed to manipulate Daggerfall's ARCH3D.BSA file.
 * Based on the CDFBSAFile class.
 *
 *=======================================================================*/
class CDFArch3D : public virtual CDFBSAFile {

  /*---------- Begin Protected Class Members ---------------------*/
protected:
  CDF3DObject** p3DObjects;	/* Pointer to an array of pointer objects */


  /*---------- Begin Protected Class Methods ---------------------*/
protected:

	/* Creates a 3D Object pointer */
  virtual void Create3DObject (const int RecordIndex);

  
  /*---------- Begin Public Class Methods ------------------------*/
public:

	/* Class Constructor/Destructor */
  CDFArch3D();
  ~CDFArch3D();
  void Destroy (void);

	/* Compares two 3D object records */
  int DebugCompare      (const long ValueID,     CDF3DObject* p3DObject);
  int DebugCompareIndex (const int  RecordIndex, CDF3DObject* p3DObject);

	/* Get/load a 3DObject */
  CDF3DObject* Get3DObject (const long ValueID);
  CDF3DObject* Get3DObject (const int  RecordIndex);

	/* Load one 3d object from the file */
  boolean Load3DObject      (const long ValueID);
  boolean Load3DObjectIndex (const int  RecordIndex);

 };
/*=========================================================================
 *		End of Class CDFArch3D Definition
 *=======================================================================*/



#endif
/*=========================================================================
 *		End of File DFARCH3D.H
 *=======================================================================*/