rts-sim-module/entity/iscs_bas.go
2023-12-22 15:29:57 +08:00

380 lines
11 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package entity
import (
"joylink.club/ecs"
"joylink.club/rtsssimulation/component"
)
// NewIscsFanEntity 创建风机实体
func NewIscsFanEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.FanType, component.FanStateType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewIscsTwoSpeedFanEntity 创建双速风机实体
func NewIscsTwoSpeedFanEntity(w ecs.World, id string) *ecs.Entry {
entry := NewIscsFanEntity(w, id)
entry.AddComponent(component.TwoSpeedFanTag)
return entry
}
// NewAirConditionerEntity 创建空调实体/空调器实体
//
// fc-true变频空调
func NewAirConditionerEntity(w ecs.World, id string, fc bool) *ecs.Entry {
entry := NewIscsFanEntity(w, id)
entry.HasComponent(component.AirConditionerTag)
component.FanType.Get(entry).Fc = fc
return entry
}
// NewCombinedAirConditionerEntity 组合式空调(变频空调)
func NewCombinedAirConditionerEntity(w ecs.World, id string) *ecs.Entry {
entry := NewAirConditionerEntity(w, id, true)
entry.AddComponent(component.CombinedAirConditionerTag)
return entry
}
// NewElectricControlValveEntity 创建电动调节阀实体
func NewElectricControlValveEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.ElectricControlValveType, component.TwoPositionTransformType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewElectricAirValveEntity 创建电动风阀实体
func NewElectricAirValveEntity(w ecs.World, id string) *ecs.Entry {
entry := NewElectricControlValveEntity(w, id)
entry.AddComponent(component.ElectricAirValveTag)
return entry
}
// NewCombinationAirValveEntity 创建组合式风阀
func NewCombinationAirValveEntity(w ecs.World, id string) *ecs.Entry {
entry := NewElectricControlValveEntity(w, id)
entry.AddComponent(component.CombinationAirValveTag)
return entry
}
// NewElectricTwoWayValveEntity 创建电动两通调节阀实体
func NewElectricTwoWayValveEntity(w ecs.World, id string) *ecs.Entry {
entry := NewElectricControlValveEntity(w, id)
entry.AddComponent(component.ElectricTwoWayValveTag)
return entry
}
// NewElectricButterflyValveEntity 创建电动蝶阀实体
func NewElectricButterflyValveEntity(w ecs.World, id string) *ecs.Entry {
entry := NewElectricControlValveEntity(w, id)
entry.AddComponent(component.ElectricButterflyValveTag)
return entry
}
// NewPurificationDeviceEntity 创建净化装置实体
func NewPurificationDeviceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.PurificationDeviceType, component.CounterType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewElevatorDeviceEntity 创建垂直电梯实体
func NewElevatorDeviceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.ElevatorType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewEscalatorDeviceEntity 创建自动扶梯实体
func NewEscalatorDeviceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.EscalatorType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewChillerUnitEntity 创建冷水机组实体
func NewChillerUnitEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.ChillerUnitType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewWaterPumpEntity 创建水泵实体
func NewWaterPumpEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.WaterPumpType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewFloatBallWaterPumpEntity 创建浮球型水泵
func NewFloatBallWaterPumpEntity(w ecs.World, id string) *ecs.Entry {
entry := NewWaterPumpEntity(w, id)
entry.AddComponent(component.FloatBallSwitchType)
return entry
}
// NewWaterTankEntity 创建水池或水箱实体
func NewWaterTankEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.WaterTankType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewWaterClosedContainerEntity 创建封闭式水容器,如冷却塔、水处理器
func NewWaterClosedContainerEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.WaterClosedContainerType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewCoolingTowerEntity 创建冷却塔实体
func NewCoolingTowerEntity(w ecs.World, id string) *ecs.Entry {
entry := NewWaterClosedContainerEntity(w, id)
entry.AddComponent(component.CoolingTowerTag)
return entry
}
// NewWaterProcessorEntity 创建水处理器实体
func NewWaterProcessorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewWaterClosedContainerEntity(w, id)
entry.AddComponent(component.WaterProcessorTag)
return entry
}
// NewBypassValveSwitchEntity 创建旁通阀开关实体
func NewBypassValveSwitchEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.ControlValveType, component.BypassValveSwitchTag))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewSensorEntity 创建传感器实体
func NewSensorEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.SensorType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewThSensorEntity 创建温湿度传感器实体
func NewThSensorEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.ThSensorType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewCO2SensorEntity CO2 传感器
func NewCO2SensorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewSensorEntity(w, id)
entry.AddComponent(component.CO2SensorTag)
return entry
}
// NewWaterTSensorEntity 水温传感器
func NewWaterTSensorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewSensorEntity(w, id)
entry.AddComponent(component.WaterTSensorTag)
return entry
}
// NewPressureSensorEntity 压力传感器
func NewPressureSensorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewSensorEntity(w, id)
entry.AddComponent(component.PressureSensorTag)
return entry
}
// NewFlowSensorEntity 流量传感器
func NewFlowSensorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewSensorEntity(w, id)
entry.AddComponent(component.FlowSensorTag)
return entry
}
// NewTemperatureSensorEntity 温度传感器
func NewTemperatureSensorEntity(w ecs.World, id string) *ecs.Entry {
entry := NewSensorEntity(w, id)
entry.AddComponent(component.TemperatureSensorTag)
return entry
}
// NewLightingGuidanceEntity 创建照明导向实体
func NewLightingGuidanceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.LightingGuidanceType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewPowerSwitchGuidanceEntity 创建电源开关导向实体
func NewPowerSwitchGuidanceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.PowerSwitchGuidanceType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewEscalatorGuidanceEntity 创建扶梯导向实体
func NewEscalatorGuidanceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.EscalatorGuidanceType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewTicketGateGuidanceEntity 创建闸机导向实体
func NewTicketGateGuidanceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.TicketGateGuidanceType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewSectionEvacuationGuidanceEntity 创建区间疏散导向实体
func NewSectionEvacuationGuidanceEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.SectionEvacuationGuidanceType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewCivilDefenseDoorEntity 创建人防门实体
func NewCivilDefenseDoorEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.CivilDefenseDoorType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewPlcControllerEntity 创建PLC控制器实体
func NewPlcControllerEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.PlcControllerType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewNetworkSwitchEntity 创建网络交换机实体
func NewNetworkSwitchEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.NetworkSwitchType))
component.UidType.SetValue(e, component.Uid{Id: id})
component.NetworkSwitchType.Set(e, &component.NetworkSwitch{Normal: true})
wd.EntityMap[id] = e
}
return e
}
// NewEmergencyLightingEntity 创建应急照明实体
func NewEmergencyLightingEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.EmergencyLightingType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}
// NewAirCurtainEntity 创建空气幕实体
func NewAirCurtainEntity(w ecs.World, id string) *ecs.Entry {
wd := GetWorldData(w)
e, ok := wd.EntityMap[id]
if !ok {
e := w.Entry(w.Create(component.UidType, component.AirCurtainType))
component.UidType.SetValue(e, component.Uid{Id: id})
wd.EntityMap[id] = e
}
return e
}