#
vincentlu
2025-12-17 adcd2efd074eb3160c429ea8a5dfd537db1d1304
zy-acs-flow/src/map/tool.js
@@ -911,11 +911,22 @@
const addAreaLabel = (draft, text, from, to) => {
    const centerX = (from.x + to.x) / 2;
    const centerY = (from.y + to.y) / 2;
    const label = new PIXI.Text(text, {
        fill: themeMode === 'dark' ? '#f1f2f6' : '#535353ff',
        fontSize: 20 / Math.abs(mapContainer.scale.x || 1),
        fontWeight: 'bold',
    const currentScale = Math.abs(mapContainer.scale.x || 1);
    const labelStyle = new PIXI.TextStyle({
        fontFamily: 'Inter, "Segoe UI", sans-serif',
        fill: themeMode === 'dark' ? '#f1f2f6' : '#606060ff',
        fontSize: Math.max(16, 20 / currentScale),
        fontWeight: 600,
        letterSpacing: 10,
        // stroke: themeMode === 'dark' ? '#1e272e' : '#ffffff',
        // strokeThickness: Math.max(1, 2 / currentScale),
        // dropShadow: true,
        // dropShadowColor: themeMode === 'dark' ? '#00000066' : '#95a5a6',
        // dropShadowBlur: 1.5,
        // dropShadowAngle: Math.PI / 4,
        // dropShadowDistance: 2,
    });
    const label = new PIXI.Text(text ?? '', labelStyle);
    label.anchor.set(0.5);
    label.position.set(centerX, centerY);
    label.rotation = rotationParseNum(MAP_DEFAULT_ROTATION);
@@ -923,7 +934,29 @@
    draft.addChild(label);
};
export const loadAreas = (curZone, setCurSprite) => {
export const updateAreaSpriteName = (sprite, newName) => {
    if (!sprite || sprite?.data?.type !== DEVICE_TYPE.AREA) {
        return;
    }
    sprite.data.name = newName;
    const label = sprite.children?.find((child) => child instanceof PIXI.Text);
    if (label) {
        label.text = newName ?? '';
    }
};
export const removeAreaSprite = (sprite) => {
    if (!sprite || sprite?.data?.type !== DEVICE_TYPE.AREA) {
        return;
    }
    const parent = sprite.parent || mapContainer;
    if (parent) {
        parent.removeChild(sprite);
    }
    sprite.destroy({ children: true, texture: false, baseTexture: false });
};
export const loadAreas = (curZone, setCurSprite, callback) => {
    if (!mapContainer) return;
    clearAreas();
    fetchAreaList(curZone).then((areas) => {
@@ -939,6 +972,9 @@
                mapContainer.addChild(graphics);
            }
        });
        if (callback) {
            callback(areas);
        }
    });
};
@@ -961,8 +997,11 @@
    const draft = new PIXI.Graphics();
    draft.name = id ? `area_${id}` : 'area_' + generateID();
    draft.zIndex = DEVICE_Z_INDEX.AREA;
    draft.lineStyle(2 / Math.abs(mapContainer.scale.x || 1), AREA_BORDER_COLOR, 0.9);
    draft.zIndex = 0;
    if (setCurSprite) {
        draft.zIndex = DEVICE_Z_INDEX.AREA;
    }
    draft.lineStyle(1 / Math.abs(mapContainer.scale.x || 1), AREA_BORDER_COLOR, 0.9);
    draft.beginFill(areaColor, 0.18);
    draft.drawRect(
        Math.min(from.x, to.x),
@@ -1086,3 +1125,22 @@
    stage.on('pointerup', handleUp);
    return true;
};
export const cancelAreaDrawing = () => {
    if (areaDrawingCleanup) {
        areaDrawingCleanup();
    }
};
export const showAreas = (curZone, setShowAreas, setLoading) => {
    setLoading(true);
    loadAreas(curZone, null, (areas) => {
        setLoading(false);
        setShowAreas(true);
    })
};
export const hideAreas = (curZone, setShowAreas) => {
    clearAreas();
    setShowAreas(false);
};