Lantern config and working lantern state

This commit is contained in:
2024-09-13 00:11:12 -04:00
parent 80b0edeca8
commit 192a971723
4 changed files with 53 additions and 17 deletions

View File

@@ -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)
}
}

View File

@@ -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()

View File

@@ -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

View File

@@ -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