importonly final struct gameuiGenericNotificationData
{
	import var time : Float;
	import var widgetLibraryItemName : CName;
	import var introAnimation : CName;
	import var widgetLibraryResource : ResRef;
	import var notificationData : GenericNotificationViewData;
}

import class gameuiGenericNotificationGameController extends inkGameController
{
	protected import var notificationsRoot : inkCompoundRef;

	public import function AddNewNotificationData( notification : gameuiGenericNotificationData );
	public import function RemoveNotification( notification : IScriptable );
	public import function SetNotificationPaused( value : Bool );
	public import function SetNotificationPauseWhenHidden( value : Bool );
	public import function GetBlackBarFullscreenWidgetOffsets() : Vector2;
	public import function GetHudSafezoneWidgetOffsets() : Vector2;
	public import function MakeSilent( value : Bool );
	public import function RemoveAllQueuedNotifications();

	public export virtual function GetShouldSaveState() : Bool
	{
		return false;
	}

	public export virtual function GetID() : Int32
	{
		return ( ( Int32 )( GenericNotificationType.Generic ) );
	}

	protected event OnMakeNotificationQueueSilent( evt : MakeNotificationQueueSilentEvent )
	{
		if( GetID() == ( ( Int32 )( evt.m_notificationType ) ) )
		{
			MakeSilent( evt.m_makeSilent );
		}
	}

	protected event OnCleanupUiNotificationsEvent( evt : CleanupUiNotificationsEvent )
	{
		RemoveAllQueuedNotifications();
	}

}

import class gameuiGenericNotificationReceiverGameController extends inkGameController
{
	public import virtual function SetNotificationData( notificationData : GenericNotificationViewData );
}

enum GenericNotificationType
{
	Generic = 0,
	JournalNotification = 1,
	LevelUpNotification = 2,
	VendorNotification = 3,
	ZoneNotification = 4,
	ProgressionNotification = 5,
	CraftingNotification = 6,
	InventoryNotification = 7,
	PhoneNotification = 8,
}

class MakeNotificationQueueSilentEvent extends Event
{
	editable var m_notificationType : GenericNotificationType;
	editable var m_makeSilent : Bool;
}

