diff --git a/.yarn/versions/bbd33299.yml b/.yarn/versions/bbd33299.yml new file mode 100644 index 00000000..5b878624 --- /dev/null +++ b/.yarn/versions/bbd33299.yml @@ -0,0 +1,2 @@ +releases: + beatmapper: minor diff --git a/src/components/app/forms/settings/controls.tsx b/src/components/app/forms/settings/controls.tsx index ebdee8f2..c1a11ba0 100644 --- a/src/components/app/forms/settings/controls.tsx +++ b/src/components/app/forms/settings/controls.tsx @@ -1,9 +1,29 @@ +import { createListCollection } from "@ark-ui/react/collection"; +import { toPascalCase } from "@std/text/to-pascal-case"; + +import { Field, RadioGroup } from "$/components/ui/compositions"; +import { updateObstaclePlacementMode } from "$/store/actions"; +import { useAppDispatch, useAppSelector } from "$/store/hooks"; +import { selectUserObstaclePlacementMode } from "$/store/selectors"; +import { ObstaclePlacementMode } from "$/types"; import { Stack, Wrap } from "$:styled-system/jsx"; +const OBSTACLE_PLACEMENT_MODE_COLLECTION = createListCollection({ + items: [ObstaclePlacementMode.LEGACY, ObstaclePlacementMode.MODERN, ObstaclePlacementMode.VISUAL], + itemToString: toPascalCase, +}); + function AppControlsSettings() { + const dispatch = useAppDispatch(); + const obstaclePlacementMode = useAppSelector(selectUserObstaclePlacementMode); + return ( - Soon™ + + + dispatch(updateObstaclePlacementMode({ value: x.value as ObstaclePlacementMode }))} /> + + ); } diff --git a/src/components/app/forms/settings/index.tsx b/src/components/app/forms/settings/index.tsx index 3cb653b6..9ec7d2eb 100644 --- a/src/components/app/forms/settings/index.tsx +++ b/src/components/app/forms/settings/index.tsx @@ -17,7 +17,6 @@ const collection = createListCollection({ { value: "advanced", label: "Advanced", render: () => }, // ], - isItemDisabled: (item) => !["user", "graphics", "audio", "advanced"].includes(item.value), }); function AppSettings() { diff --git a/src/components/app/templates/editor/action-panel-groups/grid.tsx b/src/components/app/templates/editor/action-panel-groups/grid.tsx index 45b3f366..6d253ed1 100644 --- a/src/components/app/templates/editor/action-panel-groups/grid.tsx +++ b/src/components/app/templates/editor/action-panel-groups/grid.tsx @@ -16,7 +16,7 @@ function GridActionPanelGroup({ finishTweakingGrid }: Props) { const { sid } = useParams({ from: "/_/edit/$sid/$bid/_" }); const dispatch = useAppDispatch(); - const { numRows, numCols, colWidth, rowHeight } = useAppSelector((state) => selectGridSize(state, sid)); + const { numRows, numCols, colWidth, rowHeight, colOffset, rowOffset } = useAppSelector((state) => selectGridSize(state, sid)); const { trigger: triggerSaveGridPreset } = usePrompt({ title: "Save Grid Preset", @@ -45,6 +45,12 @@ function GridActionPanelGroup({ finishTweakingGrid }: Props) { ev.stopPropagation()} onValueChange={(details) => sid && dispatch(updateGridSize({ songId: sid, changes: { rowHeight: details.valueAsNumber } }))} /> + + ev.stopPropagation()} onValueChange={(details) => sid && dispatch(updateGridSize({ songId: sid, changes: { colOffset: details.valueAsNumber } }))} /> + + + ev.stopPropagation()} onValueChange={(details) => sid && dispatch(updateGridSize({ songId: sid, changes: { rowOffset: details.valueAsNumber } }))} /> +