|
|
@@ -1,7 +1,7 @@
|
|
|
import * as Blockly from "blockly";
|
|
|
import 'blockly/msg/zh-hans';
|
|
|
-import { javascriptGenerator } from "blockly/javascript";
|
|
|
-import { pythonGenerator } from "blockly/python";
|
|
|
+import {javascriptGenerator} from "blockly/javascript";
|
|
|
+import {pythonGenerator} from "blockly/python";
|
|
|
// 导入图片资源
|
|
|
import about_turnImage from '@/assets/images/blockly/component/about_turn.png';
|
|
|
import move_backwardImage from '@/assets/images/blockly/component/move_backward.png';
|
|
|
@@ -13,31 +13,43 @@ import useImage from '@/assets/images/blockly/component/use.png';
|
|
|
import pauseImage from '@/assets/images/blockly/component/pause.png';
|
|
|
import play_soundImage from '@/assets/images/blockly/component/sound.png';
|
|
|
import constructImage from '@/assets/images/blockly/component/construct.png';
|
|
|
+import {DICT_TYPE} from '@/utils/dictUtils.js';
|
|
|
|
|
|
-// 积木形状字典
|
|
|
-const BLOCKLY_SHAPE_DICT = {
|
|
|
- polygon_gem: { value: 'polygon_gem', label: '多边形宝石', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-18扣过的物品_1767512705721.png" }, // 多边形宝石
|
|
|
- SQUARE_GEM: { value: 'square_gem', label: '正方形宝石', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-22-2扣过的物品_1767507589513.png" }, // 正方形宝石
|
|
|
- TRIANGLE_GEM: { value: 'triangle_gem', label: '三角形宝石', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-17扣过的物品_1767512591147.png" }, // 三角形宝石
|
|
|
- RED_MARK: { value: 'red_mark', label: '红色标记', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-21-1扣过的物品_1767507553979.png" }, // 红色标记
|
|
|
- GREEN_MARK: { value: 'green_mark', label: '绿色标记', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-21-2扣过的物品_1767507565373.png" }, // 绿色标记
|
|
|
- BLUE_MARK: { value: 'blue_mark', label: '蓝色标记', img: "https://learn-ai.com.cn/admin-api/infra/file/29/get/20260104/2-23扣过的物品_1767507448751.png" } // 蓝色标记
|
|
|
+
|
|
|
+// 安全地获取和解析字典数据
|
|
|
+const getDictDataFromStorage = (dictType) => {
|
|
|
+ try {
|
|
|
+ const data = localStorage.getItem(dictType);
|
|
|
+ return data ? JSON.parse(data) : [];
|
|
|
+ } catch (error) {
|
|
|
+ console.error(`解析${dictType}字典数据失败:`, error);
|
|
|
+ return [];
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
// 地图元素类型字典
|
|
|
-const BLOCKLY_MAP_TYPE_DICT = {
|
|
|
- ICE: 'ice', // 冰块
|
|
|
- TASK: 'task', // 钥匙
|
|
|
- ITEM: 'item', // 物品
|
|
|
- TRAP: 'trap' // 陷阱
|
|
|
-};
|
|
|
+const savedMapTypeDict = getDictDataFromStorage(DICT_TYPE.AI_BLOCKLY_MAP_TYPE);
|
|
|
+const BLOCKLY_MAP_TYPE_DICT = savedMapTypeDict.reduce((acc, item) => {
|
|
|
+ acc[item.value.toUpperCase()] = item.value;
|
|
|
+ return acc;
|
|
|
+}, {});
|
|
|
|
|
|
-// 自定义积木字典
|
|
|
-const BLOCKLY_CUSTOMIZE_DICT = {
|
|
|
- PAUSE: 'pause', // 暂停
|
|
|
- PLAY_SOUND: 'play_sound', // 播放音效
|
|
|
- CONSTRUCT: 'construct' // 修建
|
|
|
-};
|
|
|
+// 特殊积木字典
|
|
|
+const blocklyMapSpecialDict = getDictDataFromStorage(DICT_TYPE.BLOCKLY_MAP_SPECIAL);
|
|
|
+const BLOCKLY_MAP_SPECIAL_DICT = blocklyMapSpecialDict.reduce((acc, item) => {
|
|
|
+ acc[item.value.toUpperCase()] = item.value;
|
|
|
+ return acc;
|
|
|
+}, {});
|
|
|
+// 地图标记字典
|
|
|
+const blocklyMapMarkDict = getDictDataFromStorage(DICT_TYPE.BLOCKLY_MAP_MARK);
|
|
|
+const BLOCKLY_MAP_MARK_DICT = blocklyMapMarkDict.reduce((acc, item) => {
|
|
|
+ acc[item.value.toUpperCase()] = {
|
|
|
+ value: item.value,
|
|
|
+ label: item.label,
|
|
|
+ img: item.cssClass
|
|
|
+ };
|
|
|
+ return acc;
|
|
|
+}, {});
|
|
|
|
|
|
/**
|
|
|
* 定义所有可用的自定义积木配置
|
|
|
@@ -259,7 +271,7 @@ const availableBlocks = {
|
|
|
{
|
|
|
"type": "field_dropdown",
|
|
|
"name": "SHAPE",
|
|
|
- "options": Object.values(BLOCKLY_SHAPE_DICT).map(shape => [
|
|
|
+ "options": Object.values(BLOCKLY_MAP_MARK_DICT).map(shape => [
|
|
|
{
|
|
|
"src": shape.img,
|
|
|
"width": 30,
|
|
|
@@ -680,7 +692,7 @@ export function getAllPythonGeneratorsConfig() {
|
|
|
}
|
|
|
|
|
|
// 导出字典常量
|
|
|
-export { BLOCKLY_SHAPE_DICT, BLOCKLY_MAP_TYPE_DICT, BLOCKLY_CUSTOMIZE_DICT };
|
|
|
+export { BLOCKLY_MAP_TYPE_DICT, BLOCKLY_MAP_MARK_DICT, BLOCKLY_MAP_SPECIAL_DICT };
|
|
|
|
|
|
export default {
|
|
|
registerCustomBlocks,
|
|
|
@@ -690,7 +702,7 @@ export default {
|
|
|
initBlockly,
|
|
|
getAllBlocksConfig,
|
|
|
getAllGeneratorsConfig,
|
|
|
- BLOCKLY_SHAPE_DICT,
|
|
|
BLOCKLY_MAP_TYPE_DICT,
|
|
|
- BLOCKLY_CUSTOMIZE_DICT
|
|
|
+ BLOCKLY_MAP_MARK_DICT,
|
|
|
+ BLOCKLY_MAP_SPECIAL_DICT
|
|
|
};
|