Actor support

This commit is contained in:
2024-02-21 13:23:23 -05:00
parent ff16d8ceb3
commit e5f1a546b1
21 changed files with 284 additions and 73 deletions

View File

@@ -2,17 +2,31 @@ local Floors = {}
Floors.__index = Floors
local Storage = game:GetService("ReplicatedStorage")
local CS = game:GetService("CollectionService")
local Tags = require(Storage:WaitForChild("Tags"))
function Floors.constructor(NumberOfFloors: number)
return setmetatable({NumberOfFloors = NumberOfFloors}, Floors)
function Floors.constructor(NumberOfFloors: number, Year: string)
local Floors = {}
for i: number = 1, NumberOfFloors do
local FloorTag_1 = CS:GetTagged(`ElevatorDoor_{Year}_Floor{tostring(i)}_1`)
local FloorTag_2 = CS:GetTagged(`ElevatorDoor_{Year}_Floor{tostring(i)}_2`)
if FloorTag_1 then
table.insert(Floors, FloorTag_1)
end
if FloorTag_2 then
table.insert(Floors, FloorTag_2)
end
end
return setmetatable({
NumberOfFloors = NumberOfFloors,
Floors = Floors
}, Floors)
end
--NumberOfFloors syntax: ElevatorDoor_(year)_Floor(floors amount)_1/2
function Floors:GetFloors(Year: string)
for i: number = 1, self.NumberOfFloors do
end
function Floors:GetFloor(Floor: number): Instance?
end
return Floors

View File

@@ -18,10 +18,11 @@ local Tags = require(Storage:WaitForChild("Tags"))
local Floor10_Door1 = Tags.ElevatorDoor_1960_Floor10_1
local Floor10_Door2 = Tags.ElevatorDoor_1960_Floor10_2
type DoorSensors = {
[string]: Instance
}
function Doors.constructor(ElevatorBox: BasePart, ElevatorDoor1: BasePart, ElevatorDoor2: BasePart, ElevatorDoorSensor: Folder)
type DoorSensors = {
[string]: BasePart
}
local DoorTween1 = Tween.constructor(nil, ElevatorDoor1)
local DoorTween2 = Tween.constructor(nil, ElevatorDoor2)
local DoorSensor: DoorSensors = {
@@ -29,7 +30,7 @@ function Doors.constructor(ElevatorBox: BasePart, ElevatorDoor1: BasePart, Eleva
End = ElevatorDoorSensor:WaitForChild("End")
}
local DoorClosingClick = Instance.new("Sound")
local DoorClosingClick = Instance.new("Sound") :: Sound
DoorClosingClick.SoundId = "rbxassetid://16357740945"
DoorClosingClick.Volume = .1
DoorClosingClick.Parent = ElevatorDoor2
@@ -66,10 +67,10 @@ local function DoorsAnimationFloor(floor: number, opening: boolean?, activated_v
activated_via_censor and Enum.EasingStyle.Linear or Doors.ElevatorDoorStyle,
Enum.EasingDirection.InOut
), Floor10_Door2)
local Door1Tween_Floor: Tween = Floor10_Door1:Start(nil, {
local Door1Tween_Floor: Tween = DoorTween1:Start(nil, {
Position = opening and init_closed_door1 or init_opened_door1
})
local Door2Tween_Floor: Tween = Floor10_Door2:Start(nil, {
local Door2Tween_Floor: Tween = DoorTween2:Start(nil, {
Position = opening and init_closed_door1 or init_opened_door1
})
@@ -79,8 +80,8 @@ end
local function DoorsAnimation(self, opening: boolean?, activated_via_censor: boolean?)
self.ElevatorBox.Anchored = true
local ElevatorDoor1_P = self.ElevatorDoor1.Position
local ElevatorDoor2_P = self.ElevatorDoor2.Position
local ElevatorDoor1_P: Vector3 = self.ElevatorDoor1.Position
local ElevatorDoor2_P: Vector3 = self.ElevatorDoor2.Position
local TweenTime = activated_via_censor and sensor_opening_speed or opening and opening_speed or Doors.ElevatorDoorTime
@@ -115,7 +116,7 @@ local function DoorsAnimation(self, opening: boolean?, activated_via_censor: boo
--Door clicking noise
task.delay(Doors.ElevatorDoorTime-.90, function()
--is the door close enough to closing?
if init_closed_door2.X-self.ElevatorDoor2.Position.X>5 then
if (init_closed_door2 :: Vector3).X-self.ElevatorDoor2.Position.X>5 then
self.DoorClosingClick:Play()
end
end)
@@ -140,12 +141,15 @@ for n: number = 1, #workspace_items do
end
end
function Doors:DetectSensorHit(DoorTween1, DoorTween2): RBXScriptSignal?
local Step = nil
type this = any --yeah,
type PossibleStepConnection = any
function Doors:DetectSensorHit(DoorTween1, DoorTween2): RBXScriptSignal
local Step: PossibleStepConnection = nil
if Doors.Sensors and Doors.Closed then
raycastParams.FilterDescendantsInstances = {self.ElevatorBox, table.unpack(RayIgnoring)}
Step = RS.Stepped:Connect(function(_delta, _dt)
Step = (RS :: RunService).Stepped:Connect(function(_delta, _dt)
local DoorSensor = workspace:Raycast(self.DoorSensor.Start.Position, self.DoorSensor.End.Position, raycastParams)
if DoorSensor and DoorSensor.Instance and DoorSensor.Instance:IsA("BasePart") then
@@ -153,7 +157,7 @@ function Doors:DetectSensorHit(DoorTween1, DoorTween2): RBXScriptSignal?
DoorTween1:Pause()
DoorTween2:Pause()
task.wait(1) --elevators irl have this delay
DoorsAnimation(self, true, true)
DoorsAnimation((self :: this), true, true)
-- DoorTween1:Destroy()
-- DoorTween2:Destroy()
end

View File

@@ -1,23 +1,23 @@
local Elevator = script.Parent
local Elevators = Elevator.Parent
local Elevators = (Elevator :: Instance).Parent
local RS = game:GetService("ReplicatedStorage")
local Tags = require(RS:WaitForChild("Tags"))
local Leveling = require(Elevators:WaitForChild("Leveling"))
local Doors = require(Elevator:WaitForChild("Doors"))
local ElevatorMover = require(Elevators:WaitForChild("Mover"))
local ElevatorBox_1960 = Tags.ElevatorMover_1960
local ElevatorBox = Tags.ElevatorMover_1960 :: BasePart
local ElevatorDoor1 = Tags.ElevatorDoor_1960_1 :: BasePart
local ElevatorDoor2 = Tags.ElevatorDoor_1960_2 :: BasePart
local ElevatorDoorSensor = Tags.ElevatorDoor_Sensor_1960 :: Folder
local ElevatorBox_1960: BasePart = Tags.ElevatorMover_1960
local ElevatorBoxStartPos = ElevatorBox_1960.Position
local ElevatorMover = require(Elevators:WaitForChild("Mover"))
local _BoxAttachment, BoxAlignPosition, _BoxAlignOrientation = ElevatorMover(ElevatorBox_1960, ElevatorBoxStartPos)
local ElevatorBox: BasePart = Tags.ElevatorMover_1960
local ElevatorDoor1: BasePart = Tags.ElevatorDoor_1960_1
local ElevatorDoor2: BasePart = Tags.ElevatorDoor_1960_2
local ElevatorDoorSensor: Folder = Tags.ElevatorDoor_Sensor_1960
local ElevatorDoors = Doors.constructor(ElevatorBox, ElevatorDoor1, ElevatorDoor2, ElevatorDoorSensor)
local function MoveFloors(level: number)
@@ -33,6 +33,8 @@ local function GoTo_Level(requested_level: number)
end
end
print("[DEBUG]: Tags:",Tags)
-- while true do
-- task.wait(2)
-- ElevatorDoors:Opening(true)

View File

@@ -1,3 +1,3 @@
return function()
workspace.Gravity = 150
workspace.Gravity = 50
end