package model import ( "joylink.club/rtsssimulation/umi" ) // 长轨道,道岔端点间的轨道 type LinkModel struct { DeviceModel //轨道A端口连接的道岔 PortA umi.ISwitchRef //轨道B端口连接的道岔 PortB umi.ISwitchRef //长度,单位mm Length int64 } func NewLinkModel(id string) *LinkModel { return &LinkModel{DeviceModel: DeviceModel{Id: id, Type: umi.Link}} } // 获取轨道长度,单位mm func (me *LinkModel) Len() int64 { return me.Length } // 轨道A端连接的道岔 func (me *LinkModel) PortASwitch() umi.ISwitchRef { return me.PortA } // 轨道B端连接的道岔 func (me *LinkModel) PortBSwitch() umi.ISwitchRef { return me.PortB } /////////////////////////////////////////////////////// // 轨道端口引用 type LinkRef struct { Link umi.ILinkModel //引用轨道的端口 Port umi.PortEnum } func NewLinkRef(link *LinkModel, port umi.PortEnum) *LinkRef { return &LinkRef{Link: link, Port: port} } // 被引用的轨道模型 func (me *LinkRef) LinkModel() umi.ILinkModel { return me.Link } // 被引用的轨道的端口 func (me *LinkRef) LinkPort() umi.PortEnum { return me.Port } /////////////////////////////////////////////////////////// // 轨道偏移位置引用,轨道A端为偏移起始位置 type LinkOffsetRef struct { Link umi.ILinkModel //偏移位置,单位mm Offset int64 } func NewLinkOffsetRef(link *LinkModel, offset int64) *LinkOffsetRef { return &LinkOffsetRef{Link: link, Offset: offset} } // 被引用的轨道模型 func (me *LinkOffsetRef) LinkModel() umi.ILinkModel { return me.Link } // 偏移量,单位mm func (me *LinkOffsetRef) GetOffset() int64 { return me.Offset }