From 0e119db084a1f395b5451ebba50ddb15a4d70008 Mon Sep 17 00:00:00 2001 From: unittensor Date: Wed, 8 May 2024 21:46:43 -0400 Subject: [PATCH] hall displays --- .../main/Elevators/Otis1960/HallDisplays.lua | 33 ++++++++++++++----- src/server/main/Elevators/Otis1960/init.lua | 7 ++-- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/server/main/Elevators/Otis1960/HallDisplays.lua b/src/server/main/Elevators/Otis1960/HallDisplays.lua index 9548ac0..0daab25 100644 --- a/src/server/main/Elevators/Otis1960/HallDisplays.lua +++ b/src/server/main/Elevators/Otis1960/HallDisplays.lua @@ -2,37 +2,54 @@ --!native --!strict +type HallDisplays = {Instance} + type ClassConstructor = typeof(setmetatable({} :: Constructor_Return_Props, {} :: Impl_Constructor)) type Impl_Constructor = { __index: Impl_Constructor, constructor: Constructor_Fun, --Class functions - BindHallDisplays: (self: ClassConstructor) -> () + BindHallDisplays: (self: ClassConstructor) -> (), + UnBindHallDisplays: (self: ClassConstructor) -> (), + SetHallDisplays: (self: ClassConstructor, floor: string) -> () } -type Constructor_Fun = (CurrentFloorAttribute: IntValue) -> ClassConstructor +type Constructor_Fun = (CurrentFloorAttribute: IntValue, HallDisplayTags: HallDisplays) -> ClassConstructor type Constructor_Return_Props = { CurrentFloorAttribute: IntValue, + HallDisplayTags: HallDisplays, __CurrentFloorConnection: RBXScriptConnection? } +export type HallDisplaysConstructor = ClassConstructor + local HallDisplays = {} :: Impl_Constructor HallDisplays.__index = HallDisplays -function HallDisplays.constructor(CurrentFloorAttribute) +function HallDisplays.constructor(CurrentFloorAttribute, HallDisplayTags) return setmetatable({ - CurrentFloorAttribute = CurrentFloorAttribute + CurrentFloorAttribute = CurrentFloorAttribute, + HallDisplayTags = HallDisplayTags }, HallDisplays) end -function HallDisplays:BindHallDisplays() - if self.__CurrentFloorConnection and self.__CurrentFloorConnection.Connected then - self.__CurrentFloorConnection:Disconnect() +function HallDisplays:SetHallDisplays(floor) + for i = 1, #self.HallDisplayTags do + (self.HallDisplayTags[i] :: TextLabel).Text = floor end +end +function HallDisplays:BindHallDisplays() + self:UnBindHallDisplays() self.__CurrentFloorConnection = self.CurrentFloorAttribute:GetPropertyChangedSignal("Value"):Connect(function() - + self:SetHallDisplays(tostring(self.CurrentFloorAttribute.Value)) end) end +function HallDisplays:UnBindHallDisplays() + if self.__CurrentFloorConnection and self.__CurrentFloorConnection.Connected then + self.__CurrentFloorConnection:Disconnect() + end +end + return HallDisplays \ No newline at end of file diff --git a/src/server/main/Elevators/Otis1960/init.lua b/src/server/main/Elevators/Otis1960/init.lua index c77254e..1ffec1a 100644 --- a/src/server/main/Elevators/Otis1960/init.lua +++ b/src/server/main/Elevators/Otis1960/init.lua @@ -11,9 +11,10 @@ local RS: RunService = game:GetService("RunService") local Enums = require(Storage:WaitForChild("Enums")) -local Leveling = require(script:WaitForChild("Leveling")) -local Doors = require(script:WaitForChild("Doors")) -local MovingObjects = require(script:WaitForChild("MovingObjects")) +local Leveling = require(script:WaitForChild("Leveling")) +local Doors = require(script:WaitForChild("Doors")) +local MovingObjects = require(script:WaitForChild("MovingObjects")) +local HallDisplays = require(script:WaitForChild("HallDisplays")) local ElevatorMover = require(Elevators:WaitForChild("Mover")) local ButtonTags = require(Elevators:WaitForChild("Buttons"))