diff --git a/src/app/babylon/controller/event-manager/events/event-loading-change.ts b/src/app/babylon/controller/event-manager/events/event-loading-change.ts new file mode 100644 index 0000000..bc18520 --- /dev/null +++ b/src/app/babylon/controller/event-manager/events/event-loading-change.ts @@ -0,0 +1,29 @@ +import { Event_Base } from "../event-base"; +import { EventManager } from "../event-manager"; + +/** + * 加载状态 发生变化 (loading遮罩) + */ +export class Event_LoadingChange extends Event_Base { + + /** + * loading中 + */ + static isLoading: boolean = false; + + /** + * 显示loading条 + */ + showLoading: boolean; + + /** + * 派发事件 + * @param showLoading 显示loading条 + */ + static dispatch(showLoading: boolean) { + let eventData = new Event_LoadingChange(); + eventData.showLoading = showLoading; + EventManager.dispatch(Event_LoadingChange, eventData); + Event_LoadingChange.isLoading = showLoading; + } +} \ No newline at end of file diff --git a/src/app/babylon/model/info/mark/mark-plan-info.ts b/src/app/babylon/model/info/mark/mark-plan-info.ts index 398e134..101c71c 100644 --- a/src/app/babylon/model/info/mark/mark-plan-info.ts +++ b/src/app/babylon/model/info/mark/mark-plan-info.ts @@ -1,5 +1,6 @@ import { TsTool } from "src/app/babylon/tool/ts-tool"; +import { MarkWindow } from "src/app/babylon/view/mark-window/mark-window"; import { MarkTagPos, MarkType } from "../../data/mark/mark-data"; import { MarkNodeData, MarkPlanData } from "../../data/mark/mark-plan-data"; import { ModelInfo_mark } from "./model-info-mark"; @@ -99,6 +100,16 @@ export class MarkNodeInfo { return this.currentMarkDataIndex; } + /** + * 阅读当前节点描述 + */ + readDescribe() { + if (this.nodeData != null) { + MarkWindow.instance.readDescribe(this.nodeData.describe); + } + + } + /** diff --git a/src/app/babylon/tool/load-tool.ts b/src/app/babylon/tool/load-tool.ts index a92efea..12f267b 100644 --- a/src/app/babylon/tool/load-tool.ts +++ b/src/app/babylon/tool/load-tool.ts @@ -1,4 +1,5 @@ import { PlanComponent } from "src/app/pages/plan/plan.component"; +import { Event_LoadingChange } from "../controller/event-manager/events/event-loading-change"; /** * 加载管理器 @@ -52,6 +53,7 @@ export class LoadTool { static onStart() { // console.log("开始加载"); PlanComponent.instance.showLoading(true); + Event_LoadingChange.dispatch(true); } /** @@ -60,6 +62,7 @@ export class LoadTool { static onEnd() { // console.log("结束加载"); PlanComponent.instance.showLoading(false); + Event_LoadingChange.dispatch(false); } } \ No newline at end of file diff --git a/src/app/babylon/tool/speaking-tool.ts b/src/app/babylon/tool/speaking-tool.ts index 2516888..9784ed9 100644 --- a/src/app/babylon/tool/speaking-tool.ts +++ b/src/app/babylon/tool/speaking-tool.ts @@ -1,3 +1,5 @@ +import { EventManager } from "../controller/event-manager/event-manager"; +import { Event_LoadingChange } from "../controller/event-manager/events/event-loading-change"; /** * 语音工具 @@ -10,9 +12,25 @@ export class SpeakingTool { if (SpeakingTool.instance == null) { SpeakingTool.instance = new SpeakingTool(); } + EventManager.addListener(Event_LoadingChange, (eventInfo) => { + SpeakingTool.instance.onChangeLoading(eventInfo); + }); return SpeakingTool.instance; } + /** + * loading状态改变时 + * @param eventInfo + */ + onChangeLoading(eventInfo: Event_LoadingChange) { + if (eventInfo.showLoading) { + this.pause(); + } + else { + this.resume(); + } + } + /** * 阅读一段文字 @@ -34,6 +52,10 @@ export class SpeakingTool { speakMsg.pitch = 1.5; window.speechSynthesis.speak(speakMsg); + if (Event_LoadingChange.isLoading) { + this.pause(); + } + return speakMsg; } } @@ -73,4 +95,7 @@ export class SpeakingTool { return false; } -} \ No newline at end of file +} + + + diff --git a/src/app/babylon/view/mark-window/mark-window.ts b/src/app/babylon/view/mark-window/mark-window.ts index ac46cbe..03bca52 100644 --- a/src/app/babylon/view/mark-window/mark-window.ts +++ b/src/app/babylon/view/mark-window/mark-window.ts @@ -7,9 +7,9 @@ import { DataManager } from "../../controller/data-manager"; import { EventManager } from "../../controller/event-manager/event-manager"; import { Event_GetAllMarkPlanData } from "../../controller/event-manager/events/event-get-markplandata-success"; import { Event_KeyboardInput } from "../../controller/event-manager/events/event-keyboard-input"; +import { Event_LoadingChange } from "../../controller/event-manager/events/event-loading-change"; import { Event_MarkInfoChange, MarkInfoChangeType } from "../../controller/event-manager/events/event-mark-info-change"; import { InputController } from "../../controller/inputController"; -import { ModeManager } from "../../controller/mode-manager"; import { SceneManager } from "../../controller/scene-manager"; import { BuildingStatus } from "../../controller/status/building-status"; import { IndoorStatus } from "../../controller/status/indoor-status"; @@ -237,7 +237,7 @@ export class MarkWindow extends UIBase { * @param markPlanId 方案id,一级节点ID * @param nodeId 节点id,二级节点id */ - saveToOldNode(markPlanId: number, nodeId: number) { + saveToOldNode(markPlanId: number, nodeId: number, newName?: string) { let markPlaneData = DataManager.allMarkPlanData.getMarkPlanById(markPlanId); if (markPlaneData == null) { console.error("没找到标绘方案:" + markPlanId) @@ -248,6 +248,9 @@ export class MarkWindow extends UIBase { let copyNodeData = classToClass(this.currentMarkNodeDataCopy);//覆盖数据 copyNodeData.id = oldNodeData.id; copyNodeData.index = oldNodeData.index; + if (newName != null) { + copyNodeData.name = newName; + } // copyNodeData.name = oldNodeData.name; markPlaneData.setNodeData(nodeId, copyNodeData);//覆盖数据 @@ -261,7 +264,7 @@ export class MarkWindow extends UIBase { */ createNewNodeAndSave(markPlanId: number, name: string) { let newNode = this.createMarkNodeData(markPlanId, name); - this.saveToOldNode(markPlanId, newNode.id); + this.saveToOldNode(markPlanId, newNode.id, name); }