This repository has been archived on 2020-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
odyfive/src/ui/UI.tsx

28 lines
719 B
TypeScript
Raw Normal View History

2020-09-29 08:52:39 +00:00
import React from "react";
import { useSelector } from "react-redux";
import { GameStore } from "~store/state";
2020-09-29 09:31:55 +00:00
import { UILayer, LayerList } from "~store/ui/state";
import MapEditorUI from "./MapEditor";
2020-09-29 08:52:39 +00:00
function renderLayer(data: UILayer) {
switch (data.type) {
case "MapEditor":
2020-09-29 09:31:55 +00:00
return <MapEditorUI />;
2020-09-29 08:52:39 +00:00
default:
throw new Error("unknown or invalid ui layer");
}
}
export default function UI() {
const layers = useSelector<GameStore, LayerList>((state) => state.ui.layers);
return (
<div id="ui">
2020-09-29 09:31:55 +00:00
{layers.map(({ id, data, visible }) => (
<div key={id} style={{ display: visible ? "" : "none" }}>
{renderLayer(data)}
</div>
2020-09-29 08:52:39 +00:00
))}
</div>
);
}