mirror of
https://github.com/unixtensor/Roblox-Elevator-Game.git
synced 2025-12-14 06:41:55 +00:00
Lantern config and working lantern state
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user