Added transparency for tokens that can't be dragged
This commit is contained in:
parent
14c9151405
commit
a81eed1a48
@ -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)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user