34 lines
561 B
Go
34 lines
561 B
Go
package lobby
|
|
|
|
import (
|
|
"fmt"
|
|
"gitea/price-is-wrong/pkg/lib/event"
|
|
)
|
|
|
|
type Event interface{}
|
|
|
|
type PlayerJoin struct {
|
|
ID int
|
|
}
|
|
|
|
type PlayerLeave struct {
|
|
ID int
|
|
}
|
|
|
|
type Close struct {
|
|
}
|
|
|
|
func ParseEvent(b []byte) (Event, error) {
|
|
typesToPointers := map[string]any{
|
|
"*lobby.PlayerJoin": &PlayerJoin{},
|
|
"*lobby.PlayerLeave": &PlayerLeave{},
|
|
"*lobby.Close": &Close{},
|
|
}
|
|
t, err := event.Parse(b, typesToPointers)
|
|
return typesToPointers[t], err
|
|
}
|
|
|
|
func MarshalEvent(e Event) ([]byte, error) {
|
|
return event.Serialize(fmt.Sprintf("%T", e), e)
|
|
}
|