price-is-wrong/src/state/fsm/lobby/internal/event.go

30 lines
504 B
Go

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