【删除按钮操作】
This commit is contained in:
parent
6c8b2e7711
commit
9d37273d91
@ -1,15 +0,0 @@
|
||||
package components
|
||||
|
||||
import (
|
||||
"joylink.club/ecs"
|
||||
"joylink.club/rtsssimulation/components/cstate"
|
||||
)
|
||||
|
||||
// 按钮状态组件
|
||||
var ButtonStateComponent = ecs.NewComponentType[cstate.ButtonState]()
|
||||
|
||||
// 按钮操作组件
|
||||
var ButtonPressOperatingComponent = ecs.NewComponentType[cstate.ButtonPressOperating]()
|
||||
|
||||
// 按钮确认组件
|
||||
var ButtonConfirmOperatingComponent = ecs.NewComponentType[cstate.ButtonConfirmOperating]()
|
@ -1 +1 @@
|
||||
Subproject commit c3b9d965c607a2f29e0bdc586aba6851d4f29f13
|
||||
Subproject commit 8ffea356da60f2811eed5735c5733c0a24b0fbea
|
@ -1,104 +0,0 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"github.com/yohamta/donburi/filter"
|
||||
"joylink.club/ecs"
|
||||
"joylink.club/rtsssimulation/components"
|
||||
)
|
||||
|
||||
// 按钮系统
|
||||
type ButtonSystem struct {
|
||||
}
|
||||
|
||||
// 按钮组件
|
||||
var btnIdCom, btnStaCom, btnPreOperCom, btnConOperCom = components.DeviceIdentityComponent,
|
||||
components.ButtonStateComponent, components.ButtonPressOperatingComponent, components.ButtonConfirmOperatingComponent
|
||||
|
||||
// 查询
|
||||
var btnIdQuery = ecs.NewQuery(filter.Contains(btnIdCom))
|
||||
var btnUpdateQuery = ecs.NewQuery(filter.Contains(btnStaCom, btnPreOperCom, btnConOperCom))
|
||||
|
||||
func NewButtonSystem() *ButtonSystem {
|
||||
return &ButtonSystem{}
|
||||
}
|
||||
|
||||
// 按钮操作
|
||||
func PressDownAndUpButton(w ecs.World, btnId string, down bool) bool {
|
||||
buttonEntry := queryButton(w, btnId)
|
||||
if buttonEntry == nil {
|
||||
return false
|
||||
}
|
||||
t, b := getButtonBaseInfo(btnId)
|
||||
if !buttonEntry.HasComponent(btnPreOperCom) { // 操作组件
|
||||
buttonEntry.AddComponent(btnPreOperCom)
|
||||
}
|
||||
preOper := btnPreOperCom.Get(buttonEntry)
|
||||
preOper.Start, preOper.Down, preOper.NeedConfirm, preOper.OperateTime = true, down, b, t
|
||||
return true
|
||||
}
|
||||
|
||||
// 确认操作
|
||||
func ConfirmButton(w ecs.World, btnId string, confirm bool) bool {
|
||||
buttonEntry := queryButton(w, btnId)
|
||||
if buttonEntry == nil {
|
||||
return false
|
||||
}
|
||||
if !buttonEntry.HasComponent(btnConOperCom) { // 确认组件
|
||||
buttonEntry.AddComponent(btnConOperCom)
|
||||
}
|
||||
conOper := btnConOperCom.Get(buttonEntry)
|
||||
conOper.Confirm, conOper.Cancel = confirm, !confirm
|
||||
return true
|
||||
}
|
||||
|
||||
// 更新按钮状态
|
||||
func (bs *ButtonSystem) Update(w ecs.World) {
|
||||
btnUpdateQuery.Each(w, func(e *ecs.Entry) {
|
||||
if e.HasComponent(btnPreOperCom) {
|
||||
btnPreOper := btnPreOperCom.Get(e)
|
||||
if btnPreOper.Start { // 按钮开始操作
|
||||
if btnPreOper.OperateTime <= 0 { // 按钮操作时间大于0
|
||||
btnPreOper.Start, btnPreOper.OperateTime = false, 0
|
||||
} else {
|
||||
btnPreOper.OperateTime -= int64(w.Tick())
|
||||
if btnPreOper.NeedConfirm {
|
||||
conOper := btnConOperCom.Get(e)
|
||||
if e.HasComponent(btnConOperCom) && (conOper.Cancel || conOper.Confirm) {
|
||||
if conOper.Confirm {
|
||||
btnSta := btnStaCom.Get(e)
|
||||
btnSta.PressDown = btnPreOper.Down
|
||||
}
|
||||
btnPreOper.Start, btnPreOper.OperateTime = false, 0
|
||||
conOper.Cancel, conOper.Confirm = false, false
|
||||
e.RemoveComponent(btnPreOperCom)
|
||||
e.RemoveComponent(btnConOperCom)
|
||||
}
|
||||
} else {
|
||||
btnSta := btnStaCom.Get(e)
|
||||
btnSta.PressDown = btnPreOper.Down
|
||||
btnPreOper.Start, btnPreOper.OperateTime = false, 0
|
||||
e.RemoveComponent(btnPreOperCom)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
e.RemoveComponent(btnPreOperCom)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 查找按钮
|
||||
func queryButton(w ecs.World, btnId string) *ecs.Entry {
|
||||
var buttonEntry *ecs.Entry = nil
|
||||
btnIdQuery.Each(w, func(e *ecs.Entry) {
|
||||
if id := btnIdCom.Get(e).Id; id == btnId {
|
||||
buttonEntry = e
|
||||
}
|
||||
})
|
||||
return buttonEntry
|
||||
}
|
||||
|
||||
// 获取按钮设置信息
|
||||
func getButtonBaseInfo(btnId string) (int64, bool) {
|
||||
return 15, false
|
||||
}
|
Loading…
Reference in New Issue
Block a user