From 35fdaf56a9ce0593d5ae95143e4e2620b366f8de Mon Sep 17 00:00:00 2001 From: unixtensor Date: Wed, 11 Sep 2024 15:53:56 -0400 Subject: [PATCH] Lanterns --- sourcemap.json | 2 +- .../main/Elevators/Lanterns/Arrows.luau | 63 +++++++++++++++++++ .../{Lanterns.luau => Lanterns/Display.luau} | 0 .../main/Elevators/Map/Haughton/Config.luau | 51 ++++++++------- src/server/main/Map/Load/Tags/init.luau | 20 +----- src/server/main/Types/Elevator.luau | 28 +++++---- 6 files changed, 111 insertions(+), 53 deletions(-) create mode 100644 src/server/main/Elevators/Lanterns/Arrows.luau rename src/server/main/Elevators/{Lanterns.luau => Lanterns/Display.luau} (100%) diff --git a/sourcemap.json b/sourcemap.json index 70acc5b..2ab8f26 100644 --- a/sourcemap.json +++ b/sourcemap.json @@ -1 +1 @@ -{"name":"ElevatorGame","className":"DataModel","filePaths":["default.project.json"],"children":[{"name":"ReplicatedFirst","className":"ReplicatedFirst","children":[{"name":"intro","className":"LocalScript","filePaths":["src/load/intro/init.client.luau"],"children":[{"name":"IntroGui","className":"ModuleScript","filePaths":["src/load/intro/IntroGui.luau"]}]}]},{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Algebra","className":"ModuleScript","filePaths":["src/shared/Algebra.luau"]},{"name":"Client","className":"Folder","children":[{"name":"Camera","className":"ModuleScript","filePaths":["src/shared/Client/Camera.luau"]},{"name":"KeyBinds","className":"ModuleScript","filePaths":["src/shared/Client/KeyBinds.luau"]}]},{"name":"Delta","className":"ModuleScript","filePaths":["src/shared/Delta.luau"]},{"name":"Enums","className":"ModuleScript","filePaths":["src/shared/Enums.luau"]},{"name":"GCSignal","className":"ModuleScript","filePaths":["src/shared/GCSignal.luau"]},{"name":"Output","className":"ModuleScript","filePaths":["src/shared/Output.luau"]},{"name":"Server","className":"Folder","children":[{"name":"holder","className":"ModuleScript","filePaths":["src/shared/Server/holder.luau"]}]},{"name":"Tween","className":"ModuleScript","filePaths":["src/shared/Tween.luau"]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"rapid/server","className":"Actor","children":[{"name":"main","className":"Script","filePaths":["src/server/main/init.server.luau"],"children":[{"name":"Elevators","className":"Folder","children":[{"name":"ButtonManager","className":"ModuleScript","filePaths":["src/server/main/Elevators/ButtonManager.luau"]},{"name":"Lanterns","className":"ModuleScript","filePaths":["src/server/main/Elevators/Lanterns.luau"]},{"name":"Map","className":"Folder","children":[{"name":"Haughton","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Buttons.luau"]},{"name":"Config","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Config.luau"]},{"name":"Doors","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Doors.luau"]},{"name":"Events","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Events/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Events/Buttons.luau"]}]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Leveling.luau"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/MovingObjects.luau"]},{"name":"TractionRopes","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/TractionRopes.luau"]}]},{"name":"Otis1960","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/init.luau"],"children":[{"name":"Config","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/Config.luau"]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/Leveling.luau"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/MovingObjects.luau"]},{"name":"PhysicalRelay","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/PhysicalRelay.luau"]}]}]},{"name":"System","className":"ModuleScript","filePaths":["src/server/main/Elevators/System/init.luau"],"children":[{"name":"RelayAlgorithm","className":"ModuleScript","filePaths":["src/server/main/Elevators/System/RelayAlgorithm.luau"]}]}]},{"name":"Map","className":"Folder","children":[{"name":"Interactions","className":"Folder","children":[{"name":"LightSwitches","className":"ModuleScript","filePaths":["src/server/main/Map/Interactions/LightSwitches.luau"]}]},{"name":"Lighting","className":"ModuleScript","filePaths":["src/server/main/Map/Lighting/init.luau"]},{"name":"Load","className":"Folder","children":[{"name":"EditorEntities","className":"ModuleScript","filePaths":["src/server/main/Map/Load/EditorEntities.luau"]},{"name":"StarterPlayer","className":"ModuleScript","filePaths":["src/server/main/Map/Load/StarterPlayer.luau"]},{"name":"Tags","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/Buttons.luau"]},{"name":"Lights","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/Lights.luau"]}]},{"name":"Workspace","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Workspace.luau"]}]},{"name":"Prompts","className":"ModuleScript","filePaths":["src/server/main/Map/Prompts.luau"]}]},{"name":"PlayerAdded","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/init.luau"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/init.luau"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Actions.luau"]},{"name":"Flashlight","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Flashlight.luau"]},{"name":"Shadows","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Shadows.luau"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/SpineKinematics.luau"]}]},{"name":"Users","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Users.luau"]}]},{"name":"Types","className":"Folder","children":[{"name":"Elevator","className":"ModuleScript","filePaths":["src/server/main/Types/Elevator.luau"]},{"name":"Enums","className":"Folder","children":[{"name":"Doors","className":"ModuleScript","filePaths":["src/server/main/Types/Enums/Doors.luau"]},{"name":"Sounds","className":"ModuleScript","filePaths":["src/server/main/Types/Enums/Sounds.luau"]}]}]}]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"rapid/client","className":"Folder","children":[{"name":"Player","className":"LocalScript","filePaths":["src/client/init.client.luau"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/client/Character/init.luau"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/client/Character/Actions.luau"]},{"name":"Camera","className":"ModuleScript","filePaths":["src/client/Character/Camera/init.luau"],"children":[{"name":"Bobbing","className":"ModuleScript","filePaths":["src/client/Character/Camera/Bobbing.luau"]}]},{"name":"Humanoid","className":"ModuleScript","filePaths":["src/client/Character/Humanoid.luau"]},{"name":"HumanoidRootPart","className":"ModuleScript","filePaths":["src/client/Character/HumanoidRootPart.luau"]},{"name":"Sound","className":"Folder","children":[{"name":"Relays","className":"ModuleScript","filePaths":["src/client/Character/Sound/Relays.luau"]}]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/client/Character/SpineKinematics.luau"]}]},{"name":"CoreGuis","className":"ModuleScript","filePaths":["src/client/CoreGuis.luau"]},{"name":"GuiService","className":"ModuleScript","filePaths":["src/client/GuiService.luau"]},{"name":"Mouse","className":"ModuleScript","filePaths":["src/client/Mouse.luau"]},{"name":"UI","className":"Folder","children":[{"name":"Crosshair","className":"ModuleScript","filePaths":["src/client/UI/Crosshair.luau"]},{"name":"Iris","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/init.lua","src/client/UI/Iris/default.project.json"],"children":[{"name":"API","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/API.lua"]},{"name":"Internal","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/Internal.lua"]},{"name":"Types","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/Types.lua"]},{"name":"config","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/config.lua"]},{"name":"demoWindow","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/demoWindow.lua"]},{"name":"widgets","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/init.lua"],"children":[{"name":"Button","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Button.lua"]},{"name":"Checkbox","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Checkbox.lua"]},{"name":"Combo","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Combo.lua"]},{"name":"Format","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Format.lua"]},{"name":"Image","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Image.lua"]},{"name":"Input","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Input.lua"]},{"name":"Menu","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Menu.lua"]},{"name":"Plot","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Plot.lua"]},{"name":"RadioButton","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/RadioButton.lua"]},{"name":"Root","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Root.lua"]},{"name":"Table","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Table.lua"]},{"name":"Text","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Text.lua"]},{"name":"Tree","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Tree.lua"]},{"name":"Window","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Window.lua"]}]}]},{"name":"Vignette","className":"ModuleScript","filePaths":["src/client/UI/Vignette.luau"]}]}]}]}]}]}]} \ No newline at end of file +{"name":"ElevatorGame","className":"DataModel","filePaths":["default.project.json"],"children":[{"name":"ReplicatedFirst","className":"ReplicatedFirst","children":[{"name":"intro","className":"LocalScript","filePaths":["src/load/intro/init.client.luau"],"children":[{"name":"IntroGui","className":"ModuleScript","filePaths":["src/load/intro/IntroGui.luau"]}]}]},{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Algebra","className":"ModuleScript","filePaths":["src/shared/Algebra.luau"]},{"name":"Client","className":"Folder","children":[{"name":"Camera","className":"ModuleScript","filePaths":["src/shared/Client/Camera.luau"]},{"name":"KeyBinds","className":"ModuleScript","filePaths":["src/shared/Client/KeyBinds.luau"]}]},{"name":"Delta","className":"ModuleScript","filePaths":["src/shared/Delta.luau"]},{"name":"Enums","className":"ModuleScript","filePaths":["src/shared/Enums.luau"]},{"name":"GCSignal","className":"ModuleScript","filePaths":["src/shared/GCSignal.luau"]},{"name":"Output","className":"ModuleScript","filePaths":["src/shared/Output.luau"]},{"name":"Server","className":"Folder","children":[{"name":"holder","className":"ModuleScript","filePaths":["src/shared/Server/holder.luau"]}]},{"name":"Tween","className":"ModuleScript","filePaths":["src/shared/Tween.luau"]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"rapid/server","className":"Actor","children":[{"name":"main","className":"Script","filePaths":["src/server/main/init.server.luau"],"children":[{"name":"Elevators","className":"Folder","children":[{"name":"ButtonManager","className":"ModuleScript","filePaths":["src/server/main/Elevators/ButtonManager.luau"]},{"name":"Laterns","className":"Folder","children":[{"name":"Arrows","className":"ModuleScript","filePaths":["src/server/main/Elevators/Laterns/Arrows.luau"]},{"name":"Display","className":"ModuleScript","filePaths":["src/server/main/Elevators/Laterns/Display.luau"]}]},{"name":"Map","className":"Folder","children":[{"name":"Haughton","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Buttons.luau"]},{"name":"Config","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Config.luau"]},{"name":"Doors","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Doors.luau"]},{"name":"Events","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Events/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Events/Buttons.luau"]}]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/Leveling.luau"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/MovingObjects.luau"]},{"name":"TractionRopes","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Haughton/TractionRopes.luau"]}]},{"name":"Otis1960","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/init.luau"],"children":[{"name":"Config","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/Config.luau"]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/Leveling.luau"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/MovingObjects.luau"]},{"name":"PhysicalRelay","className":"ModuleScript","filePaths":["src/server/main/Elevators/Map/Otis1960/PhysicalRelay.luau"]}]}]},{"name":"System","className":"ModuleScript","filePaths":["src/server/main/Elevators/System/init.luau"],"children":[{"name":"RelayAlgorithm","className":"ModuleScript","filePaths":["src/server/main/Elevators/System/RelayAlgorithm.luau"]}]}]},{"name":"Map","className":"Folder","children":[{"name":"Interactions","className":"Folder","children":[{"name":"LightSwitches","className":"ModuleScript","filePaths":["src/server/main/Map/Interactions/LightSwitches.luau"]}]},{"name":"Lighting","className":"ModuleScript","filePaths":["src/server/main/Map/Lighting/init.luau"]},{"name":"Load","className":"Folder","children":[{"name":"EditorEntities","className":"ModuleScript","filePaths":["src/server/main/Map/Load/EditorEntities.luau"]},{"name":"StarterPlayer","className":"ModuleScript","filePaths":["src/server/main/Map/Load/StarterPlayer.luau"]},{"name":"Tags","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/init.luau"],"children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/Buttons.luau"]},{"name":"Lights","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Tags/Lights.luau"]}]},{"name":"Workspace","className":"ModuleScript","filePaths":["src/server/main/Map/Load/Workspace.luau"]}]},{"name":"Prompts","className":"ModuleScript","filePaths":["src/server/main/Map/Prompts.luau"]}]},{"name":"PlayerAdded","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/init.luau"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/init.luau"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Actions.luau"]},{"name":"Flashlight","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Flashlight.luau"]},{"name":"Shadows","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/Shadows.luau"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Character/SpineKinematics.luau"]}]},{"name":"Users","className":"ModuleScript","filePaths":["src/server/main/PlayerAdded/Users.luau"]}]},{"name":"Types","className":"Folder","children":[{"name":"Elevator","className":"ModuleScript","filePaths":["src/server/main/Types/Elevator.luau"]},{"name":"Enums","className":"Folder","children":[{"name":"Doors","className":"ModuleScript","filePaths":["src/server/main/Types/Enums/Doors.luau"]},{"name":"Sounds","className":"ModuleScript","filePaths":["src/server/main/Types/Enums/Sounds.luau"]}]}]}]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"rapid/client","className":"Folder","children":[{"name":"Player","className":"LocalScript","filePaths":["src/client/init.client.luau"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/client/Character/init.luau"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/client/Character/Actions.luau"]},{"name":"Camera","className":"ModuleScript","filePaths":["src/client/Character/Camera/init.luau"],"children":[{"name":"Bobbing","className":"ModuleScript","filePaths":["src/client/Character/Camera/Bobbing.luau"]}]},{"name":"Humanoid","className":"ModuleScript","filePaths":["src/client/Character/Humanoid.luau"]},{"name":"HumanoidRootPart","className":"ModuleScript","filePaths":["src/client/Character/HumanoidRootPart.luau"]},{"name":"Sound","className":"Folder","children":[{"name":"Relays","className":"ModuleScript","filePaths":["src/client/Character/Sound/Relays.luau"]}]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/client/Character/SpineKinematics.luau"]}]},{"name":"CoreGuis","className":"ModuleScript","filePaths":["src/client/CoreGuis.luau"]},{"name":"GuiService","className":"ModuleScript","filePaths":["src/client/GuiService.luau"]},{"name":"Mouse","className":"ModuleScript","filePaths":["src/client/Mouse.luau"]},{"name":"UI","className":"Folder","children":[{"name":"Crosshair","className":"ModuleScript","filePaths":["src/client/UI/Crosshair.luau"]},{"name":"Iris","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/init.lua","src/client/UI/Iris/default.project.json"],"children":[{"name":"API","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/API.lua"]},{"name":"Internal","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/Internal.lua"]},{"name":"Types","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/Types.lua"]},{"name":"config","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/config.lua"]},{"name":"demoWindow","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/demoWindow.lua"]},{"name":"widgets","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/init.lua"],"children":[{"name":"Button","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Button.lua"]},{"name":"Checkbox","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Checkbox.lua"]},{"name":"Combo","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Combo.lua"]},{"name":"Format","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Format.lua"]},{"name":"Image","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Image.lua"]},{"name":"Input","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Input.lua"]},{"name":"Menu","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Menu.lua"]},{"name":"Plot","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Plot.lua"]},{"name":"RadioButton","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/RadioButton.lua"]},{"name":"Root","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Root.lua"]},{"name":"Table","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Table.lua"]},{"name":"Text","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Text.lua"]},{"name":"Tree","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Tree.lua"]},{"name":"Window","className":"ModuleScript","filePaths":["src/client/UI/Iris/lib/widgets/Window.lua"]}]}]},{"name":"Vignette","className":"ModuleScript","filePaths":["src/client/UI/Vignette.luau"]}]}]}]}]}]}]} \ No newline at end of file diff --git a/src/server/main/Elevators/Lanterns/Arrows.luau b/src/server/main/Elevators/Lanterns/Arrows.luau new file mode 100644 index 0000000..c2ee079 --- /dev/null +++ b/src/server/main/Elevators/Lanterns/Arrows.luau @@ -0,0 +1,63 @@ +--!optimize 2 +--!strict + +local MainDir = script.Parent.Parent.Parent +local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags")) +local ElevatorTypes = require(MainDir:WaitForChild("Types"):WaitForChild("Elevator")) + +local TS = game:GetService("TweenService") + +type ClassConstructor = typeof(setmetatable({} :: Constructor_Return_Props, {} :: Impl_Constructor)) +type Impl_Constructor = { + __index: Impl_Constructor, + constructor: Constructor_Fun, + --Class functions + Toggle: (self: ClassConstructor, OnState: boolean, UpDirection: boolean) -> Tween?, + Off: (self: ClassConstructor) -> (Tween?, Tween?), +} + +type Constructor_Fun = (Lanterns: TagsModule.Lanterns, ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable) -> ClassConstructor +type Constructor_Return_Props = { + Lanterns: TagsModule.Lanterns, + ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable +} + +local ArrowLanterns = {} :: Impl_Constructor +ArrowLanterns.__index = ArrowLanterns + +function ArrowLanterns.constructor(Lanterns, ElevatorConfig) + return setmetatable({ + Lanterns = Lanterns, + ElevatorConfig = ElevatorConfig + }, ArrowLanterns) +end + +function ArrowLanterns:Toggle(OnState, UpDirection) + local LanternType = UpDirection 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) + + LanternType.Inst.Material = ConfigState.Material + + local TweenTime = TweenInfo.new(ConfigState.Time) + local UpArrowTween = TS:Create(LanternType.Inst, TweenTime, { + Color = ConfigState.Color + }) + UpArrowTween:Play() + TS:Create(LanternType.PointLight, TweenTime, { + Brightness = OnState and 1 or 0 + }):Play() + + return UpArrowTween + else + warn(`[{self.ElevatorConfig.Name}]: Could not toggle a direction lantern. UpDirection={UpDirection} OnState={OnState}, LaternType={LanternType}`) + end + return nil +end + +function ArrowLanterns:Off() + return self:Toggle(false, true), self:Toggle(false, false) +end + +return ArrowLanterns \ No newline at end of file diff --git a/src/server/main/Elevators/Lanterns.luau b/src/server/main/Elevators/Lanterns/Display.luau similarity index 100% rename from src/server/main/Elevators/Lanterns.luau rename to src/server/main/Elevators/Lanterns/Display.luau diff --git a/src/server/main/Elevators/Map/Haughton/Config.luau b/src/server/main/Elevators/Map/Haughton/Config.luau index 161d652..cccd410 100644 --- a/src/server/main/Elevators/Map/Haughton/Config.luau +++ b/src/server/main/Elevators/Map/Haughton/Config.luau @@ -20,8 +20,8 @@ ElevatorConfig.FloorLeveling3PhaseDistance = 1.5 ElevatorConfig.LevelingVelocity = .5 ElevatorConfig.Phase3LevelingVelocity = .5 ElevatorConfig.ParkedDistance = 0.2 -ElevatorConfig.Responsiveness = 5 -ElevatorConfig.MaxVelocity = 7 +ElevatorConfig.Responsiveness = 5 +ElevatorConfig.MaxVelocity = 7 ElevatorConfig.Functions = { ManualTravelStart = true @@ -35,28 +35,33 @@ ElevatorConfig.Colors = { ButtonDeactivated = { Color = Color3.fromRGB(136,143,145), Material = Enum.Material.SmoothPlastic - }, - LanternIndicator = { - On = { - Up = { - Color = Color3.fromRGB(44,255,157), - Material = Enum.Material.Neon - }, - Down = { - Color = Color3.fromRGB(255,29,101), - Material = Enum.Material.Neon - }, + } +} + +ElevatorConfig.Lanterns = { + On = { + Up = { + Color = Color3.fromRGB(44,255,157), + Material = Enum.Material.Neon, + Time = .30 + }, + Down = { + Color = Color3.fromRGB(255,29,101), + Material = Enum.Material.Neon, + Time = .30 + }, + }, + Off = { + Up = { + Color = Color3.fromRGB(172,174,197), + Material = Enum.Material.SmoothPlastic, + Time = .30 + }, + Down = { + Color = Color3.fromRGB(172,174,197), + Material = Enum.Material.SmoothPlastic, + Time = .30 }, - Off = { - Up = { - Color = Color3.fromRGB(172,174,197), - Material = Enum.Material.SmoothPlastic - }, - Down = { - Color = Color3.fromRGB(172,174,197), - Material = Enum.Material.SmoothPlastic - }, - } } } diff --git a/src/server/main/Map/Load/Tags/init.luau b/src/server/main/Map/Load/Tags/init.luau index 74f53ac..72760df 100644 --- a/src/server/main/Map/Load/Tags/init.luau +++ b/src/server/main/Map/Load/Tags/init.luau @@ -36,9 +36,7 @@ type Constructor_Return_Props = { export type Lantern = { Inst: BasePart, - Light: BasePart?, PointLight: PointLight?, - Played: boolean } export type ElevatorButtons = { @@ -225,35 +223,23 @@ function Tags:__ElevatorLanterns() if Floor then if not Lanterns[EnumValue :: Enums.ElevatorValues][Floor] then - local Light = ((Inst :: BasePart).Parent :: Instance):FindFirstChild("Light") :: BasePart? - Lanterns[EnumValue :: Enums.ElevatorValues][Floor] = { Inst = Inst :: BasePart, - Light = Light, - PointLight = Light and Light:FindFirstChildOfClass("PointLight") :: PointLight?, - Played = false + PointLight = (Inst :: BasePart):FindFirstChildWhichIsA("PointLight", true) :: PointLight? } else warn(`Lanterns: Floor "{tostring(Floor)}" was already wrote while parsing`) end else if FloorHint == "Up" then - local Light = ((Inst :: BasePart).Parent :: Instance):FindFirstChild("Light") :: BasePart? - Lanterns[EnumValue :: Enums.ElevatorValues].Up = { Inst = Inst :: BasePart, - Light = Light, - PointLight = Light and Light:FindFirstChildOfClass("PointLight") :: PointLight?, - Played = false + PointLight = (Inst :: BasePart):FindFirstChildWhichIsA("PointLight", true) :: PointLight? } elseif FloorHint == "Down" then - local Light = ((Inst :: BasePart).Parent :: Instance):FindFirstChild("Light") :: BasePart? - Lanterns[EnumValue :: Enums.ElevatorValues].Down = { Inst = Inst :: BasePart, - Light = Light, - PointLight = Light and Light:FindFirstChildOfClass("PointLight") :: PointLight?, - Played = false + PointLight = (Inst :: BasePart):FindFirstChildWhichIsA("PointLight", true) :: PointLight? } else warn(`Lanterns: Unknown type paired with "DirectionIndicator", {FloorHint}`) diff --git a/src/server/main/Types/Elevator.luau b/src/server/main/Types/Elevator.luau index 1da7481..cc77dd6 100644 --- a/src/server/main/Types/Elevator.luau +++ b/src/server/main/Types/Elevator.luau @@ -11,24 +11,27 @@ local DoorEnums = require(EnumsDir:WaitForChild("Doors")) local Enums = require(StorageService:WaitForChild("Enums")) local SoundEnums = require(EnumsDir:WaitForChild("Sounds")) -export type ButtonProperties = { +export type ButtonProperties = { Color: Color3, Material: Enum.Material } -export type Colors = { +export type ButtonColors = { ButtonActivated: ButtonProperties, ButtonDeactivated: ButtonProperties, - LanternIndicator: { - On: { - Up: ButtonProperties, - Down: ButtonProperties - }, - Off: { - Up: ButtonProperties, - Down: ButtonProperties - } +} + +export type LanternProperties = ButtonProperties & {Time: number} + +export type Lanterns = { + On: { + Up: LanternProperties, + Down: LanternProperties }, + Off: { + Up: LanternProperties, + Down: LanternProperties + } } export type ElevatorConfigurationTable = { @@ -48,7 +51,8 @@ export type ElevatorConfigurationTable = { LanternChimeDirection: SoundEnums.ElevatorSoundValues, LanternChimeLanding: SoundEnums.ElevatorSoundValues, }, - Colors: Colors, + Colors: ButtonColors, + Lanterns: Lanterns } export type DoorsConfigProperties = {