diff --git a/package.json b/package.json
index 707cbd5..f637509 100644
--- a/package.json
+++ b/package.json
@@ -38,11 +38,11 @@
"@rbxts/make": "^1.0.6",
"@rbxts/matter": "^0.6.2-ts.6",
"@rbxts/plasma": "^0.4.1-ts.1",
- "@rbxts/pretty-roact-hooks": "^3.1.1",
"@rbxts/reflex": "^4.2.0",
"@rbxts/rewire": "^0.3.0",
"@rbxts/roact": "^1.4.4-ts.0",
"@rbxts/roact-hooked": "^2.6.0",
+ "@rbxts/roact-hooked-plus": "^1.8.1",
"@rbxts/roact-reflex": "^2.1.0",
"@rbxts/services": "^1.5.1",
"@rbxts/testez": "^0.4.2-ts.0",
diff --git a/readme.md b/readme.md
index 28b9431..4bccada 100644
--- a/readme.md
+++ b/readme.md
@@ -16,8 +16,7 @@ I should put this in the game sometime, but the option to open the configuration
* I decided to omit the "TS" folder from [`./default.project.json:40`](./default.project.json) due to the script override not working in Health.server.ts in StarterCharacterScripts.
# Todo
-* Investigate why our hotbar only loads _sometimes_
-* Maybe swap to our input system in the UI.
+* Better null checking for the clientState.character (can cause errors atm)
* Custom player list
* Custom chat
* Add guns
diff --git a/src/ReplicatedStorage/ecs/state.ts b/src/ReplicatedStorage/ecs/state.ts
index 40d8d22..f1a4d21 100644
--- a/src/ReplicatedStorage/ecs/state.ts
+++ b/src/ReplicatedStorage/ecs/state.ts
@@ -10,29 +10,29 @@ import { InputKind } from "ReplicatedStorage/inputKind"
export class ClientState {
constructor(
player: Player,
+ character: CharacterRigR6,
debugEnabled: boolean,
isRunning: boolean,
- backpack: Instance,
- // character?: CharacterRigR6,
- // lastProcessedCommand?: Inputkind,
+ backpack: Backpack,
+ // lastProcessedCommand: Inputkind,
logger: Logger
) {
+ this.character = character
this.player = player
this.debugEnabled = debugEnabled
this.isRunning = isRunning
this.backpack = backpack
- // this.character = character
// this.lastProcessedCommand = lastProcessedCommand
this.logger = logger
}
player: Player
+ character: CharacterRigR6
debugEnabled: boolean
isRunning: boolean
- backpack: Instance
- character?: CharacterRigR6
+ backpack: Backpack
lastProcessedCommand?: InputKind
logger: Logger
diff --git a/src/ReplicatedStorage/ecs/systems/client/sprint.ts b/src/ReplicatedStorage/ecs/systems/client/sprint.ts
index 8682028..8df1a1a 100644
--- a/src/ReplicatedStorage/ecs/systems/client/sprint.ts
+++ b/src/ReplicatedStorage/ecs/systems/client/sprint.ts
@@ -3,8 +3,6 @@ import { match } from "@rbxts/variant"
import { ClientState } from "ReplicatedStorage/ecs/state"
function sprint(_: World, client: ClientState): void {
- if (client.character === undefined) return
-
if (client.lastProcessedCommand !== undefined) {
match(client.lastProcessedCommand, {
KeyDown: ({ key }) => {
diff --git a/src/ReplicatedStorage/ui/components/canvas.tsx b/src/ReplicatedStorage/ui/components/canvas.tsx
deleted file mode 100644
index 47f4151..0000000
--- a/src/ReplicatedStorage/ui/components/canvas.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Roact from "@rbxts/roact"
-import { BindingOrValue, mapBinding } from "ReplicatedStorage/utils/bindingUtil"
-
-interface canvasProps extends Roact.JsxInstanceProperties {
- size?: BindingOrValue
- position?: BindingOrValue
- anchor?: Vector2
- padding?: {
- top?: BindingOrValue
- right?: BindingOrValue
- bottom?: BindingOrValue
- left?: BindingOrValue
- }
- clipsDescendants?: boolean
- zIndex?: number
- [Roact.Children]?: Roact.Children
-
- Event?: Roact.JsxInstanceEvents
- Change?: Roact.JsxInstanceChangeEvents
-}
-
-function canvas(props: canvasProps): Roact.Element {
- const { size, position, anchor, padding, clipsDescendants, zIndex } = props
-
- const spreadableProps = { ...props } as Partial
- delete spreadableProps.size
- delete spreadableProps.position
- delete spreadableProps.anchor
- delete spreadableProps.padding
- delete spreadableProps.clipsDescendants
- delete spreadableProps.zIndex
- delete spreadableProps[Roact.Children]
-
- return (
-
- {padding !== undefined && (
- new UDim(0, px))}
- PaddingRight={mapBinding(padding.right, (px) => new UDim(0, px))}
- PaddingBottom={mapBinding(padding.bottom, (px) => new UDim(0, px))}
- PaddingLeft={mapBinding(padding.left, (px) => new UDim(0, px))}
- />
- )}
-
- {props[Roact.Children]}
-
- )
-}
-
-export default canvas
\ No newline at end of file
diff --git a/src/ReplicatedStorage/ui/components/fill.tsx b/src/ReplicatedStorage/ui/components/fill.tsx
deleted file mode 100644
index 4e2e274..0000000
--- a/src/ReplicatedStorage/ui/components/fill.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import Roact from "@rbxts/roact"
-import { BindingOrValue, mapBinding } from "ReplicatedStorage/utils/bindingUtil"
-
-interface fillProps extends Roact.JsxInstanceProperties {
- color?: BindingOrValue
- transparency?: BindingOrValue
- radius?: BindingOrValue
- [Roact.Children]?: Roact.Children
-
- Event?: Roact.JsxInstanceEvents
- Change?: Roact.JsxInstanceChangeEvents
-}
-
-function fill(props: fillProps): Roact.Element {
- const { color, transparency, radius } = props
-
- const spreadableProps = { ...props } as Partial
- delete spreadableProps.color
- delete spreadableProps.transparency
- delete spreadableProps.radius
- delete spreadableProps[Roact.Children]
-
- return (
-
- {radius !== undefined && (
- (r === "circular" ? new UDim(1, 0) : new UDim(0, r)))}
- />
- )}
-
- {props[Roact.Children]}
-
- )
-}
-
-export default fill
\ No newline at end of file
diff --git a/src/ReplicatedStorage/ui/components/padding.tsx b/src/ReplicatedStorage/ui/components/padding.tsx
new file mode 100644
index 0000000..402d2cf
--- /dev/null
+++ b/src/ReplicatedStorage/ui/components/padding.tsx
@@ -0,0 +1,31 @@
+import Roact from "@rbxts/roact"
+
+interface paddingProps extends Roact.JsxInstanceProperties {
+ padding?: UDim | Roact.Binding
+ paddingX?: UDim | Roact.Binding
+ paddingY?: UDim | Roact.Binding
+
+ Event?: Roact.JsxInstanceEvents
+ Change?: Roact.JsxInstanceChangeEvents
+}
+
+function padding(props: paddingProps): Roact.Element {
+ const { padding, paddingX, paddingY } = props
+
+ const spreadableProps = { ...props } as Partial
+ delete spreadableProps.padding
+ delete spreadableProps.paddingX
+ delete spreadableProps.paddingY
+
+ return (
+
+ )
+}
+
+export default padding
\ No newline at end of file
diff --git a/src/ReplicatedStorage/ui/components/surface.tsx b/src/ReplicatedStorage/ui/components/surface.tsx
deleted file mode 100644
index e5c2c33..0000000
--- a/src/ReplicatedStorage/ui/components/surface.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import Roact from "@rbxts/roact"
-import Canvas from "./canvas"
-import Acrylic from "./acrylic"
-import Fill from "./fill"
-import { BindingOrValue } from "ReplicatedStorage/utils/bindingUtil"
-
-interface surfaceProps extends Roact.JsxInstanceProperties {
- size: BindingOrValue
- position: BindingOrValue
- ratio?: BindingOrValue
- color?: BindingOrValue
- anchor?: Vector2
- [Roact.Children]?: Roact.Children
-
- Event?: Roact.JsxInstanceEvents
- Change?: Roact.JsxInstanceChangeEvents
-}
-
-function surface(props: surfaceProps): Roact.Element {
- const { size, position, ratio, color, anchor } = props
-
- const spreadableProps = { ...props } as Partial
- delete spreadableProps.size
- delete spreadableProps.position
- delete spreadableProps.ratio
- delete spreadableProps.color
- delete spreadableProps.anchor
- delete spreadableProps[Roact.Children]
-
- return (
-
- )
-}
-
-export default surface
\ No newline at end of file
diff --git a/src/ReplicatedStorage/ui/components/text.tsx b/src/ReplicatedStorage/ui/components/text.tsx
deleted file mode 100644
index 8403910..0000000
--- a/src/ReplicatedStorage/ui/components/text.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import Roact from "@rbxts/roact"
-
-interface textProps extends Roact.JsxInstanceProperties {
- bold?: boolean
- paddingX?: UDim
- paddingY?: UDim
-
- Event?: Roact.JsxInstanceEvents
- Change?: Roact.JsxInstanceChangeEvents
-}
-
-function text(props: textProps): Roact.Element {
- const { bold, paddingX, paddingY, Text, TextXAlignment } = props
-
- const spreadableProps = { ...props } as Partial
- delete spreadableProps.bold
- delete spreadableProps.paddingX
- delete spreadableProps.paddingY
-
- return (
-
-
-
- )
-}
-
-export default text
\ No newline at end of file
diff --git a/src/ReplicatedStorage/ui/store/producer/config.ts b/src/ReplicatedStorage/ui/store/producer/config.ts
index d0f997f..de831aa 100644
--- a/src/ReplicatedStorage/ui/store/producer/config.ts
+++ b/src/ReplicatedStorage/ui/store/producer/config.ts
@@ -5,12 +5,12 @@ export interface ConfigState {
}
const initialState: ConfigState = {
- acrylicBlur: true
+ acrylicBlur: false
}
export const configProducer = createProducer(initialState, {
- toggleConfig: (state, action: keyof ConfigState) => ({
+ toggleAcrylic: (state) => ({
...state,
- [action]: !state[action]
+ acrylicBlur: !state.acrylicBlur
})
})
\ No newline at end of file
diff --git a/src/ReplicatedStorage/utils/bindingUtil.ts b/src/ReplicatedStorage/utils/bindingUtil.ts
deleted file mode 100644
index 36a479f..0000000
--- a/src/ReplicatedStorage/utils/bindingUtil.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Roact from "@rbxts/roact"
-
-export type BindingOrValue = T | Roact.Binding
-
-export function isBinding(binding: unknown): binding is Roact.Binding {
- return typeIs(binding, "table") && "getValue" in binding
-}
-
-export function mapBinding(value: BindingOrValue, transform: (value: T) => U): Roact.Binding {
- return isBinding(value) ? value.map(transform) : Roact.createBinding(transform(value))[0]
-}
-
-export function asBinding(value: BindingOrValue): Roact.Binding {
- return isBinding(value) ? value : Roact.createBinding(value)[0]
-}
\ No newline at end of file
diff --git a/src/StarterPlayer/StarterPlayerScripts/main.client.ts b/src/StarterPlayer/StarterPlayerScripts/main.client.ts
index b0cd365..31125c1 100644
--- a/src/StarterPlayer/StarterPlayerScripts/main.client.ts
+++ b/src/StarterPlayer/StarterPlayerScripts/main.client.ts
@@ -15,16 +15,14 @@ const clientLogger = Logger.configure()
const clientState = new ClientState(
Players.LocalPlayer,
+ (Players.LocalPlayer.Character || Players.LocalPlayer.CharacterAdded.Wait()[0]) as CharacterRigR6,
false,
false,
- Players.LocalPlayer.WaitForChild("Backpack"),
+ Players.LocalPlayer.WaitForChild("Backpack") as Backpack,
clientLogger
)
-clientState.character = (Players.LocalPlayer.Character || Players.LocalPlayer.CharacterAdded.Wait()[0]) as CharacterRigR6
-clientState.backpack = Players.LocalPlayer.WaitForChild("Backpack")
-
const worldAndClientState = start(HOST, clientState)
showGUI(worldAndClientState[0], clientState)
setEnvironment(HOST)
\ No newline at end of file
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx
index c8f1776..92a05dc 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx
@@ -1,10 +1,11 @@
import Roact from "@rbxts/roact"
+import Padding from "ReplicatedStorage/ui/components/padding"
+import Acrylic from "ReplicatedStorage/ui/components/acrylic"
import { ContextActionService, HttpService } from "@rbxts/services"
import { Spring } from "@rbxts/flipper"
+import { useGroupMotor } from "@rbxts/roact-hooked-plus"
import { useEffect } from "@rbxts/roact-hooked"
-import Item from "./item"
-import Surface from "ReplicatedStorage/ui/components/surface"
-import { useMotor } from "@rbxts/pretty-roact-hooks"
+import { useRootProducer } from "ReplicatedStorage/ui/store/hooks/useUiProducer"
interface ConfigProps extends Roact.JsxInstanceProperties {
shown: boolean
@@ -13,18 +14,20 @@ interface ConfigProps extends Roact.JsxInstanceProperties {
Change?: Roact.JsxInstanceChangeEvents
}
-const CONFIG_DEFAULT = new Spring(1.5, { frequency: 6 })
-const CONFIG_ACTIVE = new Spring(.5, { frequency: 6 })
+const CONFIG_DEFAULT = [new Spring(1.5, { frequency: 6 })]
+const CONFIG_ACTIVE = [new Spring(.5, { frequency: 6 })]
function config(props: ConfigProps): Roact.Element {
+ const { toggleAcrylic } = useRootProducer()
+
let { shown } = props
const spreadableProps = { ...props } as Partial
delete spreadableProps.shown
- const [configPosY, setConfigGoal] = useMotor(1.5)
+ const [slotPosYMap, setPosYGoal] = useGroupMotor([1.5, 6])
+ const slotPosY = slotPosYMap.map((t) => t[0])
- // TODO: maybe opt this into our system for inputs?
useEffect(() => {
const guid = HttpService.GenerateGUID(false)
ContextActionService.BindAction(
@@ -33,9 +36,9 @@ function config(props: ConfigProps): Roact.Element {
if (Enum.UserInputState.Begin === userInputState) {
shown = !shown
if (shown) {
- setConfigGoal(CONFIG_ACTIVE)
+ setPosYGoal(CONFIG_ACTIVE)
} else {
- setConfigGoal(CONFIG_DEFAULT)
+ setPosYGoal(CONFIG_DEFAULT)
}
}
},
@@ -45,34 +48,65 @@ function config(props: ConfigProps): Roact.Element {
})
return (
- {
+ AnchorPoint={new Vector2(.5, .5)}
+ Position={
+ slotPosY.map((posY) => {
return new UDim2(.5, 0, posY, 0)
})
}
- size={new UDim2(.4, 0, .7, 0)}
- Key={"config"}
+ BackgroundTransparency={1}
+ Size={new UDim2(.4, 0, .7, 0)}
+ Key={"Config"}
>
-
-
-
-
+
+
+
+
+ {toggleAcrylic()}
+ }}
+ >
+
+
+
+
+
)
}
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/config/item.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/config/item.tsx
deleted file mode 100644
index 43a72fe..0000000
--- a/src/StarterPlayer/StarterPlayerScripts/ui/config/item.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import Roact from "@rbxts/roact"
-import Fill from "ReplicatedStorage/ui/components/fill"
-import Text from "ReplicatedStorage/ui/components/text"
-import Canvas from "ReplicatedStorage/ui/components/canvas"
-import { useRootProducer, useRootSelector } from "ReplicatedStorage/ui/store/hooks/useUiProducer"
-import { ConfigState } from "ReplicatedStorage/ui/store/producer/config"
-
-interface itemProps extends Roact.JsxInstanceProperties {
- size: UDim2
- position: UDim2
- text: string
- action: keyof ConfigState
-
- Event?: Roact.JsxInstanceEvents
- Change?: Roact.JsxInstanceChangeEvents
-}
-
-function item(props: itemProps): Roact.Element {
- const { size, position, text, action } = props
-
- const { toggleConfig } = useRootProducer()
-
- const active = useRootSelector((state) => state.configProducer[action])
-
- const spreadableProps = { ...props } as Partial
- delete spreadableProps.size
- delete spreadableProps.position
- delete spreadableProps.text
- delete spreadableProps.action
-
- return (
-
-
-
-
-
- toggleConfig(action)
- }}
- Size={new UDim2(1, 0, 1, 0)}
- Transparency={1}
- Text={""}
- />
-
- )
-}
-
-export default item
\ No newline at end of file
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/hotbar.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/hotbar.tsx
index 9b170d6..b196570 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/hotbar.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/hotbar.tsx
@@ -1,37 +1,14 @@
import Roact from "@rbxts/roact"
import Slot from "./slot"
import { useWorldContext } from "../contexts/worldContext"
-import Canvas from "ReplicatedStorage/ui/components/canvas"
+import Padding from "ReplicatedStorage/ui/components/padding"
import { StarterGui } from "@rbxts/services"
-import { useEffect, useMemo, useState } from "@rbxts/roact-hooked"
-import { ClientState } from "ReplicatedStorage/ecs/state"
interface HotbarProps extends Roact.JsxInstanceProperties {
Event?: Roact.JsxInstanceEvents
Change?: Roact.JsxInstanceChangeEvents
}
-function useBackpackContents(clientState: ClientState): Instance[] {
- const [contents, setContents] = useState(clientState.backpack.GetChildren())
-
- useEffect(() => {
- const addedHandle = clientState.backpack.ChildAdded.Connect(() => {
- setContents(clientState.backpack.GetChildren())
- })
- const removingHandle = clientState.backpack.ChildRemoved.Connect((removed) => {
- // the tool is removed from the bp when equipped, can cause weird behavior
- if (removed.Parent === clientState.character) { return }
- setContents(clientState.backpack.GetChildren())
- })
- return () => {
- addedHandle.Disconnect()
- removingHandle.Disconnect()
- }
- }, [])
-
- return contents
-}
-
StarterGui.SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
function hotbar(props: HotbarProps): Roact.Element {
@@ -39,13 +16,6 @@ function hotbar(props: HotbarProps): Roact.Element {
const { clientState } = useWorldContext()
- const backpackContents = useBackpackContents(clientState)
-
- const sortedBackpackContents = useMemo(() => {
- return backpackContents
- .sort((a, b) => a.Name.lower() < b.Name.lower())
- }, [backpackContents])
-
const keycodes: Enum.KeyCode[] = [
Enum.KeyCode.One,
Enum.KeyCode.Two,
@@ -58,27 +28,36 @@ function hotbar(props: HotbarProps): Roact.Element {
Enum.KeyCode.Nine
]
+ const items: Roact.Element[] = []
+ clientState.backpack.GetChildren().forEach((tool, i) => {
+ items.push(
+
+ )
+ })
+
return (
-
- {
- sortedBackpackContents.map((tool, i) => (
-
- ))
- }
-
+
+ {...items}
+
)
}
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
index 8f16c56..203d9c9 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
@@ -2,10 +2,10 @@ import Roact from "@rbxts/roact"
import { useEffect } from "@rbxts/roact-hooked"
import { useWorldContext } from "../contexts/worldContext"
import { ContextActionService, HttpService } from "@rbxts/services"
-import Text from "ReplicatedStorage/ui/components/text"
-import Surface from "ReplicatedStorage/ui/components/surface"
+import Padding from "ReplicatedStorage/ui/components/padding"
+import Acrylic from "ReplicatedStorage/ui/components/acrylic"
import { Spring } from "@rbxts/flipper"
-import { useMotor } from "@rbxts/pretty-roact-hooks"
+import { useGroupMotor } from "@rbxts/roact-hooked-plus"
interface SlotProps extends Roact.JsxInstanceProperties {
index: number
@@ -16,8 +16,8 @@ interface SlotProps extends Roact.JsxInstanceProperties {
Change?: Roact.JsxInstanceChangeEvents
}
-const SLOT_DEFAULT = new Spring(6, { frequency: 6 })
-const SLOT_ACTIVE = new Spring(5, { frequency: 6 })
+const SLOT_DEFAULT = [new Spring(.7, { frequency: 6 }), new Spring(6, { frequency: 6 })]
+const SLOT_ACTIVE = [new Spring(.5, { frequency: 6 }), new Spring(5, { frequency: 6 })]
function slot(props: SlotProps): Roact.Element {
const { index, keycode, tool } = props
@@ -27,12 +27,13 @@ function slot(props: SlotProps): Roact.Element {
delete spreadableProps.keycode
delete spreadableProps.tool
- const [slotRatio, setSlotGoal] = useMotor(6)
+ const [slotBgTransparencyAndSlotRatio, setSlotGoal] = useGroupMotor([.7, 6])
+ const slotBgTransparency = slotBgTransparencyAndSlotRatio.map((t) => t[0])
+ const slotRatio = slotBgTransparencyAndSlotRatio.map((t) => t[1])
const { clientState } = useWorldContext()
const handleActivated = (): void => {
- if (clientState.character === undefined) return
if (tool.Parent !== clientState.character) {
clientState.character.Humanoid.EquipTool(tool)
setSlotGoal(SLOT_ACTIVE)
@@ -58,29 +59,47 @@ function slot(props: SlotProps): Roact.Element {
setSlotGoal(SLOT_DEFAULT)
})
})
-
return (
-
-
-
-
+
+
+
+
+
+
+
)
}
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/main.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/main.tsx
index f508bb7..755ea44 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/main.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/main.tsx
@@ -1,8 +1,7 @@
import Roact from "@rbxts/roact"
-import { withHookDetection } from "@rbxts/roact-hooked"
import Hotbar from "./hotbar/hotbar"
import Config from "./config/config"
-import Canvas from "ReplicatedStorage/ui/components/canvas"
+import { withHookDetection } from "@rbxts/roact-hooked"
interface MainProps extends Roact.JsxInstanceEvents {
Event?: Roact.JsxInstanceEvents
@@ -15,22 +14,18 @@ export default function main(props: MainProps): Roact.Element {
withHookDetection(Roact)
return (
-
-
-
-
-
+
+
+
)
}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 5010b83..73f5dcd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -131,14 +131,6 @@
resolved "https://registry.yarnpkg.com/@rbxts/plasma/-/plasma-0.4.1-ts.1.tgz#3d8db367c3220e6b6953cdddbf8af9f087165392"
integrity sha512-RhLkC3GQW0KeyqjFwvOUbHhsIJOHmXg+BhcKLp0IgUDVgC5GktShi3zmW6GQ319yod+RlUDG1XHjOnP3Omo4bA==
-"@rbxts/pretty-roact-hooks@^3.1.1":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@rbxts/pretty-roact-hooks/-/pretty-roact-hooks-3.1.1.tgz#b2729163bfd2c89e1efb91c544d7ddb798054fe0"
- integrity sha512-eve1L7GWKZVo6ZLgcmk6c95SDvhTRIjWwR8notAz7g+CQ/jdtOoX+5fVHOQLMYE6HbQ79Bth+LO13WOM4T3WKg==
- dependencies:
- "@rbxts/services" "^1.5.1"
- "@rbxts/set-timeout" "^1.1.2"
-
"@rbxts/reflex@^4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@rbxts/reflex/-/reflex-4.2.0.tgz#10d064de5e293f1aea429846d4d8739821cb575a"
@@ -149,6 +141,14 @@
resolved "https://registry.yarnpkg.com/@rbxts/rewire/-/rewire-0.3.0.tgz#47f0cd651fe405cf418936799d2a4dac6b1bb7ce"
integrity sha512-wChhGZ3kEkEsMK9ZuwKpwRsC7OGVZlvxrYMR3beFgCIPXE58JKLziBLkDACmd709XCCEmsMAqv9HMCMhSTD08Q==
+"@rbxts/roact-hooked-plus@^1.8.1":
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/@rbxts/roact-hooked-plus/-/roact-hooked-plus-1.8.1.tgz#e0fa32b74c0f958430ae62f249f1b5b52ce27f3b"
+ integrity sha512-ipJf6pZcQZlx/0hyisQz2eoRECg38knUgjkEvx2dvAHfs0+IDgera7mcwv6zTMACqalaXu00inc4E5dpOrs54A==
+ dependencies:
+ "@rbxts/flipper" "^2.0.1"
+ "@rbxts/services" "^1.2.0"
+
"@rbxts/roact-hooked@^2.6.0":
version "2.6.0"
resolved "https://registry.yarnpkg.com/@rbxts/roact-hooked/-/roact-hooked-2.6.0.tgz#cbe3e244e1d52d879083c62b6662c4d082c6d30b"
@@ -164,18 +164,11 @@
resolved "https://registry.yarnpkg.com/@rbxts/roact/-/roact-1.4.4-ts.0.tgz#7f297bec03dbea9473bd2d82b148d3ae6e4f6c00"
integrity sha512-gn9mBoGG/Clzgv2kyOvLNVd9dh5t6z+jukC3ITv2HnfPqvf/sMbz/VMaBoiB7t5umuiIe0LjW0ctZrkrS+uTOA==
-"@rbxts/services@^1.5.1":
+"@rbxts/services@^1.2.0", "@rbxts/services@^1.5.1":
version "1.5.1"
resolved "https://registry.yarnpkg.com/@rbxts/services/-/services-1.5.1.tgz#4536a87932f28797507ed591f0061277c52ea77f"
integrity sha512-SRtfIjga0K4YYSXRpK+eH3kcTq7ZXo9OHOt0jszaOOoEOIJloMGlyuRPqesPHyhveh2AMXAZr3TYbRMSD+u+kQ==
-"@rbxts/set-timeout@^1.1.2":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@rbxts/set-timeout/-/set-timeout-1.1.2.tgz#2adc9d4b5dcb54ca4332eb7ec8d19793932dbd40"
- integrity sha512-P/A0IiH9wuZdSJYr4Us0MDFm61nvIFR0acfKFHLkcOsgvIgELC90Up9ugiSsaMEHRIcIcO5UjE39LuS3xTzQHw==
- dependencies:
- "@rbxts/services" "^1.5.1"
-
"@rbxts/testez@^0.4.2-ts.0":
version "0.4.2-ts.0"
resolved "https://registry.yarnpkg.com/@rbxts/testez/-/testez-0.4.2-ts.0.tgz#4475183d317182ac7099bffee6492ffcb7bcaf0b"