diff --git a/src/server/main/Elevators/Map/Haughton/Config.luau b/src/server/main/Elevators/Map/Haughton/Config.luau index cccd410..19b68e6 100644 --- a/src/server/main/Elevators/Map/Haughton/Config.luau +++ b/src/server/main/Elevators/Map/Haughton/Config.luau @@ -43,24 +43,24 @@ ElevatorConfig.Lanterns = { Up = { Color = Color3.fromRGB(44,255,157), Material = Enum.Material.Neon, - Time = .30 + Time = 1 }, Down = { - Color = Color3.fromRGB(255,29,101), + Color = Color3.fromRGB(255, 56, 59), Material = Enum.Material.Neon, - Time = .30 + Time = 1 }, }, Off = { Up = { Color = Color3.fromRGB(172,174,197), Material = Enum.Material.SmoothPlastic, - Time = .30 + Time = 1 }, Down = { Color = Color3.fromRGB(172,174,197), Material = Enum.Material.SmoothPlastic, - Time = .30 + Time = 1 }, } } @@ -68,12 +68,12 @@ ElevatorConfig.Lanterns = { local DoorsConfig: ElevatorTypes.DoorsConfig = { Cab = { Type = DoorEnums.Door.DoubleSpeed, - Time = 4, + Time = 5, Goal = Vector3.new(4.027) }, Landing = { Type = DoorEnums.Door.SingleSpeed, - Time = 4, + Time = 5, Goal = Vector3.new(4.221) } } diff --git a/src/server/main/Elevators/Map/Haughton/Events/init.luau b/src/server/main/Elevators/Map/Haughton/Events/init.luau index c313ca3..0e3be31 100644 --- a/src/server/main/Elevators/Map/Haughton/Events/init.luau +++ b/src/server/main/Elevators/Map/Haughton/Events/init.luau @@ -5,8 +5,11 @@ local ParentDir = script.Parent local ElevatorsDir = ParentDir.Parent.Parent local MainDir = ElevatorsDir.Parent +local ElevatorSystem = ElevatorsDir:WaitForChild("System") + +local ArrowLanterns = require(ElevatorSystem:WaitForChild("Lanterns"):WaitForChild("Arrows")) local ButtonEvents = require(script:WaitForChild("Buttons")) -local InitElevator = require(ElevatorsDir:WaitForChild("System")) +local InitElevator = require(ElevatorSystem) local Doors = require(ParentDir:WaitForChild("Doors")) local Buttons = require(ParentDir:WaitForChild("Buttons")) local MovingObjects = require(ParentDir:WaitForChild("MovingObjects")) @@ -25,6 +28,7 @@ type Constructor_Fun = ( ElevatorConstructor: InitElevator.constructor, ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable, DoorsConstructor: Doors.constructor, + ArrowLanternsConstructor: ArrowLanterns.constructor, ButtonsConstructor: Buttons.constructor, ElevatorBoxModel: BasePart, Leveling: {number}, @@ -36,6 +40,7 @@ type Constructor_Return_Props = { ElevatorConstructor: InitElevator.constructor, ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable, DoorsConstructor: Doors.constructor, + ArrowLanternsConstructor: ArrowLanterns.constructor, ButtonsConstructor: Buttons.constructor, ElevatorBoxModel: BasePart, Leveling: {number}, @@ -50,6 +55,7 @@ function Events.constructor( ElevatorConstructor, ElevatorConfig, DoorsConstructor, + ArrowLanternsConstructor, ButtonsConstructor, ElevatorBoxModel, Leveling, @@ -60,6 +66,7 @@ function Events.constructor( ElevatorConstructor = ElevatorConstructor, ElevatorConfig = ElevatorConfig, DoorsConstructor = DoorsConstructor, + ArrowLanternsConstructor = ArrowLanternsConstructor, ButtonsConstructor = ButtonsConstructor, ElevatorBoxModel = ElevatorBoxModel, Leveling = Leveling, @@ -68,6 +75,20 @@ function Events.constructor( }, Events) end +local function ElevatorAttributes(self: ClassConstructor) + self.ElevatorConstructor.Attributes.TravelingUpwards:GetPropertyChangedSignal("Value"):Connect(function() + if self.ElevatorConstructor.Attributes.TravelingUpwards.Value then + self.ArrowLanternsConstructor:Toggle(true, true) + self.ArrowLanternsConstructor:Toggle(false, false) + else + self.ArrowLanternsConstructor:Toggle(true, false) + self.ArrowLanternsConstructor:Toggle(false, true) + end + end) +end + +local RandNew = Random.new() + local function ElevatorEvents(self: ClassConstructor) self.ElevatorConstructor.Events.Traveling:Connect(function(_DeltaTime: number, CabPosition: Vector3) local CabVelocity = self.ElevatorBoxModel:GetVelocityAtPosition(CabPosition) @@ -102,7 +123,12 @@ local function ElevatorEvents(self: ClassConstructor) self.DoorsConstructor:OpenCabAsync() end self.MovingObjectsConstructor:RotateRelayCogs3() + + self.ElevatorConfig.FloorLevelingDistance = 10 + print(self.ElevatorConfig.FloorLevelingDistance) end) + + ElevatorAttributes(self) end function Events:InitButtons() diff --git a/src/server/main/Elevators/Map/Haughton/init.luau b/src/server/main/Elevators/Map/Haughton/init.luau index f2cdc51..d916473 100644 --- a/src/server/main/Elevators/Map/Haughton/init.luau +++ b/src/server/main/Elevators/Map/Haughton/init.luau @@ -1,13 +1,16 @@ --!optimize 2 --!strict -local ButtonPromptsDistance = Vector3.new(-.05,0,0) +local ButtonPromptsDistance = Vector3.new(-.05) local ParentDir = script.Parent local ElevatorsDir = ParentDir.Parent local MainDir = ElevatorsDir.Parent -local InitElevator = require(ElevatorsDir:WaitForChild("System")) +local ElevatorSystem = ElevatorsDir:WaitForChild("System") + +local InitElevator = require(ElevatorSystem) +local ArrowLantern = require(ElevatorSystem:WaitForChild("Lanterns"):WaitForChild("Arrows")) local Events = require(script:WaitForChild("Events")) local Config = require(script:WaitForChild("Config")) local Buttons = require(script:WaitForChild("Buttons")) @@ -28,19 +31,24 @@ return function(TagsConstructor: TagsModule.TagsConstructor, ButtonTags: TagsMod 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:InitButtons() + ArrowLanternConstructor:Toggle(true, true) + if DoorsConstructor:OpenAtFloor(Elevator.Attributes.CurrentFloor.Value) then DoorsConstructor:OpenCabAsync() end diff --git a/src/server/main/Elevators/System/Lanterns/Arrows.luau b/src/server/main/Elevators/System/Lanterns/Arrows.luau index c2ee079..32f758b 100644 --- a/src/server/main/Elevators/System/Lanterns/Arrows.luau +++ b/src/server/main/Elevators/System/Lanterns/Arrows.luau @@ -1,7 +1,7 @@ --!optimize 2 --!strict -local MainDir = script.Parent.Parent.Parent +local MainDir = script.Parent.Parent.Parent.Parent local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags")) local ElevatorTypes = require(MainDir:WaitForChild("Types"):WaitForChild("Elevator")) @@ -12,7 +12,7 @@ type Impl_Constructor = { __index: Impl_Constructor, constructor: Constructor_Fun, --Class functions - Toggle: (self: ClassConstructor, OnState: boolean, UpDirection: boolean) -> Tween?, + Toggle: (self: ClassConstructor, OnState: boolean, UpLantern: boolean) -> Tween?, Off: (self: ClassConstructor) -> (Tween?, Tween?), } @@ -22,6 +22,8 @@ type Constructor_Return_Props = { ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable } +export type constructor = ClassConstructor + local ArrowLanterns = {} :: Impl_Constructor ArrowLanterns.__index = ArrowLanterns @@ -32,15 +34,15 @@ function ArrowLanterns.constructor(Lanterns, ElevatorConfig) }, ArrowLanterns) end -function ArrowLanterns:Toggle(OnState, UpDirection) - local LanternType = UpDirection and self.Lanterns.Up or self.Lanterns.Down +function ArrowLanterns:Toggle(OnState, UpLantern) + local LanternType = UpLantern and self.Lanterns.Up or self.Lanterns.Down if LanternType then --mega boolean short circuit - local ConfigState = OnState and (UpDirection and self.ElevatorConfig.Lanterns.On.Up or self.ElevatorConfig.Lanterns.On.Down) or (UpDirection and self.ElevatorConfig.Lanterns.Off.Up or self.ElevatorConfig.Lanterns.Off.Down) + local ConfigState = OnState and (UpLantern and self.ElevatorConfig.Lanterns.On.Up or self.ElevatorConfig.Lanterns.On.Down) or (UpLantern and self.ElevatorConfig.Lanterns.Off.Up or self.ElevatorConfig.Lanterns.Off.Down) LanternType.Inst.Material = ConfigState.Material - local TweenTime = TweenInfo.new(ConfigState.Time) + local TweenTime = TweenInfo.new(ConfigState.Time, Enum.EasingStyle.Linear) local UpArrowTween = TS:Create(LanternType.Inst, TweenTime, { Color = ConfigState.Color }) @@ -51,7 +53,7 @@ function ArrowLanterns:Toggle(OnState, UpDirection) return UpArrowTween else - warn(`[{self.ElevatorConfig.Name}]: Could not toggle a direction lantern. UpDirection={UpDirection} OnState={OnState}, LaternType={LanternType}`) + warn(`[{self.ElevatorConfig.Name}]: Could not toggle a direction lantern. UpLantern={UpLantern} OnState={OnState}, LaternType={LanternType}`) end return nil end