Skip to content

Commit e971cbe

Browse files
committed
Add On… functions for some standard events
1 parent cb44ea0 commit e971cbe

File tree

2 files changed

+111
-2
lines changed

2 files changed

+111
-2
lines changed

new/client/templates/wrappers/events.go.tmpl

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,115 @@ func (g *Game) Send{{.PascalName}}Event(data {{.PascalName}}EventData) error {
4545
}
4646
{{end}}
4747

48+
49+
// OnCGNewPlayerEvent triggers the callback every time the `cg_new_player` event is received.
50+
func (g *Game) OnCGNewPlayerEvent(callback func(origin Player, data cg.NewPlayerEventData)) cg.CallbackId {
51+
return g.socket.On(cg.NewPlayerEvent, func(origin string, event cg.Event) {
52+
var data cg.NewPlayerEventData
53+
err := event.UnmarshalData(&data)
54+
if err == nil {
55+
username := g.socket.ResolveUsername(origin)
56+
if origin == "server" {
57+
username = "Server"
58+
}
59+
callback(Player{
60+
Id: origin,
61+
Username: username,
62+
}, data)
63+
}
64+
})
65+
}
66+
67+
// OnCGNewPlayerEventOnce triggers the callback the next time the `cg_new_player` event is received.
68+
func (g *Game) OnCGNewPlayerEventOnce(callback func(origin Player, data cg.NewPlayerEventData)) cg.CallbackId {
69+
return g.socket.Once(cg.NewPlayerEvent, func(origin string, event cg.Event) {
70+
var data cg.NewPlayerEventData
71+
err := event.UnmarshalData(&data)
72+
if err == nil {
73+
username := g.socket.ResolveUsername(origin)
74+
if origin == "server" {
75+
username = "Server"
76+
}
77+
callback(Player{
78+
Id: origin,
79+
Username: username,
80+
}, data)
81+
}
82+
})
83+
}
84+
85+
// OnCGLeftEvent triggers the callback every time the `cg_left` event is received.
86+
func (g *Game) OnCGLeftEvent(callback func(origin Player, data cg.LeftEventData)) cg.CallbackId {
87+
return g.socket.On(cg.LeftEvent, func(origin string, event cg.Event) {
88+
var data cg.LeftEventData
89+
err := event.UnmarshalData(&data)
90+
if err == nil {
91+
username := g.socket.ResolveUsername(origin)
92+
if origin == "server" {
93+
username = "Server"
94+
}
95+
callback(Player{
96+
Id: origin,
97+
Username: username,
98+
}, data)
99+
}
100+
})
101+
}
102+
103+
// OnCGLeftEventOnce triggers the callback the next time the `cg_left` event is received.
104+
func (g *Game) OnCGLeftEventOnce(callback func(origin Player, data cg.LeftEventData)) cg.CallbackId {
105+
return g.socket.Once(cg.LeftEvent, func(origin string, event cg.Event) {
106+
var data cg.LeftEventData
107+
err := event.UnmarshalData(&data)
108+
if err == nil {
109+
username := g.socket.ResolveUsername(origin)
110+
if origin == "server" {
111+
username = "Server"
112+
}
113+
callback(Player{
114+
Id: origin,
115+
Username: username,
116+
}, data)
117+
}
118+
})
119+
}
120+
121+
// OnCGErrorEvent triggers the callback every time the `cg_error` event is received.
122+
func (g *Game) OnCGErrorEvent(callback func(origin Player, data cg.ErrorEventData)) cg.CallbackId {
123+
return g.socket.On(cg.ErrorEvent, func(origin string, event cg.Event) {
124+
var data cg.ErrorEventData
125+
err := event.UnmarshalData(&data)
126+
if err == nil {
127+
username := g.socket.ResolveUsername(origin)
128+
if origin == "server" {
129+
username = "Server"
130+
}
131+
callback(Player{
132+
Id: origin,
133+
Username: username,
134+
}, data)
135+
}
136+
})
137+
}
138+
139+
// OnCGErrorEventOnce triggers the callback the next time the `cg_error` event is received.
140+
func (g *Game) OnCGErrorEventOnce(callback func(origin Player, data cg.ErrorEventData)) cg.CallbackId {
141+
return g.socket.Once(cg.ErrorEvent, func(origin string, event cg.Event) {
142+
var data cg.ErrorEventData
143+
err := event.UnmarshalData(&data)
144+
if err == nil {
145+
username := g.socket.ResolveUsername(origin)
146+
if origin == "server" {
147+
username = "Server"
148+
}
149+
callback(Player{
150+
Id: origin,
151+
Username: username,
152+
}, data)
153+
}
154+
})
155+
}
156+
48157
// RemoveCallback removes the callback with the specified id.
49158
func (g *Game) RemoveCallback(id cg.CallbackId) {
50159
g.socket.RemoveCallback(id)

versions.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"server": {
3-
"0.7": "0.2"
3+
"0.7": "0.3"
44
},
55
"client": {
6-
"0.8": "0.2"
6+
"0.8": "0.3"
77
}
88
}

0 commit comments

Comments
 (0)