diff --git a/src/ReplicatedStorage/ui/store/producer/config.ts b/src/ReplicatedStorage/ui/store/producer/config.ts
index de831aa..220eec8 100644
--- a/src/ReplicatedStorage/ui/store/producer/config.ts
+++ b/src/ReplicatedStorage/ui/store/producer/config.ts
@@ -5,12 +5,17 @@ export interface ConfigState {
}
const initialState: ConfigState = {
- acrylicBlur: false
+ acrylicBlur: true
}
export const configProducer = createProducer(initialState, {
- toggleAcrylic: (state) => ({
+ enableAcrylic: (state) => ({
...state,
- acrylicBlur: !state.acrylicBlur
+ acrylicBlur: true
+ }),
+
+ disableAcrylic: (state) => ({
+ ...state,
+ acrylicBlur: false
})
})
\ 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 92a05dc..55ee564 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/config/config.tsx
@@ -1,6 +1,7 @@
import Roact from "@rbxts/roact"
import Padding from "ReplicatedStorage/ui/components/padding"
import Acrylic from "ReplicatedStorage/ui/components/acrylic"
+import ToggleButton from "./toggleButton"
import { ContextActionService, HttpService } from "@rbxts/services"
import { Spring } from "@rbxts/flipper"
import { useGroupMotor } from "@rbxts/roact-hooked-plus"
@@ -14,19 +15,22 @@ 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 }), new Spring(0, { frequency: 6 })]
+const CONFIG_ACTIVE = [new Spring(.5, { frequency: 6 }), new Spring(1, { frequency: 6 })]
function config(props: ConfigProps): Roact.Element {
- const { toggleAcrylic } = useRootProducer()
+ const { disableAcrylic, enableAcrylic } = useRootProducer()
let { shown } = props
const spreadableProps = { ...props } as Partial
delete spreadableProps.shown
- const [slotPosYMap, setPosYGoal] = useGroupMotor([1.5, 6])
- const slotPosY = slotPosYMap.map((t) => t[0])
+ const [configPosYAndBorderColor, setConfigGoal] = useGroupMotor([1.5, 6])
+ const configPosY = configPosYAndBorderColor.map((t) => t[0])
+ const configBorderColor = configPosYAndBorderColor.map((t) => t[1]).map((val) => {
+ return Color3.fromHex("#6c7086").Lerp(Color3.fromHex("#b4befe"), val)
+ })
useEffect(() => {
const guid = HttpService.GenerateGUID(false)
@@ -36,9 +40,9 @@ function config(props: ConfigProps): Roact.Element {
if (Enum.UserInputState.Begin === userInputState) {
shown = !shown
if (shown) {
- setPosYGoal(CONFIG_ACTIVE)
+ setConfigGoal(CONFIG_ACTIVE)
} else {
- setPosYGoal(CONFIG_DEFAULT)
+ setConfigGoal(CONFIG_DEFAULT)
}
}
},
@@ -52,7 +56,7 @@ function config(props: ConfigProps): Roact.Element {
{...spreadableProps}
AnchorPoint={new Vector2(.5, .5)}
Position={
- slotPosY.map((posY) => {
+ configPosY.map((posY) => {
return new UDim2(.5, 0, posY, 0)
})
}
@@ -68,7 +72,7 @@ function config(props: ConfigProps): Roact.Element {
AnchorPoint={new Vector2(0, 0)}
Position={new UDim2(0, 0, 0, 0)}
Size={new UDim2(1, 0, 1, 0)}
- BackgroundTransparency={.7}
+ BackgroundTransparency={.3}
BackgroundColor3={Color3.fromHex("#1e1e2e")}
>
+
- {toggleAcrylic()}
- }}
- >
-
-
-
+
)
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/config/toggleButton.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/config/toggleButton.tsx
new file mode 100644
index 0000000..44ac02b
--- /dev/null
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/config/toggleButton.tsx
@@ -0,0 +1,73 @@
+import Roact from "@rbxts/roact"
+import Padding from "ReplicatedStorage/ui/components/padding"
+import { Spring } from "@rbxts/flipper"
+import { useGroupMotor } from "@rbxts/roact-hooked-plus"
+
+interface toggleButtonProps extends Roact.JsxInstanceProperties {
+ active: boolean
+ enableCallback: () => void
+ disableCallback: () => void
+
+ Event?: Roact.JsxInstanceEvents
+ Change?: Roact.JsxInstanceChangeEvents
+}
+
+const BUTTON_DEFAULT = [new Spring(0, { frequency: 6 })]
+const BUTTON_ACTIVE = [new Spring(1, { frequency: 6 })]
+
+function toggleButton(props: toggleButtonProps): Roact.Element {
+ let { active } = props
+ const { enableCallback, disableCallback, Text } = props
+
+ const spreadableProps = { ...props } as Partial
+ delete spreadableProps.active
+ delete spreadableProps.enableCallback
+ delete spreadableProps.disableCallback
+
+ const [buttonBorderColorMap, setButtonGoal] = useGroupMotor([0])
+ const buttonBorderColor = buttonBorderColorMap.map((t) => t[0]).map((val) => {
+ return Color3.fromHex("#6c7086").Lerp(Color3.fromHex("#b4befe"), val)
+ })
+
+ return (
+ {
+ active = !active
+ if (active) {
+ setButtonGoal(BUTTON_ACTIVE)
+ enableCallback()
+ } else {
+ setButtonGoal(BUTTON_DEFAULT)
+ disableCallback()
+ }
+ }
+ }}
+ >
+
+
+
+
+ )
+}
+
+export default toggleButton
\ No newline at end of file
diff --git a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
index 203d9c9..fff7f6b 100644
--- a/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
+++ b/src/StarterPlayer/StarterPlayerScripts/ui/hotbar/slot.tsx
@@ -16,8 +16,8 @@ interface SlotProps extends Roact.JsxInstanceProperties {
Change?: Roact.JsxInstanceChangeEvents
}
-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 })]
+const SLOT_DEFAULT = [new Spring(0, { frequency: 6 }), new Spring(6, { frequency: 6 })]
+const SLOT_ACTIVE = [new Spring(1, { frequency: 6 }), new Spring(5, { frequency: 6 })]
function slot(props: SlotProps): Roact.Element {
const { index, keycode, tool } = props
@@ -27,9 +27,11 @@ function slot(props: SlotProps): Roact.Element {
delete spreadableProps.keycode
delete spreadableProps.tool
- const [slotBgTransparencyAndSlotRatio, setSlotGoal] = useGroupMotor([.7, 6])
- const slotBgTransparency = slotBgTransparencyAndSlotRatio.map((t) => t[0])
- const slotRatio = slotBgTransparencyAndSlotRatio.map((t) => t[1])
+ const [slotBorderColorAndSlotRatio, setSlotGoal] = useGroupMotor([0, 6])
+ const slotBorderColor = slotBorderColorAndSlotRatio.map((t) => t[0]).map((val) => {
+ return Color3.fromHex("#6c7086").Lerp(Color3.fromHex("#b4befe"), val)
+ })
+ const slotRatio = slotBorderColorAndSlotRatio.map((t) => t[1])
const { clientState } = useWorldContext()
@@ -63,7 +65,7 @@ function slot(props: SlotProps): Roact.Element {
return (
+