Hi, I am using modular programming and functional programming and I just wanted to see what I could improve upon. This is the module script.
local module = {}
module.Code = {2,6,0,7}
function module.processInput(v, newCode, order, levelState)
if not levelState then
local num = tonumber(v.TextBox.Text)
if num then
newCode[order] = num
if table.concat(module.Code) == table.concat(newCode) then
return true
end
end
end
end
return module
And here is the localscript
--Yellow1,Green2,Red3,White4
local codeModule = require(game:GetService("ReplicatedStorage").WhiteRoomCode)
local newCode = {}
local levelCompleted = false
local function completeLevel()
levelCompleted = true
print("Level Complete")
end
for _, v in pairs(script.Parent:GetChildren()) do
if v:IsA("SurfaceGui") then
v.TextBox.Changed:Connect(function(property)
if v.TextBox == script.Parent.GreenSurfaceGuiWhiteRoom.TextBox then
codeModule.processInput(v, newCode, 2, levelCompleted)
if codeModule.processInput(v, newCode, 2, levelCompleted) then
completeLevel()
end
elseif v.TextBox == script.Parent.RedSurfaceGuiWhiteRoom.TextBox then
codeModule.processInput(v, newCode, 3, levelCompleted)
if codeModule.processInput(v, newCode, 3, levelCompleted) then
completeLevel()
end
elseif v.TextBox == script.Parent.WhiteSurfaceGuiWhiteRoom.TextBox then
codeModule.processInput(v, newCode, 4, levelCompleted)
if codeModule.processInput(v, newCode, 4, levelCompleted) then
completeLevel()
end
elseif v.TextBox == script.Parent.YellowSurfaceGuiWhiteRoom.TextBox then
codeModule.processInput(v, newCode, 1, levelCompleted)
if codeModule.processInput(v, newCode, 1, levelCompleted) then
completeLevel()
end
end
end)
end
end
Thanks for any suggestions!