Documentation
¶
Overview ¶
Package cg implements common client logic for connecting with a CodeGame server and handling events.
Index ¶
- Constants
- Variables
- func IsStandardEvent(eventName EventName) bool
- type CallbackId
- type ConnectEventData
- type ConnectedEventData
- type ErrorEventData
- type Event
- type EventName
- type EventWrapper
- type InfoEventData
- type JoinEventData
- type JoinedEventData
- type LeaveEventData
- type LeftEventData
- type NewPlayerEventData
- type OnEventCallback
- type Session
- type Socket
- func (s *Socket) Close() error
- func (s *Socket) Connect(gameId, playerId, playerSecret string) error
- func (s *Socket) Create(public bool) (string, error)
- func (s *Socket) Join(gameId, username string) error
- func (s *Socket) Leave() error
- func (s *Socket) NextEvent() (EventWrapper, bool, error)
- func (s *Socket) On(event EventName, callback OnEventCallback) CallbackId
- func (s *Socket) Once(event EventName, callback OnEventCallback) CallbackId
- func (s *Socket) RemoveCallback(id CallbackId)
- func (s *Socket) ResolveUsername(playerId string) string
- func (s *Socket) RestoreSession(username string) error
- func (s *Socket) RunEventLoop() error
- func (s *Socket) Send(eventName EventName, eventData any) error
- func (s *Socket) Session() Session
- func (s *Socket) Spectate(gameId string) error
- type SpectateEventData
Constants ¶
const CGVersion = "0.6"
Variables ¶
Functions ¶
func IsStandardEvent ¶
IsStandardEvent returns true if eventName is a standard event.
Types ¶
type CallbackId ¶
type ConnectEventData ¶ added in v0.8.0
type ConnectedEventData ¶ added in v0.8.0
type ConnectedEventData struct {
// The username of the player.
Username string `json:"username"`
}
type ErrorEventData ¶ added in v0.8.0
type ErrorEventData struct {
// The error message.
Message string `json:"message"`
}
type Event ¶
type Event struct {
Name EventName `json:"name"`
Data json.RawMessage `json:"data"`
}
func (*Event) UnmarshalData ¶
UnmarshalData decodes the event data into the struct pointed to by targetObjPtr.
type EventName ¶
type EventName string
const ConnectEvent EventName = "cg_connect"
The `cg_connect` event is used to associate a client with an existing player. This event is used after making changes to ones program and reconnecting to the game or when adding another client like a viewer in the webbrowser.
const ConnectedEvent EventName = "cg_connected"
The `cg_connected` event is sent to the socket that has connected.
const ErrorEvent EventName = "cg_error"
The error event is sent to the client that triggered the error. The error event should only be used for technical errors such as event deserialisation errors. If something in the game doesn’t work intentionally or a very specific error that requires handeling by the client occurs, a custom event should be used.
const InfoEvent EventName = "cg_info"
The `cg_info` event is sent to every player that joins, connects to or spectates a game and catches them up on things that may have happened before they were connected.
const JoinEvent EventName = "cg_join"
Join an existing game by ID.
const JoinedEvent EventName = "cg_joined"
The `cg_joined` event is used to send a secret to the player that just joined so that they can reconnect and add other clients. It also confirms that the game has been joined successfully.
const LeaveEvent EventName = "cg_leave"
The `cg_leave` event is used to leave a game which is the preferred way to exit a game in comparison to just disconnecting and never reconnecting. It is not required to send this event due to how hard it is to detect if the user has disconnected for good or is just re-writing their program.
const LeftEvent EventName = "cg_left"
The `cg_left` event is sent to everyone in the game when someone leaves it.
const NewPlayerEvent EventName = "cg_new_player"
The `new_player` event is sent to everyone in the game when someone joins it.
const SpectateEvent EventName = "cg_spectate"
The `cg_spectate` event is used to spectate a game. Spectators receive all public game events but cannot send any.
type EventWrapper ¶ added in v0.4.0
A wrapper struct around and event and its origin.
type InfoEventData ¶ added in v0.8.0
type JoinEventData ¶ added in v0.8.0
type JoinedEventData ¶ added in v0.8.0
type JoinedEventData struct {
// The player secret.
Secret string `json:"secret"`
}
type LeaveEventData ¶ added in v0.8.0
type LeaveEventData struct {
}
type LeftEventData ¶ added in v0.8.0
type LeftEventData struct {
}
type NewPlayerEventData ¶ added in v0.8.0
type NewPlayerEventData struct {
// The username of the newly joined player.
Username string `json:"username"`
}
type OnEventCallback ¶
type Socket ¶
type Socket struct {
// contains filtered or unexported fields
}
Socket represents the connection with a CodeGame server and handles events.
func NewSocket ¶
NewSocket opens a new websocket connection with the CodeGame server listening at the URL (e.g. my-game.io) and returns a new Connection struct. You can omit the protocol. NewSocket will determine the best protocol to use.
func (*Socket) Create ¶
Create creates a new game on the server and returns the id of the created game.
func (*Socket) Join ¶
Join sends a join_game event to the server and returns a Session object once it receives a joined_game and a player_secret event.
func (*Socket) Leave ¶
Leave sends a leave_game event to the server and clears all non-standard event listeners. It also deletes the current session.
func (*Socket) NextEvent ¶ added in v0.4.0
func (s *Socket) NextEvent() (EventWrapper, bool, error)
NextEvent returns the next event in the queue or ok = false if there is none. Registered event listeners will be triggered.
func (*Socket) On ¶
func (s *Socket) On(event EventName, callback OnEventCallback) CallbackId
On registers a callback that is triggered when event is received.
func (*Socket) Once ¶ added in v0.7.0
func (s *Socket) Once(event EventName, callback OnEventCallback) CallbackId
Once registers a callback that is triggered only the first time event is received.
func (*Socket) RemoveCallback ¶
func (s *Socket) RemoveCallback(id CallbackId)
RemoveCallback deletes the callback with the specified id.
func (*Socket) ResolveUsername ¶ added in v0.5.0
ResolveUsername returns the username associated with playerId.
func (*Socket) RestoreSession ¶ added in v0.5.0
RestoreSession tries to restore the session and use it to reconnect to the game.
func (*Socket) RunEventLoop ¶ added in v0.4.0
RunEventLoop starts listening for events and triggers registered event listeners. Returns on close or error.
type SpectateEventData ¶ added in v0.8.0
type SpectateEventData struct {
// The ID of the game to spectate.
GameId string `json:"game_id"`
}