sendtables

package
v5.0.2 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package sendtables contains code related to decoding sendtables. Mostly used internally but can be interesting for direct access to server-classes and entities.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Entity

type Entity interface {
	// ServerClass returns the entity's server-class.
	ServerClass() ServerClass
	// ID returns the entity's ID.
	ID() int
	// SerialNum returns the entity's serial number.
	SerialNum() int
	// Properties returns all properties of the entity.
	Properties() (out []Property)
	// Property finds a property on the entity by name.
	//
	// Returns nil if the property wasn't found.
	Property(name string) Property
	// BindProperty combines Property() & Property.Bind() into one.
	// Essentially binds a property's value to a pointer.
	// See the docs of the two individual functions for more info.
	BindProperty(name string, variable any, valueType PropertyValueType)
	// PropertyValue finds a property on the entity by name and returns its value.
	//
	// Returns false as second value if the property was not found.
	PropertyValue(name string) (PropertyValue, bool)
	// PropertyValueMust finds a property on the entity by name and returns its value.
	//
	// Panics with nil pointer dereference error if the property was not found.
	PropertyValueMust(name string) PropertyValue
	// Position returns the entity's position in world coordinates.
	Position() r3.Vector
	// OnPositionUpdate registers a handler for the entity's position update.
	// The handler is called with the new position every time a position-relevant property is updated.
	//
	// See also Position()
	OnPositionUpdate(h func(pos r3.Vector))
	// OnDestroy registers a function to be called on the entity's destruction.
	OnDestroy(delegate func())
	// Destroy triggers all via OnDestroy() registered functions.
	//
	// Intended for internal use only.
	Destroy()
	// OnCreateFinished registers a function to be called once the entity is fully created -
	// i.e. once all property updates have been sent out.
	OnCreateFinished(delegate func())
}

Entity is an auto-generated interface for entity, intended to be used when mockability is needed. entity stores a entity in the game (e.g. players etc.) with its properties.

type EntityCreatedHandler

type EntityCreatedHandler func(Entity)

EntityCreatedHandler is the interface for handlers that are interested in EntityCreatedEvents.

type EntityHandler

type EntityHandler func(Entity, EntityOp) error

EntityHandler is a function that receives Entity updates

type EntityOp

type EntityOp int

EntityOp is a bitmask representing the type of operation performed on an Entity

const (
	EntityOpNone           EntityOp = 0x00
	EntityOpCreated        EntityOp = 0x01
	EntityOpUpdated        EntityOp = 0x02
	EntityOpDeleted        EntityOp = 0x04
	EntityOpEntered        EntityOp = 0x08
	EntityOpLeft           EntityOp = 0x10
	EntityOpCreatedEntered EntityOp = EntityOpCreated | EntityOpEntered
	EntityOpUpdatedEntered EntityOp = EntityOpUpdated | EntityOpEntered
	EntityOpDeletedLeft    EntityOp = EntityOpDeleted | EntityOpLeft
)

func (EntityOp) Flag

func (o EntityOp) Flag(p EntityOp) bool

Flag determines whether an EntityOp includes another. This is primarily offered to prevent bit flag errors in downstream clients.

func (EntityOp) String

func (o EntityOp) String() string

String returns a human identifiable string for the EntityOp

type Property

type Property interface {
	// Name returns the property's name.
	Name() string
	// Value returns the current value of the property.
	Value() PropertyValue
	// OnUpdate registers a handler for updates of the property's value.
	//
	// The handler will be called with the current value upon registration.
	OnUpdate(handler PropertyUpdateHandler)
	/*
	   Bind binds a property's value to a pointer.

	   Example:

	   	var i int
	   	property.Bind(&i, ValTypeInt)

	   This will bind the property's value to i so every time it's updated i is updated as well.

	   The valueType indicates which field of the PropertyValue to use for the binding.
	*/
	Bind(variable any, valueType PropertyValueType)
}

Property is an auto-generated interface for property, intended to be used when mockability is needed. property wraps a flattenedPropEntry and allows registering handlers that can be triggered on a update of the property.

type PropertyEntry

type PropertyEntry struct {
	Name    string
	IsArray bool
}

type PropertyUpdateHandler

type PropertyUpdateHandler func(PropertyValue)

PropertyUpdateHandler is the interface for handlers that are interested in property changes.

type PropertyValue

type PropertyValue struct {
	Any any
}

PropertyValue stores parsed & decoded send-table values. For instance player health, location etc.

func (PropertyValue) Array

func (v PropertyValue) Array() []any

func (PropertyValue) BoolVal

func (v PropertyValue) BoolVal() bool

BoolVal returns true if IntVal > 0.

func (PropertyValue) Float

func (v PropertyValue) Float() float32

func (PropertyValue) Handle

func (v PropertyValue) Handle() uint64

func (PropertyValue) Int

func (v PropertyValue) Int() int

func (PropertyValue) Int64

func (v PropertyValue) Int64() int64

func (PropertyValue) R3Vec

func (v PropertyValue) R3Vec() r3.Vector

func (PropertyValue) R3VecOrNil

func (v PropertyValue) R3VecOrNil() *r3.Vector

func (PropertyValue) Str

func (v PropertyValue) Str() string

func (PropertyValue) String

func (v PropertyValue) String() string

func (PropertyValue) UInt32

func (v PropertyValue) UInt32() uint32

func (PropertyValue) UInt64

func (v PropertyValue) UInt64() uint64

type PropertyValueType

type PropertyValueType int

PropertyValueType specifies the type of PropertyValue

const (
	ValTypeInt PropertyValueType = iota
	ValTypeFloat32
	ValTypeFloat64 // Like ValTypeFloat32 but with additional cast to float64
	ValTypeString
	ValTypeVector
	ValTypeArray
	ValTypeBoolInt // Int that is treated as bool (1 -> true, != 1 -> false)
)

Possible types of property values. See Property.Bind()

type ServerClass

type ServerClass interface {
	// ID returns the server-class's ID.
	ID() int
	// Name returns the server-class's name.
	Name() string
	// PropertyEntries returns the names of all property-entries on this server-class.
	PropertyEntries() []string
	// OnEntityCreated registers a function to be called when a new entity is created from this serverClass.
	OnEntityCreated(handler EntityCreatedHandler)
	String() string
}

ServerClass is an auto-generated interface for property, intended to be used when mockability is needed. serverClass stores meta information about Entity types (e.g. palyers, teams etc.).

type ServerClasses

type ServerClasses interface {
	All() []ServerClass
	FindByName(name string) ServerClass
}

ServerClasses is a searchable list of ServerClasses.

Directories

Path Synopsis
Package fake provides basic mocks for Entity and Property.
Package fake provides basic mocks for Entity and Property.

Jump to

Keyboard shortcuts

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