Added a saved settings system that uses localstorage and versioning

This commit is contained in:
Mitchell McCaffrey
2020-08-07 17:15:16 +10:00
parent e702936c44
commit 602631f9b1
11 changed files with 205 additions and 65 deletions

View File

@@ -12,6 +12,7 @@ import MapLoadingOverlay from "./MapLoadingOverlay";
import NetworkedMapPointer from "../../network/NetworkedMapPointer";
import TokenDataContext from "../../contexts/TokenDataContext";
import SettingsContext from "../../contexts/SettingsContext";
import TokenMenu from "../token/TokenMenu";
import TokenDragOverlay from "../token/TokenDragOverlay";
@@ -48,31 +49,10 @@ function Map({
const tokenSizePercent = gridSizeNormalized.x;
const [selectedToolId, setSelectedToolId] = useState("pan");
const [toolSettings, setToolSettings] = useState({
fog: {
type: "polygon",
useEdgeSnapping: false,
useFogCut: false,
preview: false,
},
drawing: {
color: "red",
type: "brush",
useBlending: true,
},
measure: {
type: "chebyshev",
scale: "5ft",
},
timer: {
hour: 0,
minute: 0,
second: 0,
},
});
const { settings, setSettings } = useContext(SettingsContext);
function handleToolSettingChange(tool, change) {
setToolSettings((prevSettings) => ({
setSettings((prevSettings) => ({
...prevSettings,
[tool]: {
...prevSettings[tool],
@@ -191,7 +171,7 @@ function Map({
currentMapState={mapState}
onSelectedToolChange={setSelectedToolId}
selectedToolId={selectedToolId}
toolSettings={toolSettings}
toolSettings={settings}
onToolSettingChange={handleToolSettingChange}
onToolAction={handleToolAction}
disabledControls={disabledControls}
@@ -291,7 +271,7 @@ function Map({
onShapesRemove={handleMapShapesRemove}
active={selectedToolId === "drawing"}
toolId="drawing"
toolSettings={toolSettings.drawing}
toolSettings={settings.drawing}
gridSize={gridSizeNormalized}
/>
);
@@ -306,9 +286,9 @@ function Map({
onShapesEdit={handleFogShapesEdit}
active={selectedToolId === "fog"}
toolId="fog"
toolSettings={toolSettings.fog}
toolSettings={settings.fog}
gridSize={gridSizeNormalized}
transparent={allowFogDrawing && !toolSettings.fog.preview}
transparent={allowFogDrawing && !settings.fog.preview}
/>
);
@@ -321,7 +301,7 @@ function Map({
map={map}
active={selectedToolId === "measure"}
gridSize={gridSizeNormalized}
selectedToolSettings={toolSettings[selectedToolId]}
selectedToolSettings={settings[selectedToolId]}
/>
);