//CGameLoop - [2020-04-13 11:57:46]
#ifndef _CGAMELOOP_H_
#define _CGAMELOOP_H_

#include "CPlayer.h"

/*
0015A6F0 CGameLoop::Run()
0015A78C CGameLoop::SetToFinish(bool)
0015A7AC CGameLoop::Finish()
0015A808 CGameLoop::UnPause()
0015A81C CGameLoop::Pause(int,EPauseType,EFEScreen)
0015A854 CGameLoop::PlayerObjectsUpdate()
0015A914 CGameLoop::ObjectAdd(int,int)
0015A950 CGameLoop::ObjectsInit()
0015AB1C CGameLoop::InitPitchPhysics()
0015AB80 CGameLoop::ResetTeamPlayers()
0015ABF8 CGameLoop::InitGameVars()
0015AF1C CGameLoop::InitObjects()
0015AF2C CGameLoop::InitLogic()
0015AFBC CGameLoop::ExcludeAllPlayers()
0015AFE0 CGameLoop::ExcludePlayer(CPlayer *,bool)
0015B034 CGameLoop::UnExcludeAllPlayers(bool)
0015B064 CGameLoop::UnExcludePlayer(CPlayer *,bool)
*/

extern bool isRunning_3A22A9;
extern bool isFinish_3A22A0;
extern bool byte_3A22A8;
extern int dword_3A2208;
extern uint16 word_3A22A6;
extern bool byte_3A22AA;

enum EPauseType {
  EPauseType_0,
  EPauseType_1,
  EPauseType_2,
  EPauseType_3,
  EPauseType_4,
  EPauseType_5,
};

enum EFEScreen {
  EFEScreen_0,
  EFEScreen_1,
  EFEScreen_2,
  EFEScreen_3,
  EFEScreen_4,
  EFEScreen_5,
  EFEScreen_6,
  EFEScreen_7,
  EFEScreen_8,
  EFEScreen_9,
  EFEScreen_10,
  EFEScreen_11,
  EFEScreen_12,
  EFEScreen_13,
  EFEScreen_14,
  EFEScreen_15,
  EFEScreen_16,
};

class CGameLoop {
public:
  void Run();                                     //0015A6F0
  static void SetToFinish(bool);                         //0015A78C
  void Finish();                                  //0015A7AC
  static void UnPause();                          //0015A808
  static void Pause(int, EPauseType, EFEScreen);  //0015A81C
  static void PlayerObjectsUpdate();                     //0015A854
  static CPlayer* ObjectAdd(int, int);                       //0015A914
  static void ObjectsInit();                             //0015A950
  static void InitPitchPhysics();                 //0015AB1C
  static void ResetTeamPlayers();                        //0015AB80
  static void InitGameVars();                            //0015ABF8
  static void InitObjects();                      //0015AF1C
  static void InitLogic();                        //0015AF2C
  void ExcludeAllPlayers();                       //0015AFBC
  static void ExcludePlayer(CPlayer *, bool);            //0015AFE0
  static void UnExcludeAllPlayers(bool);                 //0015B034
  static void UnExcludePlayer(CPlayer *, bool);          //0015B064

  static bool s_bPaused;
  static EPauseType s_ePauseType;
};

#endif  //_CGAMELOOP_H_