-- Compiled with roblox-ts v2.3.0-dev-d7847ea local TS = _G[script] -- eslint-disable @typescript-eslint/no-explicit-any local _core = TS.import(script, TS.getModule(script, "@flamework", "core").out) local Reflect = _core.Reflect local Service = _core.Service local _BaseTycoonItem = TS.import(script, script.Parent, "item", "BaseTycoonItem") local BaseTycoonItem = _BaseTycoonItem.BaseTycoonItem local DecoratedTycoonItems = _BaseTycoonItem.DecoratedTycoonItems local IsExtended = TS.import(script, script.Parent.Parent, "utility").IsExtended local TycoonService do TycoonService = setmetatable({}, { __tostring = function() return "TycoonService" end, }) TycoonService.__index = TycoonService function TycoonService.new(...) local self = setmetatable({}, TycoonService) return self:constructor(...) or self end function TycoonService:constructor(components, logger) self.components = components self.logger = logger self.LOCK_ITEM_TAG = "LockedItem" self.items = {} end function TycoonService:onInit() -- ▼ ReadonlySet.forEach ▼ local _callback = function(ctor) local config = Reflect.getMetadata(ctor, "config") if not ctor then return nil end if not IsExtended(ctor, BaseTycoonItem) then return nil end if config.tag == nil then return nil end local _items = self.items local _tag = config.tag local _ctor = ctor _items[_tag] = _ctor self.logger:Info(`Registered item: {config.tag}`) end for _v in DecoratedTycoonItems do _callback(_v, _v, DecoratedTycoonItems) end -- ▲ ReadonlySet.forEach ▲ end function TycoonService:GetConstructorItems() return self.items end function TycoonService:GetLockItemTag() return self.LOCK_ITEM_TAG end function TycoonService:SetLockItemTag(lockItemTag) self.LOCK_ITEM_TAG = lockItemTag end function TycoonService:Create(model, componentSpecifier) return self.components:addComponent(model, componentSpecifier) end do -- (Flamework) TycoonService metadata Reflect.defineMetadata(TycoonService, "identifier", "$t:source/TycoonService@TycoonService") Reflect.defineMetadata(TycoonService, "flamework:parameters", { "$c:components@Components", "$t:source/TycoonLogger@TycoonLogger" }) Reflect.defineMetadata(TycoonService, "flamework:implements", { "$:flamework@OnInit" }) end end -- (Flamework) TycoonService decorators Reflect.decorate(TycoonService, "$:flamework@Service", Service, { {} }) return { TycoonService = TycoonService, }