// CResourceManager - [2020-04-13 11:57:47]
#ifndef _CRESOURCEMANAGER_H_
#define _CRESOURCEMANAGER_H_

#include "common.h"
#include "CFTTRenderToTexture.h"
#include "CFTTGraphicsDevice.h"
#include "CFTTRenderToTexture.h"

/*
0018B008 CResourceManager::Initialise()
0018B020 CResourceManager::Cleanup()
0018B024 CResourceManager::CreateRenderToTexture(CFTTRenderToTexture **,CFTTRTTSetup,bool)
0018B12C CResourceManager::CreateRenderToTexture(CFTTRenderToTexture **,EFTTTexFormat,int,int,uint,int,EFTTRTTZBufMode,bool)
0018B1B0 CResourceManager::DeleteRenderToTexture(CFTTRenderToTexture *)
0018B200 CResourceManager::CreateVolatileResources()
0018B2F8 CResourceManager::CreateManagedResources()
0018B2FC CResourceManager::DeleteVolatileResources()
0018B364 CResourceManager::DeleteManagedResources()
*/

struct RTT {
  EFTTTexFormat eTexFormat_0;
  EFTTTextureType eTextureType_4;
  int field_8;   // width
  int field_C;   // height
  int field_10;  // count
  int field_14;
  bool bool_18;
  bool bool_19;
  RTT *pRTT_1C;
  EFTTRTTZBufMode eRTTZBufMode_20;
  int field_24;
  CFTTRenderToTexture **ppRenderToTexture_28;
  CFTTTexture *pTexture_2C;
};

class CResourceManager {
public:
  static void Initialise();  // 0018B008
  static void Cleanup();     // 0018B020
  static void CreateRenderToTexture(CFTTRenderToTexture **ppR2T,
                                    CFTTRTTSetup setup,
                                    bool b);  // 0018B024

  static void CreateRenderToTexture(CFTTRenderToTexture **,
                                    EFTTTexFormat,
                                    int,
                                    int,
                                    uint,
                                    int,
                                    EFTTRTTZBufMode,
                                    bool);                       // 0018B12C
  static void DeleteRenderToTexture(CFTTRenderToTexture *pR2T);  // 0018B1B0
  static int CreateVolatileResources();                          // 0018B200
  static int CreateManagedResources();                           // 0018B2F8
  static int DeleteVolatileResources();                          // 0018B2FC
  static int DeleteManagedResources();                           // 0018B364

  static RTT s_tRTTs[96];  // 0045FDC8
};

#endif  //_CRESOURCEMANAGER_H_