// CGfxCrowd - [2020-04-13 11:57:46]
#ifndef _CGFXCROWD_H_
#define _CGFXCROWD_H_

#include "CFTTModel.h"

/*
0019691C CGfxCrowd::CGfxCrowd()
00196A10 CGfxCrowd::~CGfxCrowd()
001968CC CGfxCrowd::Initialise()
001968EC CGfxCrowd::Shutdown()
0019690C CGfxCrowd::Get()
00196AF8 CGfxCrowd::Shut()
00196E72 CGfxCrowd::Init()
00197140 CGfxCrowd::AddStand(CFTTModel *,CFTTMatrix32)
00199D4C CGfxCrowd::GetCapacity(CFTTModel *,CFTTMatrix32)
00199E08 CGfxCrowd::AssessDesirability(TGfxCrowdSeat &)
00199E3C CGfxCrowd::AssessDesirability(TGfxCrowdSeat &,bool)
00199ED0 CGfxCrowd::Distribute(uint)
0019CBA0 CGfxCrowd::UpdateCrowdTextures(uint)
0019F7E4 CGfxCrowd::Render()
0019F85C CGfxCrowd::RenderSteward()
0019F990 CGfxCrowd::RenderStatic()
0019FCC8 CGfxCrowd::RenderDynamic()
001A101C CGfxCrowd::Process()
001A12C8 CGfxCrowd::GetCrowdState(float &,float &,float &)
001A12E6 CGfxCrowd::GetCapacity()
001A12EA CGfxCrowd::GetTextureCreationData()
001A12F0 CGfxCrowd::GetCrowdValue(ECrowdMemberType)
001A12FC CGfxCrowd::SetCrowdValue(ECrowdMemberType,float)

0xCBD4
*/

struct TGfxCrowdSeat {
  int un_0;
};

enum ECrowdMemberType {
  ECrowdMemberType_0,
  ECrowdMemberType_1,
  ECrowdMemberType_2,
  ECrowdMemberType_3,
  ECrowdMemberType_4,
  ECrowdMemberType_5,
};

struct StructCGfxCrowd_D0 {
  int m_field_0;
  int m_field_4;
  int m_field_8;
  int m_field_C;
  int m_field_10;
  int m_field_14;
  int m_field_18;
  int m_field_1C;
  int m_field_20;
  int m_field_24;
  int m_field_28;
  CFTTModel *m_field_2C;
  CFTTModel *m_field_30;
  int m_field_34;
  int m_field_38;
  int m_field_3C;
  int m_field_40;
  int m_field_44;
  int m_field_48;
  int m_field_4C;
  int m_field_50;
  int m_field_54;
  int m_field_58;
  int m_field_5C;
  int m_field_60;
  int m_field_64;
  int m_field_68;
  int m_field_6C;
  int m_field_70;
  char dat[0xCA90];
};
class CGfxCrowd {
public:
  CGfxCrowd();                                     // 0019691C
  ~CGfxCrowd();                                    // 00196A10
  static void Initialise();                        // 001968CC
  static void Shutdown();                          // 001968EC
  static CGfxCrowd *Get();                         // 0019690C
  static void Shut();                              // 00196AF8
  void Init();                                     // 00196E72
  void AddStand(CFTTModel *, CFTTMatrix32);        // 00197140
  void GetCapacity(CFTTModel *, CFTTMatrix32);     // 00199D4C
  void AssessDesirability(TGfxCrowdSeat &);        // 00199E08
  void AssessDesirability(TGfxCrowdSeat &, bool);  // 00199E3C
  void Distribute(uint);                           // 00199ED0
  static void UpdateCrowdTextures(uint);           // 0019CBA0
  void Render();                                   // 0019F7E4
  void RenderSteward();                            // 0019F85C
  void RenderStatic();                             // 0019F990
  void RenderDynamic();                            // 0019FCC8
  void Process();                                  // 001A101C
  void GetCrowdState(float &, float &, float &);   // 001A12C8
  void GetCapacity();                              // 001A12E6
  void GetTextureCreationData();                   // 001A12EA
  void GetCrowdValue(ECrowdMemberType);            // 001A12F0
  void SetCrowdValue(ECrowdMemberType, float);     // 001A12FC

  char dat[0xD0];
  StructCGfxCrowd_D0 *m_st_D0;

  // uchar dat[0xCBD4];

  static CGfxCrowd *ms_pInstance;
};

#endif  //_CGFXCROWD_H_