102 lines
2.7 KiB
Go
102 lines
2.7 KiB
Go
package fi
|
|
|
|
import (
|
|
"fmt"
|
|
"joylink.club/bj-rtsts-server/dto/request_proto"
|
|
|
|
"joylink.club/ecs"
|
|
"joylink.club/rtsssimulation/component"
|
|
"joylink.club/rtsssimulation/entity"
|
|
)
|
|
|
|
// 按下按钮
|
|
func PressDownButton(w ecs.World, id string) error {
|
|
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
|
wd := entity.GetWorldData(w)
|
|
entry, ok := wd.EntityMap[id]
|
|
if ok {
|
|
state := component.BitStateType.Get(entry)
|
|
state.Val = true
|
|
|
|
} else {
|
|
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的按钮", id))
|
|
}
|
|
return ecs.NewOkEmptyResult()
|
|
})
|
|
return result.Err
|
|
}
|
|
|
|
// 抬起拉起按钮
|
|
func PressUpButton(w ecs.World, id string) error {
|
|
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
|
wd := entity.GetWorldData(w)
|
|
entry, ok := wd.EntityMap[id]
|
|
if ok {
|
|
state := component.BitStateType.Get(entry)
|
|
state.Val = false
|
|
|
|
} else {
|
|
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的按钮", id))
|
|
}
|
|
return ecs.NewOkEmptyResult()
|
|
})
|
|
return result.Err
|
|
}
|
|
|
|
// 修改钥匙挡位
|
|
func SwitchKeyGear(w ecs.World, id string, gear int32) error {
|
|
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
|
wd := entity.GetWorldData(w)
|
|
entry, ok := wd.EntityMap[id]
|
|
if ok {
|
|
state := component.GearStateType.Get(entry)
|
|
state.Val = gear
|
|
|
|
} else {
|
|
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的钥匙开关", id))
|
|
}
|
|
return ecs.NewOkEmptyResult()
|
|
})
|
|
return result.Err
|
|
}
|
|
|
|
func SetBypassBtn(w ecs.World, id string, p request_proto.BypassOperationReq_Operation) error {
|
|
|
|
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
|
wd := entity.GetWorldData(w)
|
|
entry, ok := wd.EntityMap[id]
|
|
if ok {
|
|
state := component.BitStateType.Get(entry)
|
|
state.Bypass.BypassEnable = convertBypassBoolVal(p)
|
|
state.Bypass.OldVal = state.Val
|
|
} else {
|
|
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的按钮", id))
|
|
}
|
|
return ecs.NewOkEmptyResult()
|
|
})
|
|
return result.Err
|
|
}
|
|
func SetBypassSwitchKey(w ecs.World, id string, p request_proto.BypassOperationReq_Operation) error {
|
|
result := <-ecs.Request[ecs.EmptyType](w, func() ecs.Result[ecs.EmptyType] {
|
|
wd := entity.GetWorldData(w)
|
|
entry, ok := wd.EntityMap[id]
|
|
if ok {
|
|
state := component.GearStateType.Get(entry)
|
|
state.BypassEnable = convertBypassBoolVal(p)
|
|
state.OldVal = state.Val == 0
|
|
} else {
|
|
return ecs.NewErrResult(fmt.Errorf("未找到id=%s的钥匙开关", id))
|
|
}
|
|
return ecs.NewOkEmptyResult()
|
|
})
|
|
return result.Err
|
|
}
|
|
|
|
func convertBypassBoolVal(p request_proto.BypassOperationReq_Operation) bool {
|
|
val := true
|
|
if p == request_proto.BypassOperationReq_bypass_reset {
|
|
val = false
|
|
}
|
|
return val
|
|
}
|