//CStoryProfileStages - [2020-04-13 11:57:47]
#ifndef _CSTORYPROFILESTAGES_H_
#define _CSTORYPROFILESTAGES_H_

#include "CFTTSerialize.h"
#include "CSeason.h"
#include "CStage.h"
#include "TPlayerInfoLight.h"
#include "TStorySeason.h"
/*
001E85E6 CStoryProfileStages::CStoryProfileStages(bool)
001E85F8 CStoryProfileStages::SetupMemory()
001E86FC CStoryProfileStages::GetSeasonCount()
001E8724 CStoryProfileStages::GetSeasonPointer(int)
001E8798 CStoryProfileStages::SetupStages()
001E8820 CStoryProfileStages::~CStoryProfileStages()
001E8840 CStoryProfileStages::Serialize(CFTTSerialize &,int,bool)
001E89A8 CStoryProfileStages::ValidateStages(int,int,bool)
001E8A74 CStoryProfileStages::HaveIDError()
001E8AA4 CStoryProfileStages::ValidateAndFix()
001E8B64 CStoryProfileStages::GetSizeOf()
001E8B84 CStoryProfileStages::AddNewSeasonsAndStages()
001E8C70 CStoryProfileStages::AddSeasonFromConfig(int)
001E8CE8 CStoryProfileStages::GetStage(int)
001E8D4C CStoryProfileStages::GetSeasonComplete(int)
001E8DEC CStoryProfileStages::HaveSeason()
001E8E00 CStoryProfileStages::GetStagesComplete(int)
001E8E90 CStoryProfileStages::AreWithinSideStoryTime(bool,int,bool)
001E8F48 CStoryProfileStages::CountSideStorySeasons()
001E904C CStoryProfileStages::GetValidSideStorySeason(bool,bool,bool)
001E915C CStoryProfileStages::SideStoryCB(int,void *)
001E922C CStoryProfileStages::DisplaySideStoryUnlock()
001E9294 CStoryProfileStages::TryToDisplaySideStoryUnlock(int)
001E92C8 CStoryProfileStages::GetSideStoryTime(long &,wchar_t *,bool,int)
001E939C CStoryProfileStages::GetSeasonPointerFromID(int)
001E93D8 CStoryProfileStages::GetSideStoryTillStartTime(long &,wchar_t *,bool,int)
001E9464 CStoryProfileStages::GetSideStoryName(int,wchar_t *,int)
001E9528 CStoryProfileStages::SetStageComplete(int,int,bool,bool,bool)
001E986C CStoryProfileStages::ShowCompleteSeasonText(int)
001E9A7C CStoryProfileStages::SetPolaroidDone(int,bool)
001E9A8C CStoryProfileStages::GetStagesStars(int)
001E9B2C CStoryProfileStages::IncStageAttempts(int)
001E9B3C CStoryProfileStages::GetAllAttempts()
001E9B60 CStoryProfileStages::SetStageStars(int,int)
001E9C1C CStoryProfileStages::GetStageComplete(int)
001E9C34 CStoryProfileStages::GetPreviousStageComplete(int)
001E9CCC CStoryProfileStages::GetPolaroidDone(int)
001E9CE2 CStoryProfileStages::GetStageOppoID(int)
001E9CF6 CStoryProfileStages::GetStageStars(int)
001E9D06 CStoryProfileStages::SetStageScore(int,int)
001E9D1A CStoryProfileStages::GetStageScore(int)
001E9D2A CStoryProfileStages::GetStageAttempts(int)
001E9D3C CStoryProfileStages::CountPacksWithAllStars()
001E9DB0 CStoryProfileStages::GetStageVersionPointer(int,int)
001E9DF6 CStoryProfileStages::HasSeasonBeenSeen(int)
001E9E26 CStoryProfileStages::SetSeasonHasBeenSeen(int)
001E9E4E CStoryProfileStages::IsSeasonUnlocked(int)
001E9E7E CStoryProfileStages::LookForUnlockSeasonPromotion()
001E9EC4 CStoryProfileStages::SeasonUnlockAcknowledge(int,void *)
001E9EFC CStoryProfileStages::SeasonPurchaseCallback(int,void *)
001E9FA4 CStoryProfileStages::UnlockSeason(int,bool,bool)
001EA314 CStoryProfileStages::GetStageReady(int)
*/

class CStoryProfileStages {
public:
  CStoryProfileStages(bool);                                           //001E85E6
  void SetupMemory();                                                  //001E85F8
  int GetSeasonCount();                                                //001E86FC
  TStorySeason *GetSeasonPointer(int id);                              //001E8724
  void SetupStages();                                                  //001E8798
  ~CStoryProfileStages();                                              //001E8820
  void Serialize(CFTTSerialize &, int, bool);                          //001E8840
  void ValidateStages(int, int, bool);                                 //001E89A8
  bool HaveIDError();                                                  //001E8A74
  void ValidateAndFix();                                               //001E8AA4
  long GetSizeOf();                                                    //001E8B64
  bool AddNewSeasonsAndStages();                                       //001E8B84
  void AddSeasonFromConfig(int);                                       //001E8C70
  CStage *GetStage(int);                                               //001E8CE8
  int GetSeasonComplete(int);                                          //001E8D4C
  bool HaveSeason();                                                   //001E8DEC
  int GetStagesComplete(int);                                          //001E8E00
  int AreWithinSideStoryTime(bool, int, bool);                         //001E8E90
  int CountSideStorySeasons();                                         //001E8F48
  TStorySeason *GetValidSideStorySeason(bool, bool, bool);             //001E904C
  static void SideStoryCB(int, void *);                                //001E915C
  void DisplaySideStoryUnlock();                                       //001E922C
  void TryToDisplaySideStoryUnlock(int);                               //001E9294
  static time_t GetSideStoryTime(long &, wchar_t *, bool, int);        //001E92C8
  static TStorySeason *GetSeasonPointerFromID(int);                    //001E939C
  static int GetSideStoryTillStartTime(long &, wchar_t *, bool, int);  //001E93D8
  static void GetSideStoryName(int, wchar_t *, int);                   //001E9464
  void SetStageComplete(int, int, bool, bool, bool);                   //001E9528
  void ShowCompleteSeasonText(int);                                    //001E986C
  void SetPolaroidDone(int, bool);                                     //001E9A7C
  int GetStagesStars(int);                                             //001E9A8C
  void IncStageAttempts(int);                                          //001E9B2C
  int GetAllAttempts();                                                //001E9B3C
  void SetStageStars(int, int);                                        //001E9B60
  int GetStageComplete(int);                                           //001E9C1C
  int GetPreviousStageComplete(int);                                   //001E9C34
  int GetPolaroidDone(int);                                            //001E9CCC
  int GetStageOppoID(int);                                             //001E9CE2
  int GetStageStars(int);                                              //001E9CF6
  void SetStageScore(int, int);                                        //001E9D06
  int GetStageScore(int);                                              //001E9D1A
  int GetStageAttempts(int);                                           //001E9D2A
  int CountPacksWithAllStars();                                        //001E9D3C
  ushort *GetStageVersionPointer(int, int);                            //001E9DB0
  bool HasSeasonBeenSeen(int);                                         //001E9DF6
  void SetSeasonHasBeenSeen(int);                                      //001E9E26
  int IsSeasonUnlocked(int);                                           //001E9E4E
  void LookForUnlockSeasonPromotion();                                 //001E9E7E
  void SeasonUnlockAcknowledge(int, void *);                           //001E9EC4
  void SeasonPurchaseCallback(int, void *);                            //001E9EFC
  int UnlockSeason(int, bool, bool);                                   //001E9FA4
  bool GetStageReady(int);                                             //001EA314
public:
  bool filed_0;
  bool filed_1;
  int filed_4;
  CSeason *filed_8;
  int filed_c;
  CStage *filed_10;
};

#endif  //_CSTORYPROFILESTAGES_H_