add gs
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
|
||||
--[[
|
||||
// OutfitData.lua
|
||||
|
||||
// Created by Kip Turner
|
||||
// Copyright Roblox 2015
|
||||
]]
|
||||
local CoreGui = game:GetService("CoreGui")
|
||||
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
|
||||
local Modules = GuiRoot:FindFirstChild("Modules")
|
||||
local ShellModules = Modules:FindFirstChild("Shell")
|
||||
|
||||
local Utility = require(ShellModules:FindFirstChild('Utility'))
|
||||
local UserData = require(ShellModules:FindFirstChild('UserData'))
|
||||
local Http = require(ShellModules:FindFirstChild('Http'))
|
||||
local EventHub = require(ShellModules:FindFirstChild('EventHub'))
|
||||
local XboxAppState = require(ShellModules:FindFirstChild('AppState'))
|
||||
|
||||
local OutfitData = {}
|
||||
|
||||
local wearingOutfit = nil
|
||||
|
||||
local function CreateOutfitItem(outfitInfo)
|
||||
local this = {}
|
||||
local isWearing = false
|
||||
this.IsWearingChanged = Utility.Signal()
|
||||
|
||||
function this:GetUserId()
|
||||
return outfitInfo['UserId']
|
||||
end
|
||||
|
||||
function this:GetOutfitId()
|
||||
return outfitInfo['OutfitId']
|
||||
end
|
||||
|
||||
function this:GetId()
|
||||
return outfitInfo['Id']
|
||||
end
|
||||
|
||||
function this:GetName()
|
||||
return outfitInfo['Name']
|
||||
end
|
||||
|
||||
function this:IsOwned()
|
||||
return true
|
||||
end
|
||||
|
||||
function this:IsWearing()
|
||||
local wasWearing = isWearing
|
||||
isWearing = (self:GetId() == wearingOutfit)
|
||||
if isWearing ~= wasWearing then
|
||||
self.IsWearingChanged:fire(isWearing)
|
||||
end
|
||||
return isWearing
|
||||
end
|
||||
|
||||
function this:WearAsync()
|
||||
Http.PostWearUserOutfitAsync(self:GetId())
|
||||
wearingOutfit = self:GetId()
|
||||
EventHub:dispatchEvent(EventHub.Notifications["DonnedDifferentOutfit"], self:GetId())
|
||||
end
|
||||
|
||||
return this
|
||||
end
|
||||
|
||||
|
||||
local OutfitCache = nil
|
||||
local RbxUid = nil
|
||||
|
||||
local debounceGetGetMyOutfitsAsync = false
|
||||
function OutfitData:GetMyOutfitsAsync()
|
||||
while debounceGetGetMyOutfitsAsync do wait() end
|
||||
|
||||
debounceGetGetMyOutfitsAsync = true
|
||||
UserData.GetLocalPlayerAsync()
|
||||
|
||||
if RbxUid ~= XboxAppState.store:getState().RobloxUser.rbxuid then
|
||||
OutfitCache = nil
|
||||
end
|
||||
|
||||
while not OutfitCache do
|
||||
local startRbxUid = XboxAppState.store:getState().RobloxUser.rbxuid
|
||||
local outfits = {}
|
||||
local index = 0
|
||||
local count = 20
|
||||
|
||||
repeat
|
||||
local result = nil
|
||||
|
||||
Utility.ExponentialRepeat(
|
||||
function() return result == nil end,
|
||||
function() result = Http.GetMyUserOutfitsAsync(index, count) end,
|
||||
5)
|
||||
|
||||
if result then
|
||||
local userOutfits = result['UserOutfits']
|
||||
if userOutfits then
|
||||
for _, outfitInfo in pairs(userOutfits) do
|
||||
table.insert(outfits, CreateOutfitItem(outfitInfo))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
index = index + count
|
||||
until result == nil or result['FinalPage']
|
||||
|
||||
local nowRbxUid = XboxAppState.store:getState().RobloxUser.rbxuid
|
||||
if startRbxUid == nowRbxUid then
|
||||
OutfitCache = outfits
|
||||
end
|
||||
Utility.DebugLog("Getting info cache again" , "now" , nowRbxUid , "startRbxUid" , startRbxUid)
|
||||
end
|
||||
|
||||
debounceGetGetMyOutfitsAsync = false
|
||||
return OutfitCache
|
||||
end
|
||||
|
||||
function OutfitData:GetCachedWearingOutfitId()
|
||||
return wearingOutfit
|
||||
end
|
||||
|
||||
EventHub:addEventListener(EventHub.Notifications["DonnedDifferentPackage"], "OutfitData",
|
||||
function()
|
||||
wearingOutfit = nil
|
||||
if OutfitCache then
|
||||
for _, outfit in pairs(OutfitCache) do
|
||||
outfit:IsWearing()
|
||||
end
|
||||
end
|
||||
end)
|
||||
EventHub:addEventListener(EventHub.Notifications["DonnedDifferentOutfit"], "OutfitData",
|
||||
function()
|
||||
if OutfitCache then
|
||||
for _, outfit in pairs(OutfitCache) do
|
||||
outfit:IsWearing()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
return OutfitData
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user