Files
2025-09-18 17:55:52 -04:00

108 lines
2.7 KiB
Lua

--[[
// OutfitTile.lua
// Created by Kip Turner
// Copyright Roblox 2015
]]
local ContextActionService = game:GetService("ContextActionService")
local CoreGui = game:GetService("CoreGui")
local GuiRoot = CoreGui:FindFirstChild("RobloxGui")
local Modules = GuiRoot:FindFirstChild("Modules")
local Utility = require(Modules:FindFirstChild('Utility'))
local SoundManager = require(Modules:FindFirstChild('SoundManager'))
local ScreenManager = require(Modules:FindFirstChild('ScreenManager'))
local Errors = require(Modules:FindFirstChild('Errors'))
local ErrorOverlayModule = require(Modules:FindFirstChild('ErrorOverlay'))
local ThumbnailLoader = require(Modules:FindFirstChild('ThumbnailLoader'))
local BaseTile = require(Modules:FindFirstChild('BaseTile'))
local function createOutfitTileContainer(outfitData)
local this = BaseTile()
local function wearOutfitAsync()
local result = outfitData:WearAsync()
-- print("Wear Outfit Result:" , Utility.PrettyPrint(result))
-- if result and result['success'] == true then
-- else
-- local err = Errors.OutfitEquip['Default']
-- ScreenManager:OpenScreen(ErrorOverlayModule(err), false)
-- end
end
local thumbnailLoader = ThumbnailLoader:Create(this.AvatarImage, outfitData:GetOutfitId(), ThumbnailLoader.Sizes.Medium, ThumbnailLoader.AssetType.Outfit, true)
spawn(function()
thumbnailLoader:LoadAsync(false, true)
end)
this:SetPopupText(outfitData:GetName())
function this:UpdateEquipButton()
self.EquippedCheckmark.Visible = outfitData:IsWearing()
end
function this:GetPackageInfo()
return outfitData
end
local selectDebounce = false
function this:Select()
if selectDebounce then return false end
selectDebounce = true
spawn(function()
wearOutfitAsync()
selectDebounce = false
end)
return true
end
local isWearingConn = nil
local baseShow = this.Show
function this:Show()
baseShow(self)
self:SetActive(true)
Utility.DisconnectEvent(isWearingConn)
isWearingConn = outfitData.IsWearingChanged:connect(function() self:UpdateEquipButton() end)
end
local baseHide = this.Hide
function this:Hide()
baseHide(self)
isWearingConn = Utility.DisconnectEvent(isWearingConn)
end
local baseFocus = this.Focus
function this:Focus()
baseFocus(self)
-- ContextActionService:BindCoreAction("WearSelectedOutfitItem",
-- function(actionName, inputState, inputObject)
-- if inputState == Enum.UserInputState.End then
-- SoundManager:Play('ButtonPress')
-- wearOutfitAsync()
-- end
-- end,
-- false,
-- Enum.KeyCode.ButtonX)
end
local baseRemoveFocus = this.RemoveFocus
function this:RemoveFocus()
baseRemoveFocus(self)
-- ContextActionService:UnbindCoreAction("WearSelectedOutfitItem")
end
return this
end
return createOutfitTileContainer