mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-04 20:57:49 +00:00
108 lines
2.7 KiB
Lua
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
|