You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
7.2 KiB
175 lines
7.2 KiB
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; |
|
} |
|
|
|
} |