Files
Roblox-Elevator-Game/src/server/main/Elevators/Map/Haughton/init.luau
2024-09-13 20:53:15 -04:00

56 lines
2.5 KiB
Lua

--!optimize 2
--!strict
local ButtonPromptsDistance = Vector3.new(-.05)
local ParentDir = script.Parent
local ElevatorsDir = ParentDir.Parent
local MainDir = ElevatorsDir.Parent
local ElevatorSystem = ElevatorsDir:WaitForChild("System")
local InitElevator = require(ElevatorSystem)
local ArrowLantern = require(ElevatorSystem:WaitForChild("Lanterns"):WaitForChild("Arrows"))
local Buttons = require(ElevatorSystem:WaitForChild("Buttons"))
local TractionRopes = require(ElevatorSystem:WaitForChild("TractionRopes"))
local Doors = require(ElevatorSystem:WaitForChild("Doors"))
local Events = require(script:WaitForChild("Events"))
local Config = require(script:WaitForChild("Config"))
local Leveling = require(script:WaitForChild("Leveling"))
local MovingObjects = require(script:WaitForChild("MovingObjects"))
local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags"))
return function(TagsConstructor: TagsModule.TagsConstructor, ButtonTags: TagsModule.ElevatorButtons, LanternTags: TagsModule.Lanterns, LandingDoorTags: TagsModule.LandingTags)
local ElevatorModel = TagsConstructor:Request("Elevator_Haughton") :: Model
local CabRopesObject = TagsConstructor:Request("Haughton_Rope_Cab") :: BasePart
local PulleyRopesObject = TagsConstructor:Request("Haughton_Rope_Pulley") :: BasePart
local ElevatorBoxModel = ElevatorModel:WaitForChild("Mover") :: BasePart
local Elevator = InitElevator.constructor(ElevatorBoxModel, Config.Elevator, Leveling)
local MovingObjectsConstructor = MovingObjects.constructor(TagsConstructor)
local ButtonsConstructor = Buttons.constructor(Config.Elevator.Name, ButtonTags, Elevator.Attributes.CurrentFloor)
ButtonsConstructor:InitForElevator(2, ButtonPromptsDistance)
local ArrowLanternConstructor = ArrowLantern.constructor(LanternTags, Config.Elevator)
local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject)
local DoorsConstructor = Doors.constructor(Leveling, ElevatorBoxModel, Config.Doors, LandingDoorTags)
local EventsConstructor = Events.constructor(
Elevator,
Config.Elevator,
DoorsConstructor,
ArrowLanternConstructor,
ButtonsConstructor,
ElevatorBoxModel,
Leveling,
MovingObjectsConstructor,
TractionRopesConstructor
)
TractionRopesConstructor:Update()
EventsConstructor:Init()
ArrowLanternConstructor:Toggle(true, true)
if DoorsConstructor:OpenAtFloor(Elevator.Attributes.CurrentFloor.Value) then
DoorsConstructor:OpenCabAsync()
end
end