global struct ClGlobals
{
	table signalDummy

	float pilotRedDamageWarningScalar = 1.0
	table<int, void functionref( entity, var )> eventNotificationCallbacks

	array<void functionref( entity, entity )>  pilotHudCallbacks
	array<void functionref( entity, entity )>  titanHudCallbacks
	array<void functionref( entity )>  onLocalViewPlayerSpawnedCallbacks
	array<void functionref( entity )>  onLocalClientPlayerSpawnedCallbacks
	array<void functionref( entity )>  onMinimapEntSpawnedCallbacks
	array<void functionref( entity )>  onUseEntGainFocusCallbacks
	array<void functionref( entity )>  onUseEntLoseFocusCallbacks
	array<void functionref( entity )> addPlayerFuncs
	table< int, array<void functionref( float, vector, int, int, entity ) > > onLocalPlayerTookDamageCallback
	array<void functionref( entity, entity, vector, int ) > onLocalPlayerDidDamageCallback
	array<void functionref( entity, int, int ) > onPlayerLifeStateChangedCallbacks
	table<int, void functionref( int, entity ) > onScoreEventCallback
	table<string, array<void functionref( entity )> > onCreateCallbacks
	table<string, array<void functionref( entity )> > onTargetNameCreateCallbacks
	table<string, array<void functionref( entity )> > onDeathCallbacks
	array<void functionref()> killReplayStartCallbacks
	array<void functionref()> killReplayEndCallbacks
	array<void functionref( entity clientPlayer, entity spectatorTarget )> firstPersonSpectateStartCallbacks
	array<void functionref( entity clientPlayer, entity spectatorTarget )> firstPersonSpectateEndCallbacks
	array<void functionref( entity clientPlayer, entity spectatorTarget )> thirdPersonSpectateStartCallbacks
	array<void functionref( entity clientPlayer, entity spectatorTarget )> thirdPersonSpectateEndCallbacks
	array<void functionref( entity localClientPlayer, entity prevSpectatorTarget, entity currentSpectatorTarget )> onSpectatorTargetChangedCallbacks
	table<string, array<void functionref( entity )> > onDestroyedCallbacks
	table<string, array<void functionref( entity )> > onDeathOrDestroyCallbacks
	table<int, array<void functionref( entity )> > onCinematicEventFlagChangedCallback
	array<void functionref( entity )> onClientScriptInitCallback
	array<void functionref( var, entity )> onMainHudCreatedCallbacks
	void functionref( entity ) onHardpointChangedCallback
	void functionref( entity ) onHardpointIDChangedCallback
	void functionref( entity ) onHardpointEntityChangedCallback
	array<void functionref( entity )> onPetTitanModeChangedCallbacks
	array<void functionref( entity )> onPetTitanChangedCallbacks

	array<void functionref( entity )> onPlayerClassChangedCallbacks

	array<void functionref()>[ eGameState._count_ ] gameStateEnterCallbacks
	DamageHistoryStruct &lastDamageHistory

	VisGroup menuVisGroup

	bool isMenuOpen = false
	bool isSoloDialogMenuOpen = false
	bool mapSupportsMenuModels = false
	bool initializedMenuModels = false

	entity menuSceneModel
	entity menuCamera

	int editingPilotLoadoutIndex = -1
	int editingTitanLoadoutIndex = -1

	int heldPilotWeaponType = eItemTypes.PILOT_PRIMARY

	MenuCharacterDef currentMenuPilotModels
	MenuCharacterDef previewMenuPilotModels

	MenuCharacterDef currentMenuTitanModels
	MenuCharacterDef previewMenuTitanModels

	entity lastKiller // only valid before kill replay
	AttackerDisplayNameStruct nameOfLastKiller

	table<int, string> permanentEventNotifications

	entity levelEnt

	bool isSpectating = false
	int observerMode = 0

	table<int, string> hardpointStringIDs
	table<int, table> hardpointData

	vector[ TEAM_COUNT ] flagSpawnPoints

	array<void functionref( entity )> onPlayerDisconnectedFuncs
	array<void functionref( entity )> onWeaponChangedCallbacks

	void functionref() scoreEventOverrideFunc

	var		topoFullScreen
	var		topoCockpitHud
	var		topoCockpitHudPermanent
	var		topoTitanCockpitHud
	var		topoTitanCockpitLowerHud
	var		topoTitanCockpitInstrument1

	var		empScreenEffect

	bool callingCardsEnabled = true
	var[TEAM_COUNT] callingCardRuis

	array<AnnouncementData> announcementQueue
	AnnouncementData &activeAnnouncement
	bool isAnnouncementActive = false

	table<string, var> clientChallengeProgress

	float lastKillConfirmTime

	bool showMatchLossProtection = false
	bool canShowLateJoinMessage = true
	bool lockScoreboard = false

	void functionref() initScoreboardFunc
	void functionref() showScoreboardFunc
	void functionref() hideScoreboardFunc
	void functionref(int) scoreboardInputFunc

	bool showingScoreboard = false
}

global ClGlobals clGlobal
