//CFESChooseSideHero - [2020-04-13 11:57:46]
#ifndef _CFESCHOOSESIDEHERO_H_
#define _CFESCHOOSESIDEHERO_H_

#include "CFE3DPlayer.h"
#include "CFEHeroScene.h"
#include "CFEScreen.h"
#include "CGfxPostProcessRenderer.h"
#include "common.h"
#include "render.h"

/*
0012694C CFESChooseSideHero::CFESChooseSideHero()
00126994 CFESChooseSideHero::~CFESChooseSideHero()
00126998 CFESChooseSideHero::~CFESChooseSideHero()
001269A8 CFESChooseSideHero::Init()
00126C00 CFESChooseSideHero::UseMinimalScene()
00126C18 CFESChooseSideHero::SetupPlayers()
00126DB4 CFESChooseSideHero::LocaliseCommonCountryList()
00126E10 CFESChooseSideHero::SetupSelectText(int,float,bool)
00126EB0 CFESChooseSideHero::Exit()
00126F24 CFESChooseSideHero::ProcessChoosePlayer()
00126FEC CFESChooseSideHero::SetupNationality()
001271B4 CFESChooseSideHero::ProcessPlayer()
00127318 CFESChooseSideHero::UpdateCamera()
00127470 CFESChooseSideHero::UpdatePosition()
001274D8 CFESChooseSideHero::Process()
0012778C CFESChooseSideHero::ShutdownNationality()
001277A8 CFESChooseSideHero::ProcessNationality()
001277CE CFESChooseSideHero::Render2D()
001277D0 CFESChooseSideHero::SetupCamera(bool)
001278D8 CFESChooseSideHero::PreRender3D()
001279A8 CFESChooseSideHero::Render3D()
001279C0 CFESChooseSideHero::RenderScene(EGfxRenderPass)
00127A9C CFESChooseSideHero::Render2DHUD()
00127C30 CFESChooseSideHero::SetNationalKit()
00127C9C CFESChooseSideHero::BackButtonPressed()

0x420
*/

//函数分为两类: 成员函数和静态成员函数
//成员函数必会调用构造函数或者内联构造函数
//通过分析发现不会调用构造函数，同时假设不会内联构造函数，那么得到结论: 成员函数未被调用到
//通过分析发现，静态成员函数只被成员函数调用到，那么得出结论: 静态成员函数未被调用到
//注意:BackButtonPressed函数未被分析，所以BackButtonPressed不确定是否会被调用到


class CFESChooseSideHero : public CFEScreen, public CGfxPostProcessRenderer {
public:
  CFESChooseSideHero();                    //0012694C
  ~CFESChooseSideHero();                   //00126994 00126998
  virtual void Init();                     //001269A8
  static void UseMinimalScene();           //00126C00
  void SetupPlayers();                     //00126C18
  static void LocaliseCommonCountryList(); //00126DB4
  void SetupSelectText(int, float, bool);  //00126E10
  virtual void Exit();                     //00126EB0
  void ProcessChoosePlayer();              //00126F24
  void SetupNationality();                 //00126FEC
  void ProcessPlayer();                    //001271B4
  void UpdateCamera();                     //00127318
  void UpdatePosition();                   //00127470
  virtual void Process();                  //001274D8
  void ShutdownNationality();              //0012778C
  static void ProcessNationality();        //001277A8
  virtual void Render2D();                 //001277CE
  void SetupCamera(bool);                  //001277D0
  virtual void PreRender3D();              //001278D8
  virtual void Render3D();                 //001279A8
  void RenderScene(EGfxRenderPass);        //001279C0
  virtual void Render2DHUD();              //00127A9C
  void SetNationalKit();                   //00127C30
  static void BackButtonPressed();         //00127C9C

  //size 0x420
  //父类 CFEScreen
  //vtable 0x0
  //CUITileManager* m_pUITileManager_4;
  //bool m_bfield_8;
  //int dId_C;
  //父类 CGfxPostProcessRenderer
  //vtable 0x10
  int field_14[6];
  TPlayerInfo tplayerinfo_2c[6];
  CFE3DPlayer *p_cfe3dpayer_344[6];
  int field_35c; //分析未知，凑数
  TPoint3D tpoint3d_360[6];
  int field_3a8[4];
  int field_3b8;
  int field_3bc;
  TBuildKitTeamTextures tbuildkitteamtextures_3c0;
  int field_3c4;
  int field_3c8[4]; //分析未知，凑数
  int field_3d8;
  ushort field_3dc; //00127C3A
  ushort field_3de; //不确定是否存在
  float field_3e0;
  float field_3e4;
  float field_3e8;
  float field_3ec;
  float field_3f0;
  float field_3f4;
  int field_3f8[4];
  int field_408;
  int field_40c; ////分析未知，凑数
  CFEHeroScene *p_cfeheroscence_410;
  int field_414;
  bool field_418;
  int field_41c;

  static bool ms_bBackButtonPressed;
};

#endif //_CFESCHOOSESIDEHERO_H_