--[[
	Creates a new GuiController. hideOtherGuis and showOtherGuis are optional
	callbacks that can be used to control hiding and showing of GUIs. If they
	are defined the GuiController will not do any GUI manipulation. It will
	instead call those callbacks and return.

	Parameters:
	screenGuis - An array of Roact.Refs of the ScreenGuis for this module
	hideOtherGuis - A callback that is called when hideGuis is called
	showOtherGuis - A callback that is called when showGuis is called
]]

function GuiController.new(screenGuis: { any }?, hideOtherGuis: Callback?, showOtherGuis: Callback?)
	local self = {
		StarterGui = StarterGui,
		UserInputService = UserInputService,
		player = Players.LocalPlayer,
		screenGuis = screenGuis or {},
		hideOtherGuis = hideOtherGuis,
		showOtherGuis = showOtherGuis,
		disabledGuis = {},
		disabledCoreGuis = {},
		modalEnabled = false,
	}

	return setmetatable(self, GuiController)
end
