game

package
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2024 License: MIT, BSD-2-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NoTeam = &Team{Name: "none"}

Functions

func NewCasualClock

func NewCasualClock(s Server, m HasTimers) *casualClock

func NewCompetitiveClock

func NewCompetitiveClock(s Server, m HasTimers) *competitiveClock

func NewEndlessClock

func NewEndlessClock(s Server, m HasTimers) *endlessClock

Types

type BySizeAndScore

type BySizeAndScore []*Team

sorts teams ascending by size, then score

func (BySizeAndScore) Len

func (teams BySizeAndScore) Len() int

func (BySizeAndScore) Less

func (teams BySizeAndScore) Less(i, j int) bool

func (BySizeAndScore) Swap

func (teams BySizeAndScore) Swap(i, j int)

type CTF

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

func NewCTF

func NewCTF(s Server, keepTeams bool) *CTF

func (*CTF) CleanUp

func (m *CTF) CleanUp()

func (*CTF) HandlePacket

func (m *CTF) HandlePacket(p *Player, message P.Message) bool

func (*CTF) ID

func (*CTF) ID() gamemode.ID

func (*CTF) NeedsMapInfo

func (m *CTF) NeedsMapInfo() bool

func (*CTF) Pause

func (m *CTF) Pause()

func (CTF) PickupsInitPacket

func (m CTF) PickupsInitPacket() P.Message

func (*CTF) Resume

func (m *CTF) Resume()

func (*CTF) Spawn

func (*CTF) Spawn(ps *PlayerState)

type CTFMode

type CTFMode = FlagMode

type CaptureMode

type CaptureMode interface {
	TeamMode
	Bases(*Team) []int32
}

type Clock

type Clock interface {
	Start()
	Pause(*Player)
	Paused() bool
	Resume(*Player)
	Stop()
	Ended() bool
	TimeLeft() time.Duration
	SetTimeLeft(time.Duration)
	Leave(*Player)
	CleanUp()
}

type Competitive

type Competitive interface {
	Clock
	Spawned(*Player)
}

type CoopEdit

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

func NewCoopEdit

func NewCoopEdit(s Server) *CoopEdit

func (*CoopEdit) CanSpawn

func (*CoopEdit) CanSpawn(*Player) bool

func (CoopEdit) CleanUp

func (m CoopEdit) CleanUp()

func (CoopEdit) HandleFrag

func (m CoopEdit) HandleFrag(actor, victim *Player)

func (*CoopEdit) HandlePacket

func (m *CoopEdit) HandlePacket(p *Player, message P.Message) bool

func (*CoopEdit) ID

func (*CoopEdit) ID() gamemode.ID

func (CoopEdit) Leave

func (m CoopEdit) Leave(*Player)

func (CoopEdit) NeedsMapInfo

func (m CoopEdit) NeedsMapInfo() bool

func (CoopEdit) Pause

func (m CoopEdit) Pause()

func (CoopEdit) PickupsInitPacket

func (m CoopEdit) PickupsInitPacket() P.Message

func (CoopEdit) Resume

func (m CoopEdit) Resume()

func (*CoopEdit) Spawn

func (*CoopEdit) Spawn(ps *PlayerState)

type Effic

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

func NewEffic

func NewEffic(s Server) *Effic

func (*Effic) CleanUp

func (*Effic) CleanUp()

func (*Effic) ID

func (*Effic) ID() gamemode.ID

func (*Effic) Leave

func (*Effic) Leave(*Player)

func (*Effic) NeedsMapInfo

func (*Effic) NeedsMapInfo() bool

func (*Effic) Pause

func (*Effic) Pause()

func (*Effic) Resume

func (*Effic) Resume()

func (*Effic) Spawn

func (*Effic) Spawn(ps *PlayerState)

type EfficCTF

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

func NewEfficCTF

func NewEfficCTF(s Server, keepTeams bool) *EfficCTF

func (*EfficCTF) ID

func (*EfficCTF) ID() gamemode.ID

func (*EfficCTF) Spawn

func (*EfficCTF) Spawn(ps *PlayerState)

type EfficTeam

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

func NewEfficTeam

func NewEfficTeam(s Server, keepTeams bool) *EfficTeam

func (*EfficTeam) CleanUp

func (*EfficTeam) CleanUp()

func (*EfficTeam) ID

func (*EfficTeam) ID() gamemode.ID

func (*EfficTeam) Leave

func (*EfficTeam) Leave(*Player)

func (*EfficTeam) NeedsMapInfo

func (*EfficTeam) NeedsMapInfo() bool

func (*EfficTeam) Pause

func (*EfficTeam) Pause()

func (*EfficTeam) Resume

func (*EfficTeam) Resume()

func (*EfficTeam) Spawn

func (*EfficTeam) Spawn(ps *PlayerState)

type FFA

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

func NewFFA

func NewFFA(s Server) *FFA

func (FFA) CleanUp

func (m FFA) CleanUp()

func (FFA) HandlePacket

func (m FFA) HandlePacket(p *Player, message P.Message) bool

func (*FFA) ID

func (*FFA) ID() gamemode.ID

func (FFA) NeedsMapInfo

func (m FFA) NeedsMapInfo() bool

func (FFA) Pause

func (m FFA) Pause()

func (FFA) PickupsInitPacket

func (m FFA) PickupsInitPacket() P.Message

func (FFA) Resume

func (m FFA) Resume()

func (*FFA) Spawn

func (*FFA) Spawn(ps *PlayerState)

type FlagMode

type FlagMode interface {
	NeedsMapInfo() bool
	FlagsInitPacket() protocol.Message
}

type HandlesPackets

type HandlesPackets interface {
	HandlePacket(*Player, P.Message) bool
}

type HasTimers

type HasTimers interface {
	Pause()
	Resume()
	Leave(*Player)
	CleanUp()
}

type Insta

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

func NewInsta

func NewInsta(s Server) *Insta

func (*Insta) CleanUp

func (*Insta) CleanUp()

func (*Insta) ID

func (*Insta) ID() gamemode.ID

func (*Insta) Leave

func (*Insta) Leave(*Player)

func (*Insta) NeedsMapInfo

func (*Insta) NeedsMapInfo() bool

func (*Insta) Pause

func (*Insta) Pause()

func (*Insta) Resume

func (*Insta) Resume()

func (*Insta) Spawn

func (*Insta) Spawn(ps *PlayerState)

type InstaCTF

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

func NewInstaCTF

func NewInstaCTF(s Server, keepTeams bool) *InstaCTF

func (*InstaCTF) ID

func (*InstaCTF) ID() gamemode.ID

func (*InstaCTF) Spawn

func (*InstaCTF) Spawn(ps *PlayerState)

type InstaTeam

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

func NewInstaTeam

func NewInstaTeam(s Server, keepTeams bool) *InstaTeam

func (*InstaTeam) CleanUp

func (*InstaTeam) CleanUp()

func (*InstaTeam) ID

func (*InstaTeam) ID() gamemode.ID

func (*InstaTeam) Leave

func (*InstaTeam) Leave(*Player)

func (*InstaTeam) NeedsMapInfo

func (*InstaTeam) NeedsMapInfo() bool

func (*InstaTeam) Pause

func (*InstaTeam) Pause()

func (*InstaTeam) Resume

func (*InstaTeam) Resume()

func (*InstaTeam) Spawn

func (*InstaTeam) Spawn(ps *PlayerState)

type Mode

type Mode interface {
	HasTimers
	ID() gamemode.ID
	NeedsMapInfo() bool
	Leave(*Player)
	CanSpawn(*Player) bool
	Spawn(*PlayerState) // sets armour, ammo, and health
	HandleFrag(fragger, victim *Player)
}

type PickupMode

type PickupMode interface {
	HandlesPackets
	NeedsMapInfo() bool
	PickupsInitPacket() P.Message
}

type Player

type Player struct {
	CN       uint32
	Name     string
	Team     *Team
	Model    int32
	Position *geom.Vector
	PlayerState
}

func NewPlayer

func NewPlayer(cn uint32) Player

func (*Player) ApplyDamage

func (p *Player) ApplyDamage(attacker *Player, damage int32, weapon weapon.ID, direction *geom.Vector)

func (*Player) Reset

func (p *Player) Reset()

type PlayerState

type PlayerState struct {
	State playerstate.ID

	// The user's state before entering edit mode
	EditState playerstate.ID

	// fields that reset at spawn
	LastSpawnAttempt time.Time
	QuadTimer        *timer.Timer
	LastShot         time.Time
	GunReloadEnd     time.Time
	// reset at spawn to value depending on mode
	Health         int32
	Armour         int32
	ArmourType     armour.ID
	SelectedWeapon weapon.Weapon
	Ammo           map[weapon.ID]int32 // weapon → ammo

	// reset at map change
	LifeSequence    int32
	LastDeath       time.Time
	MaxHealth       int32
	Frags           int32
	Deaths          int32
	Teamkills       int32
	DamagePotential int32
	Damage          int32
	Flags           int32
}

func NewPlayerState

func NewPlayerState() PlayerState

func (*PlayerState) CanPickup

func (ps *PlayerState) CanPickup(p *timedPickup) bool

func (*PlayerState) Die

func (ps *PlayerState) Die()

func (*PlayerState) Pickup

func (ps *PlayerState) Pickup(p *timedPickup)

func (*PlayerState) Reset

func (ps *PlayerState) Reset()

Resets a client's game state.

func (*PlayerState) SelectWeapon

func (ps *PlayerState) SelectWeapon(id weapon.ID) (weapon.Weapon, bool)

func (*PlayerState) Spawn

func (ps *PlayerState) Spawn()

func (*PlayerState) ToWire

func (ps *PlayerState) ToWire() protocol.EntityState

type Server

type Server interface {
	GameDuration() time.Duration
	Broadcast(messages ...protocol.Message)
	Message(message string)
	Intermission()
	ForEachPlayer(func(*Player))
	UniqueName(*Player) string
	NumberOfPlayers() int
}

type Tactics

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

func NewTactics

func NewTactics(s Server) *Tactics

func (*Tactics) CleanUp

func (*Tactics) CleanUp()

func (*Tactics) ID

func (*Tactics) ID() gamemode.ID

func (*Tactics) Leave

func (*Tactics) Leave(*Player)

func (*Tactics) NeedsMapInfo

func (*Tactics) NeedsMapInfo() bool

func (*Tactics) Pause

func (*Tactics) Pause()

func (*Tactics) Resume

func (*Tactics) Resume()

func (*Tactics) Spawn

func (*Tactics) Spawn(ps *PlayerState)

type TacticsTeam

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

func NewTacticsTeam

func NewTacticsTeam(s Server, keepTeams bool) *TacticsTeam

func (*TacticsTeam) CleanUp

func (*TacticsTeam) CleanUp()

func (*TacticsTeam) ID

func (*TacticsTeam) ID() gamemode.ID

func (*TacticsTeam) Leave

func (*TacticsTeam) Leave(*Player)

func (*TacticsTeam) NeedsMapInfo

func (*TacticsTeam) NeedsMapInfo() bool

func (*TacticsTeam) Pause

func (*TacticsTeam) Pause()

func (*TacticsTeam) Resume

func (*TacticsTeam) Resume()

func (*TacticsTeam) Spawn

func (*TacticsTeam) Spawn(ps *PlayerState)

type Team

type Team struct {
	Name    string
	Frags   int32
	Score   int32
	Players map[*Player]struct{}
}

func NewTeam

func NewTeam(name string) *Team

func (*Team) Add

func (t *Team) Add(p *Player)

func (*Team) Remove

func (t *Team) Remove(p *Player)

type TeamMode

type TeamMode interface {
	Teams() map[string]*Team
	ForEachTeam(func(*Team))
	Join(*Player)
	ChangeTeam(*Player, string, bool)
	Leave(*Player)
	HandleFrag(fragger, victim *Player)
}

type Teamplay

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

func NewTeamplay

func NewTeamplay(s Server, keepTeams bool) *Teamplay

func (Teamplay) CleanUp

func (m Teamplay) CleanUp()

func (Teamplay) HandlePacket

func (m Teamplay) HandlePacket(p *Player, message P.Message) bool

func (*Teamplay) ID

func (*Teamplay) ID() gamemode.ID

func (Teamplay) NeedsMapInfo

func (m Teamplay) NeedsMapInfo() bool

func (Teamplay) Pause

func (m Teamplay) Pause()

func (Teamplay) PickupsInitPacket

func (m Teamplay) PickupsInitPacket() P.Message

func (Teamplay) Resume

func (m Teamplay) Resume()

func (*Teamplay) Spawn

func (*Teamplay) Spawn(ps *PlayerState)

Jump to

Keyboard shortcuts

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