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 = {
|
Up = {
|
||||||
Color = Color3.fromRGB(44,255,157),
|
Color = Color3.fromRGB(44,255,157),
|
||||||
Material = Enum.Material.Neon,
|
Material = Enum.Material.Neon,
|
||||||
Time = .30
|
Time = 1
|
||||||
},
|
},
|
||||||
Down = {
|
Down = {
|
||||||
Color = Color3.fromRGB(255,29,101),
|
Color = Color3.fromRGB(255, 56, 59),
|
||||||
Material = Enum.Material.Neon,
|
Material = Enum.Material.Neon,
|
||||||
Time = .30
|
Time = 1
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Off = {
|
Off = {
|
||||||
Up = {
|
Up = {
|
||||||
Color = Color3.fromRGB(172,174,197),
|
Color = Color3.fromRGB(172,174,197),
|
||||||
Material = Enum.Material.SmoothPlastic,
|
Material = Enum.Material.SmoothPlastic,
|
||||||
Time = .30
|
Time = 1
|
||||||
},
|
},
|
||||||
Down = {
|
Down = {
|
||||||
Color = Color3.fromRGB(172,174,197),
|
Color = Color3.fromRGB(172,174,197),
|
||||||
Material = Enum.Material.SmoothPlastic,
|
Material = Enum.Material.SmoothPlastic,
|
||||||
Time = .30
|
Time = 1
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,12 +68,12 @@ ElevatorConfig.Lanterns = {
|
|||||||
local DoorsConfig: ElevatorTypes.DoorsConfig = {
|
local DoorsConfig: ElevatorTypes.DoorsConfig = {
|
||||||
Cab = {
|
Cab = {
|
||||||
Type = DoorEnums.Door.DoubleSpeed,
|
Type = DoorEnums.Door.DoubleSpeed,
|
||||||
Time = 4,
|
Time = 5,
|
||||||
Goal = Vector3.new(4.027)
|
Goal = Vector3.new(4.027)
|
||||||
},
|
},
|
||||||
Landing = {
|
Landing = {
|
||||||
Type = DoorEnums.Door.SingleSpeed,
|
Type = DoorEnums.Door.SingleSpeed,
|
||||||
Time = 4,
|
Time = 5,
|
||||||
Goal = Vector3.new(4.221)
|
Goal = Vector3.new(4.221)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,11 @@ local ParentDir = script.Parent
|
|||||||
local ElevatorsDir = ParentDir.Parent.Parent
|
local ElevatorsDir = ParentDir.Parent.Parent
|
||||||
local MainDir = ElevatorsDir.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 ButtonEvents = require(script:WaitForChild("Buttons"))
|
||||||
local InitElevator = require(ElevatorsDir:WaitForChild("System"))
|
local InitElevator = require(ElevatorSystem)
|
||||||
local Doors = require(ParentDir:WaitForChild("Doors"))
|
local Doors = require(ParentDir:WaitForChild("Doors"))
|
||||||
local Buttons = require(ParentDir:WaitForChild("Buttons"))
|
local Buttons = require(ParentDir:WaitForChild("Buttons"))
|
||||||
local MovingObjects = require(ParentDir:WaitForChild("MovingObjects"))
|
local MovingObjects = require(ParentDir:WaitForChild("MovingObjects"))
|
||||||
@@ -25,6 +28,7 @@ type Constructor_Fun = (
|
|||||||
ElevatorConstructor: InitElevator.constructor,
|
ElevatorConstructor: InitElevator.constructor,
|
||||||
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable,
|
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable,
|
||||||
DoorsConstructor: Doors.constructor,
|
DoorsConstructor: Doors.constructor,
|
||||||
|
ArrowLanternsConstructor: ArrowLanterns.constructor,
|
||||||
ButtonsConstructor: Buttons.constructor,
|
ButtonsConstructor: Buttons.constructor,
|
||||||
ElevatorBoxModel: BasePart,
|
ElevatorBoxModel: BasePart,
|
||||||
Leveling: {number},
|
Leveling: {number},
|
||||||
@@ -36,6 +40,7 @@ type Constructor_Return_Props = {
|
|||||||
ElevatorConstructor: InitElevator.constructor,
|
ElevatorConstructor: InitElevator.constructor,
|
||||||
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable,
|
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable,
|
||||||
DoorsConstructor: Doors.constructor,
|
DoorsConstructor: Doors.constructor,
|
||||||
|
ArrowLanternsConstructor: ArrowLanterns.constructor,
|
||||||
ButtonsConstructor: Buttons.constructor,
|
ButtonsConstructor: Buttons.constructor,
|
||||||
ElevatorBoxModel: BasePart,
|
ElevatorBoxModel: BasePart,
|
||||||
Leveling: {number},
|
Leveling: {number},
|
||||||
@@ -50,6 +55,7 @@ function Events.constructor(
|
|||||||
ElevatorConstructor,
|
ElevatorConstructor,
|
||||||
ElevatorConfig,
|
ElevatorConfig,
|
||||||
DoorsConstructor,
|
DoorsConstructor,
|
||||||
|
ArrowLanternsConstructor,
|
||||||
ButtonsConstructor,
|
ButtonsConstructor,
|
||||||
ElevatorBoxModel,
|
ElevatorBoxModel,
|
||||||
Leveling,
|
Leveling,
|
||||||
@@ -60,6 +66,7 @@ function Events.constructor(
|
|||||||
ElevatorConstructor = ElevatorConstructor,
|
ElevatorConstructor = ElevatorConstructor,
|
||||||
ElevatorConfig = ElevatorConfig,
|
ElevatorConfig = ElevatorConfig,
|
||||||
DoorsConstructor = DoorsConstructor,
|
DoorsConstructor = DoorsConstructor,
|
||||||
|
ArrowLanternsConstructor = ArrowLanternsConstructor,
|
||||||
ButtonsConstructor = ButtonsConstructor,
|
ButtonsConstructor = ButtonsConstructor,
|
||||||
ElevatorBoxModel = ElevatorBoxModel,
|
ElevatorBoxModel = ElevatorBoxModel,
|
||||||
Leveling = Leveling,
|
Leveling = Leveling,
|
||||||
@@ -68,6 +75,20 @@ function Events.constructor(
|
|||||||
}, Events)
|
}, Events)
|
||||||
end
|
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)
|
local function ElevatorEvents(self: ClassConstructor)
|
||||||
self.ElevatorConstructor.Events.Traveling:Connect(function(_DeltaTime: number, CabPosition: Vector3)
|
self.ElevatorConstructor.Events.Traveling:Connect(function(_DeltaTime: number, CabPosition: Vector3)
|
||||||
local CabVelocity = self.ElevatorBoxModel:GetVelocityAtPosition(CabPosition)
|
local CabVelocity = self.ElevatorBoxModel:GetVelocityAtPosition(CabPosition)
|
||||||
@@ -102,7 +123,12 @@ local function ElevatorEvents(self: ClassConstructor)
|
|||||||
self.DoorsConstructor:OpenCabAsync()
|
self.DoorsConstructor:OpenCabAsync()
|
||||||
end
|
end
|
||||||
self.MovingObjectsConstructor:RotateRelayCogs3()
|
self.MovingObjectsConstructor:RotateRelayCogs3()
|
||||||
|
|
||||||
|
self.ElevatorConfig.FloorLevelingDistance = 10
|
||||||
|
print(self.ElevatorConfig.FloorLevelingDistance)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
ElevatorAttributes(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Events:InitButtons()
|
function Events:InitButtons()
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
--!optimize 2
|
--!optimize 2
|
||||||
--!strict
|
--!strict
|
||||||
|
|
||||||
local ButtonPromptsDistance = Vector3.new(-.05,0,0)
|
local ButtonPromptsDistance = Vector3.new(-.05)
|
||||||
|
|
||||||
local ParentDir = script.Parent
|
local ParentDir = script.Parent
|
||||||
local ElevatorsDir = ParentDir.Parent
|
local ElevatorsDir = ParentDir.Parent
|
||||||
local MainDir = ElevatorsDir.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 Events = require(script:WaitForChild("Events"))
|
||||||
local Config = require(script:WaitForChild("Config"))
|
local Config = require(script:WaitForChild("Config"))
|
||||||
local Buttons = require(script:WaitForChild("Buttons"))
|
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)
|
local ButtonsConstructor = Buttons.constructor(Config.Elevator.Name, ButtonTags, Elevator.Attributes.CurrentFloor)
|
||||||
ButtonsConstructor:InitForElevator(2, ButtonPromptsDistance)
|
ButtonsConstructor:InitForElevator(2, ButtonPromptsDistance)
|
||||||
|
|
||||||
|
local ArrowLanternConstructor = ArrowLantern.constructor(LanternTags, Config.Elevator)
|
||||||
local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject)
|
local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject)
|
||||||
local DoorsConstructor = Doors.constructor(Leveling, ElevatorBoxModel, Config.Doors, LandingDoorTags)
|
local DoorsConstructor = Doors.constructor(Leveling, ElevatorBoxModel, Config.Doors, LandingDoorTags)
|
||||||
local EventsConstructor = Events.constructor(
|
local EventsConstructor = Events.constructor(
|
||||||
Elevator,
|
Elevator,
|
||||||
Config.Elevator,
|
Config.Elevator,
|
||||||
DoorsConstructor,
|
DoorsConstructor,
|
||||||
|
ArrowLanternConstructor,
|
||||||
ButtonsConstructor,
|
ButtonsConstructor,
|
||||||
ElevatorBoxModel,
|
ElevatorBoxModel,
|
||||||
Leveling,
|
Leveling,
|
||||||
MovingObjectsConstructor,
|
MovingObjectsConstructor,
|
||||||
TractionRopesConstructor
|
TractionRopesConstructor
|
||||||
)
|
)
|
||||||
|
TractionRopesConstructor:Update()
|
||||||
EventsConstructor:InitButtons()
|
EventsConstructor:InitButtons()
|
||||||
|
ArrowLanternConstructor:Toggle(true, true)
|
||||||
|
|
||||||
if DoorsConstructor:OpenAtFloor(Elevator.Attributes.CurrentFloor.Value) then
|
if DoorsConstructor:OpenAtFloor(Elevator.Attributes.CurrentFloor.Value) then
|
||||||
DoorsConstructor:OpenCabAsync()
|
DoorsConstructor:OpenCabAsync()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
--!optimize 2
|
--!optimize 2
|
||||||
--!strict
|
--!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 TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags"))
|
||||||
local ElevatorTypes = require(MainDir:WaitForChild("Types"):WaitForChild("Elevator"))
|
local ElevatorTypes = require(MainDir:WaitForChild("Types"):WaitForChild("Elevator"))
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ type Impl_Constructor = {
|
|||||||
__index: Impl_Constructor,
|
__index: Impl_Constructor,
|
||||||
constructor: Constructor_Fun,
|
constructor: Constructor_Fun,
|
||||||
--Class functions
|
--Class functions
|
||||||
Toggle: (self: ClassConstructor, OnState: boolean, UpDirection: boolean) -> Tween?,
|
Toggle: (self: ClassConstructor, OnState: boolean, UpLantern: boolean) -> Tween?,
|
||||||
Off: (self: ClassConstructor) -> (Tween?, Tween?),
|
Off: (self: ClassConstructor) -> (Tween?, Tween?),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,6 +22,8 @@ type Constructor_Return_Props = {
|
|||||||
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable
|
ElevatorConfig: ElevatorTypes.ElevatorConfigurationTable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type constructor = ClassConstructor
|
||||||
|
|
||||||
local ArrowLanterns = {} :: Impl_Constructor
|
local ArrowLanterns = {} :: Impl_Constructor
|
||||||
ArrowLanterns.__index = ArrowLanterns
|
ArrowLanterns.__index = ArrowLanterns
|
||||||
|
|
||||||
@@ -32,15 +34,15 @@ function ArrowLanterns.constructor(Lanterns, ElevatorConfig)
|
|||||||
}, ArrowLanterns)
|
}, ArrowLanterns)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ArrowLanterns:Toggle(OnState, UpDirection)
|
function ArrowLanterns:Toggle(OnState, UpLantern)
|
||||||
local LanternType = UpDirection and self.Lanterns.Up or self.Lanterns.Down
|
local LanternType = UpLantern and self.Lanterns.Up or self.Lanterns.Down
|
||||||
if LanternType then
|
if LanternType then
|
||||||
--mega boolean short circuit
|
--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
|
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, {
|
local UpArrowTween = TS:Create(LanternType.Inst, TweenTime, {
|
||||||
Color = ConfigState.Color
|
Color = ConfigState.Color
|
||||||
})
|
})
|
||||||
@@ -51,7 +53,7 @@ function ArrowLanterns:Toggle(OnState, UpDirection)
|
|||||||
|
|
||||||
return UpArrowTween
|
return UpArrowTween
|
||||||
else
|
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
|
end
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user