web-map/src/apis/map/constant.ts

179 lines
5.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { KeydownType, type Options } from '@meta2d/core';
import { invert } from 'lodash-es';
/**
* 地图点位类型枚举
* 定义了场景编辑器中所有支持的点位类型
* 数值1-9为小点位10以上为大点位有特殊图标
*/
//#region 点位
export enum MapPointType {
/** 普通点 - 基础导航点,机器人可通过 */
= 1,
/** 等待点 - 机器人等待或暂停的位置 */
,
/** 避让点 - 机器人主动避让其他机器人的点位 */
,
/** 临时避让点 - 动态生成的临时避让位置,有特殊标记 */
,
/** 库区点 - 仓储作业区域 */
,
/** 密集库区点 - 密集库区点位 */
// 密集库区点,
/** 电梯点 - 机器人乘坐电梯的专用点位 */
= 11,
/** 自动门点 - 需要自动门控制的通行点位 */
,
/** 充电点 - 机器人充电的专用位置,可绑定特定机器人 */
,
/** 停靠点 - 机器人停靠等待的位置,可绑定特定机器人 */
,
/** 动作点 - 机器人执行特定动作的位置(如取货、放货) */
,
/** 禁行点 - 禁止机器人通过的点位 */
,
}
/**
* 点位类型映射数组用于UI显示和选择
* 过滤掉非数字类型的枚举项
*/
export const MAP_POINT_TYPES = Object.freeze(
<[string, MapPointType][]>Object.entries(MapPointType).filter(([, v]) => typeof v === 'number'),
);
//#endregion
/**
* 点位扩展类型映射用于UI显示和选择
*/
export const MAP_POINT_EXTENSION_TYPES = Object.freeze({
[MapPointType.]: [MapPointType.],
[MapPointType.]: [MapPointType.],
[MapPointType.]: [MapPointType., MapPointType.],
// [MapPointType.临时避让点]: [MapPointType.等待点, MapPointType.库区点, MapPointType.密集库区点],
// [MapPointType.密集库区点]: [MapPointType.动作点, MapPointType.临时避让点],
// [MapPointType.动作点]: [MapPointType.密集库区点],
});
/**
* 地图路线类型枚举
* 定义了连接点位之间的路径类型
*/
//#region 线路
export enum MapRouteType {
/** 直线 - 两点间直线连接 */
线 = 'line',
/** 二阶贝塞尔曲线 - 带一个控制点的曲线 */
线 = 'bezier2',
/** 三阶贝塞尔曲线 - 带两个控制点的曲线,更灵活 */
线 = 'bezier3',
}
/**
* 路线类型反向映射,用于从字符串值获取枚举键
*/
export const MAP_ROUTE_TYPE = invert(MapRouteType);
/**
* 路线类型映射数组用于UI显示和选择
*/
export const MAP_ROUTE_TYPES = Object.freeze(<[string, MapRouteType][]>Object.entries(MapRouteType));
/**
* 路线通行类型枚举
* 定义了路线的通行权限和限制
*/
export enum MapRoutePassType {
/** 无限制 - 所有机器人都可以通行 */
,
/** 仅空载可通行 - 只有空载的机器人可以通过 */
,
/** 仅载货可通行 - 只有载货的机器人可以通过 */
,
/** 禁行 - 禁止所有机器人通行,显示为虚线 */
= 10,
}
/**
* 路线通行类型映射数组用于UI显示和选择
*/
export const MAP_ROUTE_PASS_TYPES = Object.freeze(
<[string, MapRoutePassType][]>Object.entries(MapRoutePassType).filter(([, v]) => typeof v === 'number'),
);
//#endregion
/**
* 地图区域类型枚举
* 定义了场景中不同功能的区域类型
*/
//#region 区域
export enum MapAreaType {
/** 库区 - 仓储作业区域,包含动作点 */
= 1,
/** 互斥区 - 同时只能有一个机器人进入的区域 */
= 11,
/** 非互斥区 - 可以同时有多个机器人进入的区域 */
,
/** 约束区 - 机器人运动受到特定约束的区域 */
,
}
/**
* 区域类型映射数组用于UI显示和选择
*/
export const MAP_AREA_TYPES = Object.freeze(
<[string, MapAreaType][]>Object.entries(MapAreaType).filter(([, v]) => typeof v === 'number'),
);
//#endregion
/**
* 场景编辑器核心配置
* 基于Meta2D引擎的编辑器配置参数
*/
export const EDITOR_CONFIG: Options = {
/** 键盘事件类型 - 禁用所有键盘快捷键 */
keydown: KeydownType.None,
/** 严格作用域 - 限制编辑操作范围 */
strictScope: true,
/** 移动连接线 - 禁用拖动时自动移动连接的线条 */
moveConnectedLine: false,
/** 禁用输入 - 禁用文本输入功能 */
disableInput: true,
/** 禁用旋转 - 禁用图形旋转功能 */
disableRotate: true,
/** 禁用尺寸调整 - 允许图形大小调整 */
disableSize: false,
/** 禁用锚点 - 禁用连接锚点显示 */
disableAnchor: false,
/** 禁用空线条 - 不允许创建没有连接点的线条 */
disableEmptyLine: true,
/** 禁用重复线条 - 不允许在同一对点之间创建多条线 */
disableRepeatLine: true,
/** 最小缩放比例 - 画布最小缩放到1% */
minScale: 0.01,
/** 最大缩放比例 - 画布最大缩放到401% */
maxScale: 4.01,
/** 缩放步长 - 每次滚轮滚动的缩放幅度5% */
scaleOff: 0.05,
/** 默认锚点 - 不设置默认锚点 */
defaultAnchors: [],
/** 全局透明度 - 普通状态下图形透明度0为不透明 */
globalAlpha: 0,
/** 激活状态全局透明度 - 选中状态下图形透明度 */
activeGlobalAlpha: 0,
/** 默认字体大小 - 14像素 */
fontSize: 14,
/** 行高倍数 - 1.5倍行高 */
lineHeight: 1.5,
/** 字体族 - 使用系统默认字体 */
fontFamily: 'system-ui',
/** 文本旋转 - 禁用文本跟随图形旋转 */
textRotate: false,
/** 文本水平对齐 - 居中对齐 */
textAlign: 'center',
/** 文本垂直基线 - 顶部对齐 */
textBaseline: 'top',
};