Added transparency for tokens that can't be dragged

This commit is contained in:
Mitchell McCaffrey 2020-05-22 15:11:18 +10:00
parent 14c9151405
commit a81eed1a48
2 changed files with 42 additions and 7 deletions

View File

@ -200,6 +200,10 @@ function Map({
onTokenMenuOpen={handleTokenMenuOpen} onTokenMenuOpen={handleTokenMenuOpen}
onTokenDragStart={() => setDraggingTokenState(tokenState)} onTokenDragStart={() => setDraggingTokenState(tokenState)}
onTokenDragEnd={() => setDraggingTokenState(null)} onTokenDragEnd={() => setDraggingTokenState(null)}
draggable={
(selectedToolId === "pan" || selectedToolId === "erase") &&
!(tokenState.id in disabledTokens)
}
/> />
)); ));

View File

@ -21,6 +21,7 @@ function MapToken({
onTokenMenuOpen, onTokenMenuOpen,
onTokenDragStart, onTokenDragStart,
onTokenDragEnd, onTokenDragEnd,
draggable,
}) { }) {
const { userId } = useContext(AuthContext); const { userId } = useContext(AuthContext);
const { const {
@ -52,8 +53,35 @@ function MapToken({
} }
function handleClick(event) { function handleClick(event) {
const tokenImage = event.target; if (draggable) {
onTokenMenuOpen(tokenState.id, tokenImage); const tokenImage = event.target;
onTokenMenuOpen(tokenState.id, tokenImage);
}
}
const [tokenOpacity, setTokenOpacity] = useState(1);
function handlePointerDown() {
if (draggable) {
setPreventMapInteraction(true);
}
}
function handlePointerUp() {
if (draggable) {
setPreventMapInteraction(false);
}
}
function handlePointerOver() {
if (!draggable) {
setTokenOpacity(0.5);
}
}
function handlePointerOut() {
if (!draggable) {
setTokenOpacity(1.0);
}
} }
const tokenWidth = tokenSizePercent * mapWidth * tokenState.size; const tokenWidth = tokenSizePercent * mapWidth * tokenState.size;
@ -89,14 +117,17 @@ function MapToken({
height={tokenHeight} height={tokenHeight}
x={tokenState.x * mapWidth} x={tokenState.x * mapWidth}
y={tokenState.y * mapHeight} y={tokenState.y * mapHeight}
draggable draggable={draggable}
onMouseDown={() => setPreventMapInteraction(true)} onMouseDown={handlePointerDown}
onMouseUp={() => setPreventMapInteraction(false)} onMouseUp={handlePointerUp}
onTouchStart={() => setPreventMapInteraction(true)} onMouseOver={handlePointerOver}
onTouchEnd={() => setPreventMapInteraction(false)} onMouseOut={handlePointerOut}
onTouchStart={handlePointerDown}
onTouchEnd={handlePointerUp}
onClick={handleClick} onClick={handleClick}
onDragEnd={handleDragEnd} onDragEnd={handleDragEnd}
onDragStart={onTokenDragStart} onDragStart={onTokenDragStart}
opacity={tokenOpacity}
> >
<KonvaImage <KonvaImage
ref={imageRef} ref={imageRef}