rt-sim-training-client/src/jmapNew/shape/Signal/ESigPost.js

78 lines
2.2 KiB
JavaScript

import Polyline from 'zrender/src/graphic/shape/Polyline';
import Group from 'zrender/src/container/Group';
class ESigPost extends Group {
constructor(model) {
super();
this.model = model;
this.create();
}
create() {
const model = this.model;
const style = this.model.style;
this.ver = new Polyline({
_subType: 'SignalLamp',
_val: '3',
zlevel: model.zlevel,
z: model.z,
shape: {
points: [
[model.x, model.y + style.Signal.post.standardHeight * 1.2],
[model.x, model.y - style.Signal.post.standardHeight * 1.2]
]
},
style: {
lineWidth: style.Signal.post.standardWidth,
stroke: style.Signal.post.standardColor
}
});
this.hor = new Polyline({
zlevel: model.zlevel,
z: model.z,
shape: {
points: [
[model.x, model.y],
[model.x + model.drict * style.Signal.post.standardLength * 1.2, model.y]
]
},
style: {
lineWidth: style.Signal.post.standardWidth,
stroke: style.Signal.post.standardColor
}
});
this.add(this.ver);
this.add(this.hor);
model.type === '01' ? this.hor.hide() : this.hor.show();
if (style.Signal.post.standardShow) {
this.hor.show();
}
}
getLampPosition(type) {
const model = this.model;
const style = this.model.style;
if (style.Signal.post.standardShow) {
type = '01';
}
const length = style.Signal.post.standardShow ? 4 : 0;
if (type === '01') {
return {
x: model.x + model.drict * style.Signal.lamp.radiusR * 3 / 2 + model.drict * length,
y: model.y
};
} else {
return {
x: this.hor.shape.points[1][0] + model.drict * style.Signal.lamp.radiusR + model.drict * length,
y: this.hor.shape.points[1][1]
};
}
}
}
export default ESigPost;