So, I am creating a game that has levels in it. So far the game’s levels are sorted by pack, and each pack will have a finite amount of levels. When a player joins for the first time, my code sets up the levels for them. So far my code looks like this, and it is set up so I can recall information about the player and the level with the same modulescript.
local function setupPlayer(player)
local ID = "Player_".. player.UserId
local success, data = pcall(function()
return {PlayerData:GetAsync(ID), Leaderboard:GetAsync(ID),MarketData:GetAsync(ID),PlayerLevel:GetAsync(ID),CurrentLevel:GetAsync(ID)}
end)
if success then
-- data in [1-3] is irrelevant to this question.
if data[4] then levels[ID] = data[4]
-- commenting level creation so I dont forget.
-- this only defaults with 1 level, I must add the rest manually.
else levels[ID] = {
levels_main = {
level_1 = {
completed = false,
passable = false,
hintPower = 0
},
level_2 = {
completed = false,
passable = false,
hintPower = 0
},
level_3 = {
completed = false,
passable = false,
hintPower = 0
},
level_4 = {
completed = false,
passable = false,
hintPower = 0
},
level_5 = {
completed = false,
passable = false,
hintPower = 0
},
level_6 = {
completed = false,
passable = false,
hintPower = 0
},
level_7 = {
completed = false,
passable = false,
hintPower = 0
},
level_8 = {
completed = false,
passable = false,
hintPower = 0
},
level_9 = {
completed = false,
passable = false,
hintPower = 0
},
level_10 = {
completed = false,
passable = false,
hintPower = 0
},
level_11 = {
completed = false,
passable = false,
hintPower = 0
},
level_12 = {
completed = false,
passable = false,
hintPower = 0
},
level_13 = {
completed = false,
passable = false,
hintPower = 0
},
level_14 = {
completed = false,
passable = false,
hintPower = 0
},
level_15 = {
completed = false,
passable = false,
hintPower = 0
},
level_16 = {
completed = false,
passable = false,
hintPower = 0
},
level_17 = {
completed = false,
passable = false,
hintPower = 0
},
level_18 = {
completed = false,
passable = false,
hintPower = 0
},
level_19 = {
completed = false,
passable = false,
hintPower = 0
},
level_20 = {
completed = false,
passable = false,
hintPower = 0
},
level_21 = {
completed = false,
passable = false,
hintPower = 0
},
level_22 = {
completed = false,
passable = false,
hintPower = 0
},
level_23 = {
completed = false,
passable = false,
hintPower = 0
},
level_24 = {
completed = false,
passable = false,
hintPower = 0
},
level_25 = {
completed = false,
passable = false,
hintPower = 0
}
}
}
end
print("Levels set.")
if data[5] then currentLevel[ID] = data[5]
else currentLevel[ID] = DataManager:setCurrentLevel(player,"main","1")
end
print("Current Level is: "..currentLevel[ID][1].."_"..currentLevel[ID][2])
loadLeaderstats(player)
else
-- Code here to prevent bad overwrite
warn("Issue Accessing Player's Data")
end
end
Is there any way to make this scalable? I understand that if I create more levels I would have to insert them into the table where I store playerdata, but I feel like there is a better way to do this. Any suggestions?