// CFTTAndroidGraphicsSettings - [2020-04-13 11:57:46]
#ifndef _CFTTANDROIDGRAPHICSSETTINGS_H_
#define _CFTTANDROIDGRAPHICSSETTINGS_H_

#include "CGPUDatabaseMode.h"

/*
0026A75C CFTTAndroidGraphicsSettings::ShowGraphicsOptions()
0026A7B4 CFTTAndroidGraphicsSettings::SettingsNeedReboot(EAndroidGraphicsSettingsFPS,EAndroidGraphicsSettingsQuality,EAndroidGraphicsSettingsAPI)
0026A820 CFTTAndroidGraphicsSettings::ApplySettings(EAndroidGraphicsSettingsFPS,EAndroidGraphicsSettingsQuality,EAndroidGraphicsSettingsAPI)
0026A890 CFTTAndroidGraphicsSettings::GetAutoSetting(EAndroidGraphicsSettingsOption)
0026A898 CFTTAndroidGraphicsSettings::OptionAvailable(EAndroidGraphicsSettingsOption,int)
0026A900 CFTTAndroidGraphicsSettings::UserHasChoice(EAndroidGraphicsSettingsOption)
0026A938 CFTTAndroidGraphicsSettings::GetUserSetting(EAndroidGraphicsSettingsOption)
0026A9A4 CFTTAndroidGraphicsSettings::SetFPSAutoChoice(EAndroidGraphicsSettingsFPS)
0026AA94 CFTTAndroidGraphicsSettings::SetQualityChoice(EAndroidGraphicsSettingsQuality,bool *)
0026AABA CFTTAndroidGraphicsSettings::ApplyGPUDatabaseOverride(char const*,char const*,CGPUDatabaseMode const&,EAndroidGraphicsSettingsQuality,int &)
0026AB4C CFTTAndroidGraphicsSettings::LookupDatabaseScore(char const*,char const*,int &,int &,int &,int &)
*/

enum EAndroidGraphicsSettingsFPS {
  EAndroidGraphicsSettingsFPS_0,
  EAndroidGraphicsSettingsFPS_1,
  EAndroidGraphicsSettingsFPS_2,
  EAndroidGraphicsSettingsFPS_3,
  EAndroidGraphicsSettingsFPS_4,
  EAndroidGraphicsSettingsFPS_5,
};

enum EAndroidGraphicsSettingsQuality {
  EAndroidGraphicsSettingsQuality_ERR = -1,
  EAndroidGraphicsSettingsQuality_0 = 0,
  EAndroidGraphicsSettingsQuality_FAST,
  EAndroidGraphicsSettingsQuality_BALANCED,
  EAndroidGraphicsSettingsQuality_HIGH,
  EAndroidGraphicsSettingsQuality_4,
  EAndroidGraphicsSettingsQuality_5,
};

enum EAndroidGraphicsSettingsAPI {
  EAndroidGraphicsSettingsAPI_0,
  EAndroidGraphicsSettingsAPI_1,
  EAndroidGraphicsSettingsAPI_2,
  EAndroidGraphicsSettingsAPI_3,
  EAndroidGraphicsSettingsAPI_4,
  EAndroidGraphicsSettingsAPI_5,
};

enum EAndroidGraphicsSettingsOption {
  EAndroidGraphicsSettingsOption_0,
  EAndroidGraphicsSettingsOption_1,
  EAndroidGraphicsSettingsOption_2,
  EAndroidGraphicsSettingsOption_3,
  EAndroidGraphicsSettingsOption_4,
  EAndroidGraphicsSettingsOption_5,
};

class CFTTAndroidGraphicsSettings {
public:
  // 0026A75C
  static bool ShowGraphicsOptions();

  // 0026A7B4
  static bool SettingsNeedReboot(EAndroidGraphicsSettingsFPS,
                                 EAndroidGraphicsSettingsQuality,
                                 EAndroidGraphicsSettingsAPI);

  // 0026A820
  static int ApplySettings(EAndroidGraphicsSettingsFPS,
                           EAndroidGraphicsSettingsQuality,
                           EAndroidGraphicsSettingsAPI);

  // 0026A890
  static int GetAutoSetting(EAndroidGraphicsSettingsOption);

  // 0026A898
  static bool OptionAvailable(EAndroidGraphicsSettingsOption, int);

  // 0026A900
  static bool UserHasChoice(EAndroidGraphicsSettingsOption);

  // 0026A938
  static int GetUserSetting(EAndroidGraphicsSettingsOption);

  // 0026A9A4
  static void SetFPSAutoChoice(EAndroidGraphicsSettingsFPS eFPS);

  // 0026AA94
  static void SetQualityChoice(EAndroidGraphicsSettingsQuality, bool *);

  // 0026AABA
  static int ApplyGPUDatabaseOverride(char const *pDbFile0,
                                      char const *pModel1,
                                      CGPUDatabaseMode const &pGPUDatabase2,
                                      EAndroidGraphicsSettingsQuality eQuality3,
                                      int &a4);  //??? 返回值 可能是 EAndroidGraphicsSettingsQuality

  // 0026AB4C
  static bool LookupDatabaseScore(char const *,
                                  char const *,
                                  int &,
                                  int &,
                                  int &,
                                  int &);
};

#endif  //_CFTTANDROIDGRAPHICSSETTINGS_H_