sendtables

package
v1.0.0-beta.2 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2018 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package sendtables contains sendtable specific magic and should really be better documented (TODO).

Index

Constants

View Source
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()

Variables

This section is empty.

Functions

This section is empty.

Types

type Entity

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

Entity stores a entity in the game (e.g. players etc.) with its properties.

func (*Entity) ApplyUpdate

func (e *Entity) ApplyUpdate(reader *bit.BitReader)

ApplyUpdate reads an update to an Enitiy's properties and triggers registered PropertyUpdateHandlers if values changed.

Intended for internal use only.

func (*Entity) BindPosition

func (e *Entity) BindPosition(pos *r3.Vector)

BindPosition binds the entity's position to a pointer variable. The pointer is updated every time a position-relevant property is updated. This does NOT work for players as their position is calculated differently.

See also OnPositionUpdate()

func (*Entity) BindProperty

func (e *Entity) BindProperty(name string, variable interface{}, valueType propertyValueType)

BindProperty combines FindProperty() & Property.Bind() into one. Essentially binds a property's value to a pointer. See the docs of the two individual functions for more info.

func (*Entity) Destroy

func (e *Entity) Destroy()

Destroy triggers all via OnDestroy() registered functions.

Intended for internal use only.

func (*Entity) FindProperty

func (e *Entity) FindProperty(name string) *Property

FindProperty finds a property on the Entity by name.

Returns nil if the property wasn't found.

Panics if more than one property with the same name was found.

func (*Entity) ID

func (e *Entity) ID() int

ID returns the entity's ID.

func (*Entity) OnCreateFinished

func (e *Entity) OnCreateFinished(delegate func())

OnCreateFinished registers a function to be called once the entity is fully created - i.e. once all property updates have been sent out.

func (*Entity) OnDestroy

func (e *Entity) OnDestroy(delegate func())

OnDestroy registers a function to be called on the entity's destruction.

func (*Entity) OnPositionUpdate

func (e *Entity) OnPositionUpdate(h func(pos 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. This does NOT work for players as their position is calculated differently.

See also Position()

func (*Entity) Position

func (e *Entity) Position() r3.Vector

Position returns the entity's position in world coordinates.

func (*Entity) Properties

func (e *Entity) Properties() []Property

Properties returns all properties of the Entity.

func (*Entity) ServerClass

func (e *Entity) ServerClass() *ServerClass

ServerClass returns the entity's server-class.

type EntityCreatedHandler

type EntityCreatedHandler func(*Entity)

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

type Property

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

Property wraps a flattenedPropEntry and allows registering handlers that can be triggered on a update of the property.

func (*Property) Bind

func (pe *Property) Bind(variable interface{}, valueType propertyValueType)

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.

func (*Property) Name

func (pe *Property) Name() string

Name returns the property's name.

func (*Property) OnUpdate

func (pe *Property) OnUpdate(handler PropertyUpdateHandler)

OnUpdate registers a handler for updates of the Property's value.

func (*Property) Value

func (pe *Property) Value() PropertyValue

Value returns current value of the property.

type PropertyUpdateHandler

type PropertyUpdateHandler func(PropertyValue)

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

type PropertyValue

type PropertyValue struct {
	VectorVal r3.Vector
	IntVal    int
	ArrayVal  []PropertyValue
	StringVal string
	FloatVal  float32
}

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

type SendTableParser

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

SendTableParser provides functions for parsing send-tables.

func NewSendTableParser

func NewSendTableParser() *SendTableParser

NewSendTableParser returns a new SendTableParser.

Intended for internal use only.

func (*SendTableParser) ParsePacket

func (p *SendTableParser) ParsePacket(r *bit.BitReader)

ParsePacket parses a send-table packet.

func (*SendTableParser) ReadEnterPVS

func (p *SendTableParser) ReadEnterPVS(r *bit.BitReader, entityID int) *Entity

ReadEnterPVS reads an entity entering the PVS (potentially visible system).

Intended for internal use only.

func (*SendTableParser) ServerClasses

func (p *SendTableParser) ServerClasses() ServerClasses

ServerClasses returns the parsed server-classes.

func (*SendTableParser) SetInstanceBaseline

func (p *SendTableParser) SetInstanceBaseline(scID int, data []byte)

SetInstanceBaseline sets the raw instance-baseline data for a serverclass by ID.

Intended for internal use only.

type ServerClass

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

ServerClass stores meta information about Entity types (e.g. palyers, teams etc.).

func (*ServerClass) BaseClasses

func (sc *ServerClass) BaseClasses() []*ServerClass

BaseClasses returns the base-classes of this server-class.

func (*ServerClass) DataTableID

func (sc *ServerClass) DataTableID() int

DataTableID returns the data-table ID.

func (*ServerClass) DataTableName

func (sc *ServerClass) DataTableName() string

DataTableName returns the data-table name.

func (*ServerClass) ID

func (sc *ServerClass) ID() int

ID returns the server-class's ID.

func (*ServerClass) Name

func (sc *ServerClass) Name() string

Name returns the server-class's name.

func (*ServerClass) OnEntityCreated

func (sc *ServerClass) OnEntityCreated(handler EntityCreatedHandler)

OnEntityCreated registers a function to be called when a new entity is created from this ServerClass.

func (*ServerClass) PropertyEntries

func (sc *ServerClass) PropertyEntries() []string

PropertyEntries returns the names of all property-entries on this server-class.

func (*ServerClass) String

func (sc *ServerClass) String() string

type ServerClasses

type ServerClasses []*ServerClass

ServerClasses is a searchable list of ServerClasses.

func (ServerClasses) FindByName

func (sc ServerClasses) FindByName(name string) *ServerClass

FindByName finds and returns a server-class by it's name.

Returns nil if the server-class wasn't found.

Panics if more than one server-class with the same name was found.

Jump to

Keyboard shortcuts

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