import { Type } from "class-transformer"; import { MarkData_Area } from "./other/mark-data-area"; import { MarkData, MarkType, MarkKindType, MarkTagPos, MarkTask } from "./mark-data"; import { MarkData_Line } from "./other/mark-data-line"; import { MarkData_multiLine } from "./other/mark-data-multi-line"; import { MarkData_multiArrow_CT, MarkData_multiArrow_JG } from "./other/mark-data-multi-arrow"; import { ConfigManager } from "src/app/babylon/controller/config-manager"; export class AllMarkData { /** * 灾情 */ @Type(() => MarkData) marks_Disaster: MarkData[] = []; /** * 外部力量 */ @Type(() => MarkData) marks_Outside: MarkData[] = []; // /** // * 联动力量 // */ // @Type(() => MarkData) // marks_Linkage: MarkData[] = []; /** * 内部力量 */ @Type(() => MarkData) marks_Inside: MarkData[] = []; /** * 其他 */ @Type(() => MarkData) marks_Other: MarkData[] = []; static CreateAllMarkData(): AllMarkData { let result = new AllMarkData(); //灾情 let tagPos: MarkTagPos = MarkTagPos.Disaster; AllMarkData.newMarkData(MarkType.SY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.DT, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.LYX, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.LYD, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.SNH, MarkKindType.Effect, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.H, MarkKindType.Effect, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.YWB, MarkKindType.Effect, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.YWA, MarkKindType.Effect, tagPos, result, undefined, false); //外部力量 tagPos = MarkTagPos.Outside; AllMarkData.newMarkData(MarkType.XFC, MarkKindType.Car, tagPos, result); AllMarkData.newMarkData(MarkType.XFY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.JC, MarkKindType.Car, tagPos, result); AllMarkData.newMarkData(MarkType.JJ, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.GA, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.JHC, MarkKindType.Car, tagPos, result); AllMarkData.newMarkData(MarkType.YS, MarkKindType.Persion, tagPos, result); //内部力量 tagPos = MarkTagPos.Inside; AllMarkData.newMarkData(MarkType.JL, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.YZZG, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.SYY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.JYY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XYY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.YGC, MarkKindType.Car, tagPos, result); AllMarkData.newMarkData(MarkType.YGCSJ, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XFSD, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XFSQ, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.ZYMBRQ, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.PTMHQ, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.GFMHQ, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.TCMHQ, MarkKindType.Goods, tagPos, result); //其他 tagPos = MarkTagPos.Other; AllMarkData.newMarkData(MarkType.GK, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.JCA, MarkKindType.Car, tagPos, result); AllMarkData.newMarkData(MarkType.JJX, MarkKindType.Goods, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.JGLX, MarkKindType.Virtual, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.CT, MarkKindType.Virtual, tagPos, result, undefined, false); AllMarkData.newMarkData(MarkType.WZ, MarkKindType.Virtual, tagPos, result, MarkTask.Unknown); AllMarkData.newMarkData(MarkType.QYSDA, MarkKindType.Virtual, tagPos, result, MarkTask.Unknown, false); AllMarkData.newMarkData(MarkType.QYSDB, MarkKindType.Virtual, tagPos, result, MarkTask.Unknown, false); return result; } //新建设备信息 /** * 创建标绘物素材库数据 * @param type * @param kindType * @param tagPos * @param allMarkData * @param taskType * @param isModel */ static newMarkData(type: MarkType, kindType: MarkKindType, tagPos: MarkTagPos, allMarkData: AllMarkData, taskType?: MarkTask, isModel = true): MarkData { let l_taskType: MarkTask = MarkTask.None; let list = []; switch (tagPos) { case MarkTagPos.Disaster: list = allMarkData.marks_Disaster; break; case MarkTagPos.Outside: list = allMarkData.marks_Outside break; // case MarkTagPos.Linkage: // list = allMarkData.marks_Linkage; // break; case MarkTagPos.Inside: list = allMarkData.marks_Inside; break; case MarkTagPos.Other: list = allMarkData.marks_Other; break; } //除了灾情以外, 人和车的任务类型 //if (tagPos != MarkTagPos.Disaster) { if (kindType == MarkKindType.Persion) { l_taskType = MarkTask.Person; } else if (kindType == MarkKindType.Car) { l_taskType = MarkTask.Car; } //} //没指定,则使用规则的任务类型 if (taskType == null) { taskType = l_taskType; } let icon = ConfigManager.getMarkIconUrl(tagPos, type); let modelPath = ConfigManager.getMarkModelPath(tagPos, type); let modelName = type + ".gltf"; let result = null; switch (type) { case MarkType.QYSDA: case MarkType.QYSDB: result = new MarkData_Area(type.toString(), type, tagPos, kindType, icon, modelPath, modelName, taskType, isModel); break; case MarkType.JJX: result = new MarkData_Line(type.toString(), type, tagPos, kindType, icon, modelPath, modelName, taskType, isModel); break; case MarkType.JGLX: result = new MarkData_multiArrow_JG(type.toString(), type, tagPos, kindType, icon, modelPath, modelName, taskType, isModel); break; case MarkType.CT: result = new MarkData_multiArrow_CT(type.toString(), type, tagPos, kindType, icon, modelPath, modelName, taskType, isModel); break; default: result = new MarkData(type.toString(), type, tagPos, kindType, icon, modelPath, modelName, taskType, isModel); break; } list.push(result); return result; } }