local TweenService = game:GetService("TweenService")
local AnimateObject = {}
AnimateObject.__index = AnimateObject
local AnimateStyles = {
Hover = {
["Grow"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseEnter:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseLeave:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
["Shrink"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseEnter:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseLeave:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
["TextColor"] = function(Object, NewColor)
local OriginalColor = Object.TextColor3
local Color = NewColor or Color3.fromRGB(0, 255, 0)
Object.MouseEnter:Connect(function()
Object.TextColor3 = Color
end)
Object.MouseLeave:Connect(function()
Object.TextColor3 = OriginalColor
end)
end;
["BackgroundColor"] = function(Object, NewColor)
local OriginalColor = Object.BackgroundColor3
local Color = NewColor or Color3.fromRGB(0, 255, 0)
Object.MouseEnter:Connect(function()
Object.BackgroundColor3 = Color
end)
Object.MouseLeave:Connect(function()
Object.BackgroundColor3 = OriginalColor
end)
end;
["Rotate"] = function(Object, RotationAmount)
--I will start by making a few variables:
local OriginalRotation = Object.Rotation
Object.MouseEnter:Connect(function()
TweenService:Create(Object,
TweenInfo.new(0.1,Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 0, false, 0),
{Rotation = RotationAmount}
):Play()
end)
Object.MouseLeave:Connect(function()
TweenService:Create(Object,
TweenInfo.new(0.1,Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 0, false, 0),
{Rotation = OriginalRotation}
):Play()
end)
end;
};
LeftClick = {
["BackgroundColor"] = function(Object, NewColor)
local OriginalColor = Object.BackgroundColor3
local Color = NewColor or Color3.fromRGB(0, 255, 0)
Object.MouseButton1Down:Connect(function()
Object.BackgroundColor3 = Color
end)
Object.MouseButton1Up:Connect(function()
Object.BackgroundColor3 = OriginalColor
end)
end;
["Grow"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseButton1Down:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseButton1Up:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
["Shrink"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseButton1Down:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseButton1Up:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
};
RighClick = {
["BackgroundColor"] = function(Object, NewColor)
local OriginalColor = Object.BackgroundColor3
local Color = NewColor or Color3.fromRGB(0, 255, 0)
Object.MouseButton2Down:Connect(function()
Object.BackgroundColor3 = Color
end)
Object.MouseButton2Up:Connect(function()
Object.BackgroundColor3 = OriginalColor
end)
end;
["Grow"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseButton2Down:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale + Amount, 0, Object.Size.Y.Scale + Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseButton2Up:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
["Shrink"] = function(Object, ChangeAmount)
local OriginalSize = Object.Size
local Amount = ChangeAmount or 0.01
Object.MouseButton2Down:Connect(function()
Object:TweenSize(
UDim2.new(Object.Size.X.Scale - Amount, 0, Object.Size.Y.Scale - Amount, 0),
"In",
"Quad",
0.1,
true
)
end)
Object.MouseButton2Up:Connect(function()
Object:TweenSize(OriginalSize, "In", "Quad", 0.1, true)
end)
end;
};
}
function AnimateObject.new(Object)
local self = setmetatable({}, AnimateObject)
self.Object = Object
return Object, self
end
function AnimateObject:Configuire(Action, Style, Change)
local Object = self.Object
local ChosenTween = AnimateStyles[Action][Style]
ChosenTween(Object, Change)
end
return AnimateObject