// CLegacyLitShader - [2020-04-13 11:57:46]
#ifndef _CLEGACYLITSHADER_H_
#define _CLEGACYLITSHADER_H_

#include "common.h"
#include "CFTTUberShader.h"

/*
001CFD04 CLegacyLitShader::CLegacyLitShader()
001CFD10 CLegacyLitShader::~CLegacyLitShader()
00180B08 CLegacyLitShader::SetTex1(CFTTTexParam,int)
0018C16C CLegacyLitShader::SetInvLightDirection(CFTTVector32 const*)
0018C178 CLegacyLitShader::SetLightDiffuse(CFTTVector32 const*)
0018C184 CLegacyLitShader::SetGlobalAmbient(CFTTVector32 const&)
0018C190 CLegacyLitShader::SetLightSpecular(CFTTVector32 const*)
00194CB8 CLegacyLitShader::SetTex2(CFTTTexParam,int)
001CFD14 CLegacyLitShader::CreateMat(ELegacyLitShader_Skinning,ELegacyLitShader_SpecPow,ELegacyLitShader_VertCol,ELegacyLitShader_TexMode,CFTTVector32 const&,CFTTVector32 const&,CFTTVector32 const&,CFTTVector32x4 const&,float,CFTTTexParam,CFTTTexParam,ELegacyLitShader_BlendMode,ELegacyLitShader_CullMode)
*/

enum ELegacyLitShader_Skinning {
  ELegacyLitShader_Skinning_0,
  ELegacyLitShader_Skinning_1,
  ELegacyLitShader_Skinning_2,
  ELegacyLitShader_Skinning_3,
  ELegacyLitShader_Skinning_4,
  ELegacyLitShader_Skinning_5,
};

enum ELegacyLitShader_SpecPow {
  ELegacyLitShader_SpecPow_0,
  ELegacyLitShader_SpecPow_1,
  ELegacyLitShader_SpecPow_2,
  ELegacyLitShader_SpecPow_3,
  ELegacyLitShader_SpecPow_4,
  ELegacyLitShader_SpecPow_5,
};

enum ELegacyLitShader_VertCol {
  ELegacyLitShader_VertCol_0,
  ELegacyLitShader_VertCol_1,
  ELegacyLitShader_VertCol_2,
  ELegacyLitShader_VertCol_3,
  ELegacyLitShader_VertCol_4,
  ELegacyLitShader_VertCol_5,
};

enum ELegacyLitShader_TexMode {
  ELegacyLitShader_TexMode_0,
  ELegacyLitShader_TexMode_1,
  ELegacyLitShader_TexMode_2,
  ELegacyLitShader_TexMode_3,
  ELegacyLitShader_TexMode_4,
  ELegacyLitShader_TexMode_5,
};

enum ELegacyLitShader_BlendMode {
  ELegacyLitShader_BlendMode_0,
  ELegacyLitShader_BlendMode_1,
  ELegacyLitShader_BlendMode_2,
  ELegacyLitShader_BlendMode_3,
  ELegacyLitShader_BlendMode_4,
  ELegacyLitShader_BlendMode_5,
};

enum ELegacyLitShader_CullMode {
  ELegacyLitShader_CullMode_0,
  ELegacyLitShader_CullMode_1,
  ELegacyLitShader_CullMode_2,
  ELegacyLitShader_CullMode_3,
  ELegacyLitShader_CullMode_4,
  ELegacyLitShader_CullMode_5,
};

class CLegacyLitShader : public CFTTUberShader {
public:
  CLegacyLitShader();                                        // 001CFD04
  ~CLegacyLitShader();                                       // 001CFD10
  void SetTex1(CFTTTexParam aTexParam, int a2);              // 00180B08
  void SetInvLightDirection(CFTTVector32 const* pVector32);  // 0018C16C
  void SetLightDiffuse(CFTTVector32 const* pVector32);       // 0018C178
  void SetGlobalAmbient(CFTTVector32 const& pVector32);      // 0018C184
  void SetLightSpecular(CFTTVector32 const* pVector32);      // 0018C190
  void SetTex2(CFTTTexParam aTexParam, int a2);              // 00194CB8
  ushort CreateMat(ELegacyLitShader_Skinning eSkinning,
                   ELegacyLitShader_SpecPow eSpecPow,
                   ELegacyLitShader_VertCol eVertCol,
                   ELegacyLitShader_TexMode eTexMode,
                   CFTTVector32 const& pVector32_1,
                   CFTTVector32 const& pVector32_2,
                   CFTTVector32 const& pVector32_3,
                   CFTTVector32x4 const& pVector32x4,
                   float f,
                   CFTTTexParam aTexParam1,
                   CFTTTexParam aTexParam2,
                   ELegacyLitShader_BlendMode eBlendMode,
                   ELegacyLitShader_CullMode eCullMode);  // 001CFD14

  static CLegacyLitShader s_tInstance;
};

#endif  //_CLEGACYLITSHADER_H_