--!optimize 2 --!strict local ParentDir = script.Parent local ElevatorDir = ParentDir.Parent local ElevatorsDir = ElevatorDir.Parent.Parent local MainDir = ElevatorsDir.Parent local StorageService = game:GetService("ReplicatedStorage") local Enums = require(StorageService:WaitForChild("Enums")) local InitElevator = require(ElevatorsDir:WaitForChild("System")) local Buttons = require(ElevatorDir:WaitForChild("Buttons")) local Doors = require(ElevatorDir:WaitForChild("Doors")) local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags")) local ElevatorTypes = require(MainDir:WaitForChild("Types"):WaitForChild("Elevator")) type ClassConstructor = typeof(setmetatable({} :: Constructor_Return_Props, {} :: Impl_Constructor)) type Impl_Constructor = { __index: Impl_Constructor, constructor: Constructor_Fun, --Class functions Events: (self: ClassConstructor) -> () } type Constructor_Fun = ( ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable, ElevatorConstructor: InitElevator.constructor, DoorsConstructor: Doors.constructor, ButtonsConstructor: Buttons.constructor ) -> ClassConstructor type Constructor_Return_Props = { ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable, ElevatorConstructor: InitElevator.constructor, DoorsConstructor: Doors.constructor, ButtonsConstructor: Buttons.constructor } local ButtonEvents = {} :: Impl_Constructor ButtonEvents.__index = ButtonEvents function ButtonEvents.constructor(ElevatorConfig, ElevatorConstructor, DoorsConstructor, ButtonsConstructor) return setmetatable({ ElevatorConfig = ElevatorConfig, ElevatorConstructor = ElevatorConstructor, DoorsConstructor = DoorsConstructor, ButtonsConstructor = ButtonsConstructor }, ButtonEvents) end local function ElevatorGoingUpDirection(CurrentFloor: number, RequestedFloor: number): boolean return CurrentFloor