game

package
v0.0.0-...-727d1a2 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2023 License: BSD-2-Clause Imports: 15 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

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, packetType nmc.ID, pkt *protocol.Packet) 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() []interface{}

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 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, packetType nmc.ID, pkt *protocol.Packet) 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() []interface{}

func (FFA) Resume

func (m FFA) Resume()

func (*FFA) Spawn

func (*FFA) Spawn(ps *PlayerState)

type FlagMode

type FlagMode interface {
	NeedsMapInfo() bool
	FlagsInitPacket() []interface{}
}

type HandlesPackets

type HandlesPackets interface {
	HandlePacket(*Player, nmc.ID, *protocol.Packet) 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() []interface{}
}

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

	// 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           int
	Deaths          int
	Teamkills       int
	DamagePotential int32
	Damage          int32
	Flags           int
}

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() []byte

type Server

type Server interface {
	GameDuration() time.Duration
	Broadcast(nmc.ID, ...interface{})
	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   int
	Score   int
	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, packetType nmc.ID, pkt *protocol.Packet) 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() []interface{}

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