lobby

package
v0.0.0-...-d86791c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BattleAnnouncementMessage

type BattleAnnouncementMessage struct {
	Battle game.Battle
}

Message sent from server to all clients when a battle has begun.

type BattleResultsMessage

type BattleResultsMessage struct {
	Battle game.Battle
}

Message sent from server to all clients when a battle has finished resolving.

type DiceRollMessage

type DiceRollMessage struct{}

Message sent from client when they roll the dice in a battle.

type ErrorMessage

type ErrorMessage struct {
	Error string
}

Message sent from server when an error occurs.

type GameStartedMessage

type GameStartedMessage struct {
	Board game.Board
}

Message sent from server when the game starts.

type GiveSupportMessage

type GiveSupportMessage struct {
	EmbattledRegion game.RegionName

	// Blank if none were supported.
	SupportedFaction game.PlayerFaction `json:",omitempty"`
}

Message sent from client when declaring who to support with their support order.

type Lobby

type Lobby struct {
	// contains filtered or unexported fields
}

A collection of players for a game.

func (*Lobby) AddPlayer

func (lobby *Lobby) AddPlayer(username string, socket *websocket.Conn) (*Player, error)

func (*Lobby) AwaitDiceRoll

func (lobby *Lobby) AwaitDiceRoll(ctx context.Context, from game.PlayerFaction) error

func (*Lobby) AwaitOrders

func (lobby *Lobby) AwaitOrders(
	ctx context.Context,
	from game.PlayerFaction,
) ([]game.Order, error)

func (*Lobby) AwaitSupport

func (lobby *Lobby) AwaitSupport(
	ctx context.Context,
	from game.PlayerFaction,
	embattled game.RegionName,
) (supported game.PlayerFaction, err error)

func (*Lobby) ClearMessages

func (lobby *Lobby) ClearMessages()

func (*Lobby) Close

func (lobby *Lobby) Close()

func (*Lobby) Logger

func (lobby *Lobby) Logger() log.Logger

func (*Lobby) RemovePlayer

func (lobby *Lobby) RemovePlayer(username Username)

func (*Lobby) SendBattleAnnouncement

func (lobby *Lobby) SendBattleAnnouncement(battle game.Battle)

func (*Lobby) SendBattleResults

func (lobby *Lobby) SendBattleResults(battle game.Battle)

func (*Lobby) SendError

func (lobby *Lobby) SendError(to game.PlayerFaction, err error)

func (*Lobby) SendGameStarted

func (lobby *Lobby) SendGameStarted(board game.Board)

func (*Lobby) SendOrderRequest

func (lobby *Lobby) SendOrderRequest(to game.PlayerFaction, season game.Season) (succeeded bool)

func (*Lobby) SendOrdersConfirmation

func (lobby *Lobby) SendOrdersConfirmation(factionThatSubmittedOrders game.PlayerFaction)

func (*Lobby) SendOrdersReceived

func (lobby *Lobby) SendOrdersReceived(orders map[game.PlayerFaction][]game.Order)

func (*Lobby) SendPlayerStatusMessage

func (lobby *Lobby) SendPlayerStatusMessage(player *Player)

func (*Lobby) SendWinner

func (lobby *Lobby) SendWinner(winner game.PlayerFaction)

type LobbyInfo

type LobbyInfo struct {
	Name        string
	PlayerCount int
	BoardInfo   game.BoardInfo
}

type LobbyJoinedMessage

type LobbyJoinedMessage struct {
	SelectableFactions []game.PlayerFaction
	PlayerStatuses     []PlayerStatusMessage
}

Message sent to a player when they join a lobby, to inform them about the game and other players.

type LobbyRegistry

type LobbyRegistry struct {
	// contains filtered or unexported fields
}

func NewLobbyRegistry

func NewLobbyRegistry() *LobbyRegistry

func (*LobbyRegistry) CreateLobby

func (registry *LobbyRegistry) CreateLobby(
	lobbyName string,
	boardID string,
	onlyLobbyOnServer bool,
	customPlayerFactions []game.PlayerFaction,
) error

func (*LobbyRegistry) GetLobby

func (registry *LobbyRegistry) GetLobby(name string) (lobby *Lobby, lobbyFound bool)

func (*LobbyRegistry) ListLobbies

func (registry *LobbyRegistry) ListLobbies() []LobbyInfo

type Message

type Message struct {
	Tag  MessageTag
	Data any
}

type MessageTag

type MessageTag uint8
const (
	MessageTagError MessageTag = iota + 1
	MessageTagLobbyJoined
	MessageTagPlayerStatus
	MessageTagSelectFaction
	MessageTagStartGame
	MessageTagGameStarted
	MessageTagOrderRequest
	MessageTagOrdersReceived
	MessageTagOrdersConfirmation
	MessageTagBattleAnnouncement
	MessageTagBattleResults
	MessageTagWinner
	MessageTagSubmitOrders
	MessageTagDiceRoll
	MessageTagGiveSupport
)

func (MessageTag) String

func (tag MessageTag) String() string

type OrderRequestMessage

type OrderRequestMessage struct {
	Season game.Season
}

Message sent from server to client to signal that client should submit orders.

type OrdersConfirmationMessage

type OrdersConfirmationMessage struct {
	FactionThatSubmittedOrders game.PlayerFaction
}

Message sent from server to all clients when valid orders are received from a player. Used to show who the server is waiting for.

type OrdersReceivedMessage

type OrdersReceivedMessage struct {
	OrdersByFaction map[game.PlayerFaction][]game.Order
}

Message sent from server to all clients when valid orders are received from all players.

type Player

type Player struct {
	// contains filtered or unexported fields
}

A player connected to a game lobby.

func (*Player) SendError

func (player *Player) SendError(err error)

func (*Player) SendLobbyJoinedMessage

func (player *Player) SendLobbyJoinedMessage(lobby *Lobby)

type PlayerStatusMessage

type PlayerStatusMessage struct {
	Username        Username
	SelectedFaction game.PlayerFaction `json:",omitempty"`
}

Message sent from server to all clients when a player's status changes.

type ReceivedMessage

type ReceivedMessage struct {
	Tag          MessageTag
	Data         any
	ReceivedFrom game.PlayerFaction
}

type SelectFactionMessage

type SelectFactionMessage struct {
	Faction game.PlayerFaction
}

Message sent from client when they want to select a faction to play for the game.

type StartGameMessage

type StartGameMessage struct{}

Message sent from a player when the lobby wants to start the game. Requires that all players have selected a faction.

type SubmitOrdersMessage

type SubmitOrdersMessage struct {
	Orders []game.Order
}

Message sent from client when submitting orders.

type Username

type Username string

type WinnerMessage

type WinnerMessage struct {
	WinningFaction game.PlayerFaction
}

Message sent from server to all clients when the game is won.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL