Files
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

89 lines
1.8 KiB
C++

#ifndef ISLAND_HOPPER_H_
#define ISLAND_HOPPER_H_
#include "atl/hashstring.h"
#include "data/base.h"
#include "islandhopperdata.h"
namespace rage
{
class bkBank;
}
class CIslandHopperData;
class CIslandHopper : public rage::datBase
{
public:
static CIslandHopper& GetInstance() { return sm_islandHopper; }
void Init();
void InitTunables();
void LoadFile(char const* filename);
void UnloadFile(char const* filename);
void Update();
#if __BANK
void InitWidgets(bkBank& bank);
#endif // __BANK
void RequestToggleIsland(atHashString islandName, bool enable, bool waitForLoadscene = true);
bool AreCurrentIslandIPLsActive() const;
atHashString GetCurrentActiveIsland() const;
bool IsAnyIslandActive() const;
void DisableAllPreemptedImaps();
void SetHeistIslandInteriors(bool interiorsEnabled);
private:
void ToggleIsland(atHashString islandName, bool enable);
void DebugToggleHeistIsland();
CIslandHopperData const* FindIslandData(atHashString const& Name) const;
void ActivateIsland(CIslandHopperData const& data);
void DeactivateIsland(CIslandHopperData const& data);
void ActivateHeistIsland();
void DeactivateHeistIsland();
void EnableHeistIslandImaps();
void DisableHeistIslandImaps();
void CheckIPLsActive();
void RequestIpl(atHashString pName);
void RemoveIpl(atHashString pName);
void SetMapDataCullBoxEnabled(const char* pName, bool enabled);
void EnableImaps(atHashString const* imaps, int imapCount);
void DisableImaps(atHashString const* imaps, int imapCount);
void PrintGrass();
static CIslandHopper sm_islandHopper;
bool m_requestEnableIsland;
atHashString m_requestedIsland;
bool m_waitForLoadscene;
atHashString m_currentIslandEnabled;
bool m_allIplsActiveDebug;
static bool ms_tunabledSkipLoadSceneWait;
atArray<CIslandHopperData*> m_islands;
};
#endif // ISLAND_HOPPER_H_