From 78bf856c7ea9cbb67149bc3929fb60e1e4010fef Mon Sep 17 00:00:00 2001 From: unittensor Date: Thu, 2 May 2024 22:59:55 -0400 Subject: [PATCH] Landing Doors parser --- sourcemap.json | 2 +- src/server/main/Elevators/Otis1960/init.lua | 2 - src/server/main/Load/Tags/init.lua | 57 ++++++++++++++++----- src/server/main/init.server.lua | 2 + 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/sourcemap.json b/sourcemap.json index 8f21efa..fc15f6c 100644 --- a/sourcemap.json +++ b/sourcemap.json @@ -1 +1 @@ -{"name":"ElevatorGame","className":"DataModel","filePaths":["default.project.json"],"children":[{"name":"ReplicatedFirst","className":"ReplicatedFirst","children":[{"name":"intro","className":"LocalScript","filePaths":["src/load\\intro\\init.client.lua"],"children":[{"name":"IntroGui","className":"ModuleScript","filePaths":["src/load\\intro\\IntroGui.lua"]}]}]},{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Algebra","className":"ModuleScript","filePaths":["src/shared\\Algebra.lua"]},{"name":"Client","className":"Folder","children":[{"name":"Camera","className":"ModuleScript","filePaths":["src/shared\\Client\\Camera.lua"]},{"name":"KeyBinds","className":"ModuleScript","filePaths":["src/shared\\Client\\KeyBinds.lua"]}]},{"name":"Delta","className":"ModuleScript","filePaths":["src/shared\\Delta.lua"]},{"name":"Enums","className":"ModuleScript","filePaths":["src/shared\\Enums.lua"]},{"name":"Property","className":"ModuleScript","filePaths":["src/shared\\Property.lua"]},{"name":"Server","className":"Folder","children":[{"name":"holder","className":"ModuleScript","filePaths":["src/shared\\Server\\holder.lua"]}]},{"name":"Tween","className":"ModuleScript","filePaths":["src/shared\\Tween.lua"]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"rapid/server","className":"Actor","children":[{"name":"main","className":"Script","filePaths":["src/server\\main\\init.server.lua"],"children":[{"name":"Elevators","className":"Folder","children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Buttons.lua"]},{"name":"Floors","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Floors.lua"]},{"name":"Lanterns","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Lanterns.lua"]},{"name":"Mover","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Mover.lua"]},{"name":"Otis1960","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\init.lua"],"children":[{"name":"Doors","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\Doors.lua"]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\Leveling.lua"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\MovingObjects.lua"]}]},{"name":"TractionRopes","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\TractionRopes.lua"]}]},{"name":"Lighting","className":"ModuleScript","filePaths":["src/server\\main\\Lighting\\init.lua"]},{"name":"Load","className":"Folder","children":[{"name":"EditorEntities","className":"ModuleScript","filePaths":["src/server\\main\\Load\\EditorEntities.lua"]},{"name":"StarterPlayer","className":"ModuleScript","filePaths":["src/server\\main\\Load\\StarterPlayer.lua"]},{"name":"Tags","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Tags\\init.lua"],"children":[{"name":"Lights","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Tags\\Lights.lua"]}]},{"name":"Workspace","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Workspace.lua"]}]},{"name":"Map","className":"Folder","children":[{"name":"Interactions","className":"Folder","children":[{"name":"LightSwitches","className":"ModuleScript","filePaths":["src/server\\main\\Map\\Interactions\\LightSwitches.lua"]}]},{"name":"Prompts","className":"ModuleScript","filePaths":["src/server\\main\\Map\\Prompts.lua"]}]},{"name":"PlayerAdded","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\init.lua"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\init.lua"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Actions.lua"]},{"name":"Flashlight","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Flashlight.lua"]},{"name":"Shadows","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Shadows.lua"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\SpineKinematics.lua"]}]},{"name":"Users","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Users.lua"]}]}]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"rapid/client","className":"Folder","children":[{"name":"Player","className":"LocalScript","filePaths":["src/client\\init.client.lua"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/client\\Character\\init.lua"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/client\\Character\\Actions.lua"]},{"name":"Camera","className":"ModuleScript","filePaths":["src/client\\Character\\Camera\\init.lua"],"children":[{"name":"Bobbing","className":"ModuleScript","filePaths":["src/client\\Character\\Camera\\Bobbing.lua"]}]},{"name":"Humanoid","className":"ModuleScript","filePaths":["src/client\\Character\\Humanoid.lua"]},{"name":"HumanoidRootPart","className":"ModuleScript","filePaths":["src/client\\Character\\HumanoidRootPart.lua"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/client\\Character\\SpineKinematics.lua"]}]},{"name":"CoreGuis","className":"ModuleScript","filePaths":["src/client\\CoreGuis.lua"]},{"name":"GuiService","className":"ModuleScript","filePaths":["src/client\\GuiService.lua"]},{"name":"Mouse","className":"ModuleScript","filePaths":["src/client\\Mouse.lua"]},{"name":"UI","className":"Folder","children":[{"name":"Crosshair","className":"ModuleScript","filePaths":["src/client\\UI\\Crosshair.lua"]},{"name":"Health","className":"ModuleScript","filePaths":["src/client\\UI\\Health.lua"]},{"name":"Vignette","className":"ModuleScript","filePaths":["src/client\\UI\\Vignette.lua"]}]}]}]}]}]}]} \ No newline at end of file +{"name":"ElevatorGame","className":"DataModel","filePaths":["default.project.json"],"children":[{"name":"ReplicatedFirst","className":"ReplicatedFirst","children":[{"name":"intro","className":"LocalScript","filePaths":["src/load\\intro\\init.client.lua"],"children":[{"name":"IntroGui","className":"ModuleScript","filePaths":["src/load\\intro\\IntroGui.lua"]}]}]},{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Algebra","className":"ModuleScript","filePaths":["src/shared\\Algebra.lua"]},{"name":"Client","className":"Folder","children":[{"name":"Camera","className":"ModuleScript","filePaths":["src/shared\\Client\\Camera.lua"]},{"name":"KeyBinds","className":"ModuleScript","filePaths":["src/shared\\Client\\KeyBinds.lua"]}]},{"name":"Delta","className":"ModuleScript","filePaths":["src/shared\\Delta.lua"]},{"name":"Enums","className":"ModuleScript","filePaths":["src/shared\\Enums.lua"]},{"name":"Property","className":"ModuleScript","filePaths":["src/shared\\Property.lua"]},{"name":"Server","className":"Folder","children":[{"name":"holder","className":"ModuleScript","filePaths":["src/shared\\Server\\holder.lua"]}]},{"name":"Tween","className":"ModuleScript","filePaths":["src/shared\\Tween.lua"]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"rapid/server","className":"Actor","children":[{"name":"main","className":"Script","filePaths":["src/server\\main\\init.server.lua"],"children":[{"name":"Elevators","className":"Folder","children":[{"name":"Buttons","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Buttons.lua"]},{"name":"Lanterns","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Lanterns.lua"]},{"name":"Mover","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Mover.lua"]},{"name":"Otis1960","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\init.lua"],"children":[{"name":"Doors","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\Doors.lua"]},{"name":"Leveling","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\Leveling.lua"]},{"name":"MovingObjects","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\Otis1960\\MovingObjects.lua"]}]},{"name":"TractionRopes","className":"ModuleScript","filePaths":["src/server\\main\\Elevators\\TractionRopes.lua"]}]},{"name":"Lighting","className":"ModuleScript","filePaths":["src/server\\main\\Lighting\\init.lua"]},{"name":"Load","className":"Folder","children":[{"name":"EditorEntities","className":"ModuleScript","filePaths":["src/server\\main\\Load\\EditorEntities.lua"]},{"name":"StarterPlayer","className":"ModuleScript","filePaths":["src/server\\main\\Load\\StarterPlayer.lua"]},{"name":"Tags","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Tags\\init.lua"],"children":[{"name":"Lights","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Tags\\Lights.lua"]}]},{"name":"Workspace","className":"ModuleScript","filePaths":["src/server\\main\\Load\\Workspace.lua"]}]},{"name":"Map","className":"Folder","children":[{"name":"Interactions","className":"Folder","children":[{"name":"LightSwitches","className":"ModuleScript","filePaths":["src/server\\main\\Map\\Interactions\\LightSwitches.lua"]}]},{"name":"Prompts","className":"ModuleScript","filePaths":["src/server\\main\\Map\\Prompts.lua"]}]},{"name":"PlayerAdded","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\init.lua"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\init.lua"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Actions.lua"]},{"name":"Flashlight","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Flashlight.lua"]},{"name":"Shadows","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\Shadows.lua"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Character\\SpineKinematics.lua"]}]},{"name":"Users","className":"ModuleScript","filePaths":["src/server\\main\\PlayerAdded\\Users.lua"]}]}]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"rapid/client","className":"Folder","children":[{"name":"Player","className":"LocalScript","filePaths":["src/client\\init.client.lua"],"children":[{"name":"Character","className":"ModuleScript","filePaths":["src/client\\Character\\init.lua"],"children":[{"name":"Actions","className":"ModuleScript","filePaths":["src/client\\Character\\Actions.lua"]},{"name":"Camera","className":"ModuleScript","filePaths":["src/client\\Character\\Camera\\init.lua"],"children":[{"name":"Bobbing","className":"ModuleScript","filePaths":["src/client\\Character\\Camera\\Bobbing.lua"]}]},{"name":"Humanoid","className":"ModuleScript","filePaths":["src/client\\Character\\Humanoid.lua"]},{"name":"HumanoidRootPart","className":"ModuleScript","filePaths":["src/client\\Character\\HumanoidRootPart.lua"]},{"name":"SpineKinematics","className":"ModuleScript","filePaths":["src/client\\Character\\SpineKinematics.lua"]}]},{"name":"CoreGuis","className":"ModuleScript","filePaths":["src/client\\CoreGuis.lua"]},{"name":"GuiService","className":"ModuleScript","filePaths":["src/client\\GuiService.lua"]},{"name":"Mouse","className":"ModuleScript","filePaths":["src/client\\Mouse.lua"]},{"name":"UI","className":"Folder","children":[{"name":"Crosshair","className":"ModuleScript","filePaths":["src/client\\UI\\Crosshair.lua"]},{"name":"Health","className":"ModuleScript","filePaths":["src/client\\UI\\Health.lua"]},{"name":"Vignette","className":"ModuleScript","filePaths":["src/client\\UI\\Vignette.lua"]}]}]}]}]}]}]} \ 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 f6cb8b1..cdad693 100644 --- a/src/server/main/Elevators/Otis1960/init.lua +++ b/src/server/main/Elevators/Otis1960/init.lua @@ -183,8 +183,6 @@ function Otis1960.constructor(TagsConstructor, ButtonsTags, LanternsTags) local ClassConstructor = setmetatable(self, Otis1960) HookButtons(ClassConstructor, ButtonsConstructor, Enums.ButtonTree.Car) - print("[DEBUG] Otis1960 Lanterns=", LanternsTags) - print("[DEBUG] Otis1960 Buttons=", Otis1960_Buttons) print("🔝 Otis1960 initialized and ready") return ClassConstructor end diff --git a/src/server/main/Load/Tags/init.lua b/src/server/main/Load/Tags/init.lua index d64945c..a9fedec 100644 --- a/src/server/main/Load/Tags/init.lua +++ b/src/server/main/Load/Tags/init.lua @@ -19,14 +19,13 @@ type Impl_Constructor = { Request: (self: ClassConstructor, Name: string) -> TagProduct | Error, __ElevatorLanterns: (self: ClassConstructor) -> LanternsTree, __ElevatorButtons: (self: ClassConstructor) -> ElevatorModelButtons, - __ElevatorDoors: (self: ClassConstructor) -> any, + __ElevatorDoors: (self: ClassConstructor) -> DoorTags, __Interactables: (self: ClassConstructor) -> InteractablesTree } & Impl_Static_Props type Impl_Static_Props = { Decoders: { - CarTag: (FloorTag: string) -> number?, - FloorTag: (FloorTag: string) -> string? + CarTag: (FloorTag: string) -> number? } } @@ -110,6 +109,12 @@ export type ExportedTags = { [string]: TagProduct } +export type DoorTags = { + [Enums.ElevatorValues]: { + [number]: {Instance} + } +} + export type TagProduct = Instance | {Instance} export type TagsConstructor = ClassConstructor @@ -120,10 +125,6 @@ Tags.Decoders = { CarTag = function(FloorTag) local Match = FloorTag:match('^%d+$') return Match and tonumber(Match) - end, - - FloorTag = function(FloorTag) - return FloorTag:match('^Floor%d+$') end } @@ -227,7 +228,7 @@ function Tags:__ElevatorButtons() if typeof(Inst) == "Instance" then Buttons[EnumValue :: Enums.ElevatorValues][TagName] = Inst else - warn("TODO block hit,", debug.traceback()) + warn(`TODO block hit. Inst={Inst},`, debug.traceback()) end end end @@ -236,22 +237,54 @@ function Tags:__ElevatorButtons() return Buttons end +--Model_Floor10_Door_2 function Tags:__ElevatorDoors() - local Doors = {} + local Doors: DoorTags = {} for _, EnumValue in Enums.Elevator do Doors[EnumValue :: Enums.ElevatorValues] = {} for TagName: string, Inst: TagProduct in self.__export do local Split = TagName:split('_') - local ModelHint = Split[1] - local FloorHint = Split[2] + local ModelHint = Split[1] + local FloorHint = Split[2] + local DoorHint = Split[3] + local DoorNumber = Split[4] - if ModelHint == (EnumValue :: Enums.ElevatorValues) and Tags.Decoders.FloorTag(ModelHint) then + if ModelHint == (EnumValue :: Enums.ElevatorValues) then + if FloorHint:match('^Floor%d+$') then + if DoorHint == "Door" then + local FloorNumberMatch = FloorHint:match('%d+$') + local FloorNumber = FloorNumberMatch and tonumber(FloorNumberMatch) + if FloorNumber then + local DoorNumberPlacement = tonumber(DoorNumber) + + if DoorNumberPlacement then + if not Doors[ModelHint][FloorNumber] then + Doors[ModelHint][FloorNumber] = {} + end + + if typeof(Inst) ~= "Instance" then + Inst = Inst[1] + warn(`[{ModelHint}] Door {Inst} was not a single instance, duplicate doors detected Tag={TagName}`) + end + table.insert(Doors[ModelHint][FloorNumber], DoorNumberPlacement, Inst :: Instance) + else + + end + else + warn(`Invalid floor label {FloorHint} for door {TagName},`, debug.traceback()) + end + else + warn(`TODO block hit. Inst={Inst},`, debug.traceback()) + end + end end end end + + return Doors end function Tags:__Interactables() diff --git a/src/server/main/init.server.lua b/src/server/main/init.server.lua index b764318..a66d173 100644 --- a/src/server/main/init.server.lua +++ b/src/server/main/init.server.lua @@ -47,6 +47,8 @@ local Buttons = TagsConstructor:__ElevatorButtons() print("[DEBUG] Buttons=", Buttons) local Lanterns = TagsConstructor:__ElevatorLanterns() print("[DEBUG] Lanterns=", Lanterns) +local LandingDoors = TagsConstructor:__ElevatorDoors() +print("[DEBUG] Elevator Landing Doors=", LandingDoors) local Otis1960Lanterns = Lanterns[Enums.Elevator.Otis1960] local Otis1960Buttons = Buttons[Enums.Elevator.Otis1960]