@@ -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.
49158func (g *Game) RemoveCallback(id cg.CallbackId) {
50159 g.socket.RemoveCallback(id)
0 commit comments