-
Notifications
You must be signed in to change notification settings - Fork 83
/
default.go
156 lines (131 loc) · 3.88 KB
/
default.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package event
// As in collision and mouse, default.go lists functions that
// only operate on DefaultBus, a package global bus.
var (
// DefaultBus is a bus that has additional operations for CIDs, and can
// be called via event.Call as opposed to bus.Call
DefaultBus = NewBus()
)
// Trigger an event, but only for one ID, on the default bus
func (cid CID) Trigger(eventName string, data interface{}) {
go func(eventName string, data interface{}) {
DefaultBus.mutex.RLock()
iid := int(cid)
if idMap, ok := DefaultBus.bindingMap[eventName]; ok {
if bs, ok := idMap[iid]; ok {
for i := bs.highIndex - 1; i >= 0; i-- {
lst := bs.highPriority[i]
if lst != nil {
DefaultBus.triggerDefault((*lst).sl, iid, eventName, data)
}
}
DefaultBus.triggerDefault((bs.defaultPriority).sl, iid, eventName, data)
for i := 0; i < bs.lowIndex; i++ {
lst := bs.lowPriority[i]
if lst != nil {
DefaultBus.triggerDefault((*lst).sl, iid, eventName, data)
}
}
}
}
DefaultBus.mutex.RUnlock()
}(eventName, data)
}
// Bind on a CID is shorthand for bus.Bind(fn, name, cid), on the default bus.
func (cid CID) Bind(fn Bindable, name string) {
DefaultBus.Bind(fn, name, int(cid))
}
// BindPriority on a CID is shorthand for bus.BindPriority(fn, ...), on the default bus.
func (cid CID) BindPriority(fn Bindable, name string, priority int) {
DefaultBus.BindPriority(fn, BindingOption{
Event{
name,
int(cid),
},
priority,
})
}
// UnbindAll removes all events with the given cid from the event bus
func (cid CID) UnbindAll() {
DefaultBus.UnbindAll(BindingOption{
Event{
"",
int(cid),
},
0,
})
}
// UnbindAllAndRebind on a CID is equivalent to bus.UnbindAllAndRebind(..., cid)
func (cid CID) UnbindAllAndRebind(binds []Bindable, events []string) {
DefaultBus.UnbindAllAndRebind(BindingOption{
Event{
"",
int(cid),
},
0,
}, binds, int(cid), events)
}
// Trigger calls Trigger on the DefaultBus
func Trigger(eventName string, data interface{}) {
DefaultBus.Trigger(eventName, data)
}
// TriggerBack calls TriggerBack on the DefaultBus
func TriggerBack(eventName string, data interface{}) chan bool {
return DefaultBus.TriggerBack(eventName, data)
}
// GlobalBind calls GlobalBind on the DefaultBus
func GlobalBind(fn Bindable, name string) {
DefaultBus.GlobalBind(fn, name)
}
// UnbindAll calls UnbindAll on the DefaultBus
func UnbindAll(opt BindingOption) {
DefaultBus.UnbindAll(opt)
}
// UnbindAllAndRebind calls UnbindAllAndRebind on the DefaultBus
func UnbindAllAndRebind(bo BindingOption, binds []Bindable, cid int, events []string) {
DefaultBus.UnbindAllAndRebind(bo, binds, cid, events)
}
// UnbindBindable calls UnbindBindable on the DefaultBus
func UnbindBindable(opt UnbindOption) {
DefaultBus.UnbindBindable(opt)
}
// Bind calls Bind on the DefaultBus
func Bind(fn Bindable, name string, callerID int) {
DefaultBus.Bind(fn, name, callerID)
}
// BindPriority calls BindPriority on the DefaultBus
func BindPriority(fn Bindable, opt BindingOption) {
DefaultBus.BindPriority(fn, opt)
}
// Flush calls Flush on the DefaultBus
func Flush() error {
return DefaultBus.Flush()
}
// FramesElapsed calls FramesElapsed on the DefaultBus
func FramesElapsed() int {
return DefaultBus.FramesElapsed()
}
// Reset calls Reset on the DefaultBus
func Reset() {
DefaultBus.Reset()
}
// ResolvePending calls ResolvePending on the DefaultBus
func ResolvePending() {
DefaultBus.ResolvePending()
}
// SetTick calls SetTick on the DefaultBus
func SetTick(framerate int) error {
return DefaultBus.SetTick(framerate)
}
// Stop calls Stop on the DefaultBus
func Stop() error {
return DefaultBus.Stop()
}
// Update calls Update on the DefaultBus
func Update() error {
return DefaultBus.Update()
}
// UpdateLoop calls UpdateLoop on the DefaultBus
func UpdateLoop(framerate int, updateCh chan bool) error {
return DefaultBus.UpdateLoop(framerate, updateCh)
}