2023-12-27 18:11:27 +08:00
|
|
|
|
package component
|
|
|
|
|
|
|
|
|
|
import "joylink.club/ecs"
|
|
|
|
|
|
2024-01-05 11:30:39 +08:00
|
|
|
|
///////////////////////////////////////////
|
|
|
|
|
//组合空调柜AHU-A01 二通阀MOV-A01
|
|
|
|
|
//回排风机RAF-A01 风阀MDD-A03
|
|
|
|
|
//排烟风机SEF-A01 风阀MDD-A04
|
|
|
|
|
//排风阀MDA-A02
|
|
|
|
|
//回风阀MDA-A03
|
|
|
|
|
//小新风阀MDA-A01
|
|
|
|
|
//空调柜MDD-A02
|
|
|
|
|
//防烟防火SFD-A01
|
|
|
|
|
|
|
|
|
|
// PipeMatter 管线中传输的物质类型
|
|
|
|
|
type PipeMatter uint8
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
PmtNon PipeMatter = iota //未知或没有
|
|
|
|
|
PmtWater
|
|
|
|
|
PmtElectricity //电
|
|
|
|
|
PmtAir //正常空气
|
|
|
|
|
PmtSmoke //含有有害烟的空气(如火灾时的烟气)
|
|
|
|
|
PmtOil //油
|
|
|
|
|
)
|
2024-01-02 17:32:09 +08:00
|
|
|
|
|
2024-01-05 11:30:39 +08:00
|
|
|
|
func (m *PipeMatter) IsNon() bool {
|
|
|
|
|
return *m == PmtNon
|
|
|
|
|
}
|
|
|
|
|
func (m *PipeMatter) IsEle() bool {
|
|
|
|
|
return *m == PmtElectricity
|
2023-12-27 18:11:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-05 11:30:39 +08:00
|
|
|
|
// PipeDirection 管线中物质传输方向定义
|
|
|
|
|
type PipeDirection uint8
|
2023-12-29 17:00:26 +08:00
|
|
|
|
|
|
|
|
|
const (
|
2024-01-05 11:30:39 +08:00
|
|
|
|
PdNon PipeDirection = iota //无方向
|
|
|
|
|
PdAb //方向A=>B
|
|
|
|
|
PdBa //方向B=>A
|
2023-12-29 17:00:26 +08:00
|
|
|
|
)
|
|
|
|
|
|
2024-01-05 11:30:39 +08:00
|
|
|
|
func (d *PipeDirection) IsAb() bool {
|
|
|
|
|
return *d == PdAb
|
|
|
|
|
}
|
|
|
|
|
func (d *PipeDirection) IsBa() bool {
|
|
|
|
|
return *d == PdBa
|
|
|
|
|
}
|
|
|
|
|
func (d *PipeDirection) IsNon() bool {
|
|
|
|
|
return *d == PdNon
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Pipe 管线一般状态定义
|
|
|
|
|
type Pipe struct {
|
|
|
|
|
Matter PipeMatter //管线中物质类型
|
|
|
|
|
Direction PipeDirection //管线中物质运动方向
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// PipeElectricity 电线(三相交流,一般单相交流,直流)
|
|
|
|
|
// 如果是三相电,则简化认为每相电压电流一样
|
|
|
|
|
type PipeElectricity struct {
|
|
|
|
|
U uint32 //电压
|
|
|
|
|
I uint32 //电流
|
|
|
|
|
Sx bool //true-三相交流电,此时Ac无效;false-一般单相电,此时Ua Ia Ac有效
|
|
|
|
|
Ac bool //true-交流;false-直流
|
|
|
|
|
Sources map[string]*ElectricitySource //key-电源实体id,value-电源投影
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewPipeElectricity() *PipeElectricity {
|
|
|
|
|
return &PipeElectricity{Sources: make(map[string]*ElectricitySource)}
|
|
|
|
|
}
|
|
|
|
|
func (p *PipeElectricity) FromElectricitySource(es *ElectricitySource) {
|
|
|
|
|
p.U = es.U
|
|
|
|
|
p.Sx = es.Sx
|
|
|
|
|
p.Ac = es.Ac
|
|
|
|
|
}
|
|
|
|
|
func (p *PipeElectricity) TransPower(powerSourceId string, power *ElectricitySource) {
|
|
|
|
|
ep, ok := p.Sources[powerSourceId]
|
|
|
|
|
if ok {
|
|
|
|
|
*ep = *power
|
|
|
|
|
ep.Fresh -= 1
|
|
|
|
|
} else {
|
|
|
|
|
p.Sources[powerSourceId] = &ElectricitySource{}
|
|
|
|
|
*p.Sources[powerSourceId] = *power
|
|
|
|
|
p.Sources[powerSourceId].Fresh -= 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ElectricitySource 电源(三相交流,一般单相交流,直流)
|
|
|
|
|
type ElectricitySource struct {
|
|
|
|
|
Fresh int64 //该电力值更新的时间戳
|
|
|
|
|
U uint32 //电压
|
|
|
|
|
I uint32 //电流
|
|
|
|
|
Sx bool //true-三相交流电,此时Ac无效;false-一般单相电,此时Ua Ia Ac有效
|
|
|
|
|
Ac bool //true-交流;false-直流
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewElectricitySource() *ElectricitySource {
|
|
|
|
|
return &ElectricitySource{}
|
2024-01-02 17:32:09 +08:00
|
|
|
|
}
|
2024-01-05 11:30:39 +08:00
|
|
|
|
|
|
|
|
|
// SetOut0 设置0输出
|
|
|
|
|
func (s *ElectricitySource) SetOut0() {
|
|
|
|
|
s.U = 0
|
|
|
|
|
s.I = 0
|
2024-01-02 17:32:09 +08:00
|
|
|
|
}
|
2024-01-05 11:30:39 +08:00
|
|
|
|
|
|
|
|
|
// PipeFluid 流体(液体气体)管线
|
|
|
|
|
type PipeFluid struct {
|
|
|
|
|
T float32 //温度
|
2024-01-02 17:32:09 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-01-05 11:30:39 +08:00
|
|
|
|
func NewPipeFluid() *PipeFluid {
|
|
|
|
|
return &PipeFluid{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
PipeType = ecs.NewComponentType[Pipe]() //电线
|
|
|
|
|
PipeElectricityType = ecs.NewComponentType[PipeElectricity]() //电线电力
|
|
|
|
|
PipeFluidType = ecs.NewComponentType[PipeFluid]() //管线流体
|
|
|
|
|
|
|
|
|
|
ElectricitySourceType = ecs.NewComponentType[ElectricitySource]() //电源
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2023-12-27 18:11:27 +08:00
|
|
|
|
// FluidDriver 流体驱动器
|
|
|
|
|
type FluidDriver struct {
|
2023-12-29 17:00:26 +08:00
|
|
|
|
On bool //true-输出流体驱动力;false-未输出流体驱动力
|
2023-12-27 18:11:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
FluidDriverType = ecs.NewComponentType[FluidDriver]() //流体驱动器
|
|
|
|
|
)
|