#
luxiaotao1123
2024-03-22 867cedf7a2b397a3f6b3475b2e6e4b8f6cab433b
#
2个文件已修改
1个文件已添加
94 ■■■■■ 已修改文件
zy-asrs-flow/src/pages/map/batch/index.jsx 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/index.jsx 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/player.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-flow/src/pages/map/batch/index.jsx
New file
@@ -0,0 +1,51 @@
import React, { useState, useRef, useEffect } from 'react';
import { Drawer, Space, Button } from 'antd';
import { FormattedMessage, useIntl, useModel } from '@umijs/max';
import { createStyles } from 'antd-style';
import * as Utils from '../utils'
const useStyles = createStyles(({ token, css }) => {
    return {
    }
})
const BatchDrawer = (props) => {
    const intl = useIntl();
    const { styles } = useStyles();
    const { batchSprites } = props;
    useEffect(() => {
        console.log(batchSprites);
    }, []);
    const handleCancel = () => {
        props.onCancel();
    };
    return (
        <>
            <Drawer
                open={props.open}
                onClose={handleCancel}
                getContainer={props.refCurr}
                rootStyle={{ position: "absolute" }}
                mask={false}
                width={600}
                style={{
                    opacity: .8
                }}
                extra={
                    <Space>
                        <Button onClick={handleCancel}>
                            <FormattedMessage id='common.cancel' defaultMessage='取消' />
                        </Button>
                    </Space>
                }
            >
                {batchSprites?.length}
            </Drawer>
        </>
    )
}
export default BatchDrawer;
zy-asrs-flow/src/pages/map/index.jsx
@@ -19,6 +19,7 @@
import MapSearch from './header/search';
import MapFloor from './header/floor';
import MapDrawer from './drawer';
import BatchDrawer from './batch';
const useStyles = createStyles(({ token }) => {
    let dark = token.colorBgBase === '#000';
@@ -88,6 +89,8 @@
    const hasFloor = true;
    // const [hasFloor, setHasFloor] = React.useState(true);
    const [curFloor, setCurFloor] = React.useState(1);
    const [batchSprites, setBatchSprites] = React.useState([]);
    const [batchDrawerVisible, setBatchDrawerVisible] = React.useState(false);
    // init func
    React.useEffect(() => {
@@ -147,8 +150,7 @@
                setDeviceVisible(false);
                player.activateMapEvent(Utils.MapEvent.SELECTION_BOX, (selectedSprites, resetFn) => {
                    console.log(selectedSprites);
                    // resetFn();
                    setBatchSprites(selectedSprites);
                });
                mapContainer.children.forEach(child => {
@@ -175,10 +177,7 @@
                setDeviceVisible(false);
                player.activateMapEvent(Utils.MapEvent.SELECTION_BOX, (selectedSprites, resetFn) => {
                    console.log(selectedSprites);
                    if (selectedSprites.length > 0) {
                        setDrawerVisible(true);
                    }
                    setBatchSprites(selectedSprites);
                });
                mapContainer.children.forEach(child => {
@@ -270,6 +269,14 @@
        }
    }, [spriteBySettings])
    const prevSpriteBySettings = prevSpriteBySettingsRef.current;
    React.useEffect(() => {
        if (batchSprites?.length > 0) {
            setBatchDrawerVisible(true)
        } else {
            setBatchDrawerVisible(false)
        }
    }, [batchSprites])
    return (
        <>
@@ -422,6 +429,16 @@
                }}
            />
            <BatchDrawer
                open={batchDrawerVisible}
                batchSprites={batchSprites}
                refCurr={mapRef.current}
                onCancel={() => {
                    setBatchSprites(null);
                    setBatchDrawerVisible(false);
                }}
            />
            <Edit
                open={deviceVisible}
                onCancel={() => {
zy-asrs-flow/src/pages/map/player.js
@@ -60,7 +60,19 @@
        this.app.renderer.events.mapPositionToPoint(startPoint, event.clientX, event.clientY);
        let selectionStart = { x: startPoint.x, y: startPoint.y };
        isSelecting = true;
        // avoid trigger sprite event
        let hasHitSprite = false;
        for (let child of this.mapContainer.children) {
            if (child.data?.uuid) {
                if (child.getBounds().contains(selectionStart.x, selectionStart.y)) {
                    hasHitSprite = true; break;
                }
            }
        }
        if (!hasHitSprite) {
            isSelecting = true;
        }
        const handleMouseMove = (event) => {
            if (isSelecting && !this.didClickSprite) {