local s=(require(((game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")):WaitForChild("\083\099\114\105\112\116\115")):WaitForChild("\067\111\110\115\111\108\101"))).sourced("\073\110\112\117\116")s.log("\073\110\105\116\105\097\108\105\122\105\110\103 \118\097\114\105\097\098\108\101\115\046\046\046")local U={}s.log("\067\111\110\115\116\114\117\099\116\105\110\103 \111\098\106\101\099\116\115\046\046\046")U.__index=U function U.new(s,g,L,P)local p=setmetatable({},U)if s(s)=="\110\117\109\098\101\114"then p.Type=s p.Code=g p.Offset=L p.Devices=P end return p end s.log("\068\111\110\101\046")return U
--- A user input definition.
-- Represents an input that a user could provide. Defines the particular user
-- input conditions that will trigger this Input.
--
-- @author LastTalon
-- @version 0.1.0, 2020-04-16
-- @since 0.1
--
-- @module Input
-- @field Type the InputType of this Input
-- @field Code the code for this input. A code may not be necessary depending on
-- the input type. Should be an Enum.KeyCode, ControlScheme,
-- Enum.UserInputType, DirectionMethod, or nil.
-- @field Offset the amount to displace this Input's value by before being 
-- used. Should be a UDim, UDim2, or nil.
-- @field Devices the array of devices this Input should trigger for. Should be
-- an array of Enum.UserInputType.
--
-- @see Control

local Console = require(game:GetService("ReplicatedStorage"):WaitForChild("Scripts"):WaitForChild("Console")).sourced("Input")

-- Variables --
Console.log("Initializing variables...")

local Input = {}

-- Local Objects --
Console.log("Constructing objects...")

Input.__index = Input

--- The parameterized constructor.
-- Creates a new Input object with all of its fields set.

-- @param type the type of the new Input
-- @param code the code of the new Input
-- @param offset the offset of the new Input
-- @param devices the array of devices of the new Input
-- @return the new Input
function Input.new(type, code, offset, devices)
	local self = setmetatable({}, Input)
	if type(type) == "number" then
		self.Type = type
		self.Code = code
		self.Offset = offset
		self.Devices = devices
	end
	return self
end

-- End --
Console.log("Done.")

return Input
