Documentation ¶
Overview ¶
Package sendtables contains sendtable specific magic and should really be better documented (TODO).
Index ¶
- Constants
- type Entity
- func (e *Entity) ApplyBaseline(baseline map[int]PropValue)
- func (e *Entity) ApplyUpdate(reader *bit.BitReader)
- func (e *Entity) BindProperty(name string, variable interface{}, valueType propertyValueType)
- func (e *Entity) Destroy()
- func (e *Entity) FindProperty(name string) *PropertyEntry
- func (e *Entity) InitializeBaseline(r *bit.BitReader) map[int]PropValue
- func (e *Entity) OnCreateFinished(delegate func())
- func (e *Entity) OnDestroy(delegate func())
- func (e *Entity) Position() r3.Vector
- func (e *Entity) Props() []PropertyEntry
- type EntityCreatedEvent
- type EntityCreatedHandler
- type FlattenedPropEntry
- type PropValue
- type PropertyEntry
- func (pe *PropertyEntry) Bind(variable interface{}, valueType propertyValueType)
- func (pe *PropertyEntry) Entry() *FlattenedPropEntry
- func (pe *PropertyEntry) OnUpdate(handler PropertyUpdateHandler)
- func (pe *PropertyEntry) RegisterPropertyUpdateHandler(handler PropertyUpdateHandler)
- func (pe *PropertyEntry) Value() PropValue
- type PropertyUpdateHandler
- type SendTableParser
- type ServerClass
Constants ¶
const ( ValTypeInt propertyValueType = iota ValTypeFloat32 ValTypeFloat64 ValTypeString ValTypeVector ValTypeArray ValTypeBoolInt // Int that is treated as bool (1 -> true, != 1 -> false) )
Possible types of property values.
See PropertyEntry.Bind()
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entity ¶
type Entity struct { ID int ServerClass *ServerClass // contains filtered or unexported fields }
Entity stores a entity in the game (e.g. players etc.) with its properties.
func NewEntity ¶
func NewEntity(id int, serverClass *ServerClass) *Entity
NewEntity creates a new Entity with a given id and ServerClass and returns it.
func (*Entity) ApplyBaseline ¶ added in v0.5.4
ApplyBaseline baseline applies a previously collected baseline.
Intended for internal use only.
func (*Entity) ApplyUpdate ¶
ApplyUpdate reads an update to an Enitiy's properties and triggers registered PropertyUpdateHandlers if values changed.
Intended for internal use only.
func (*Entity) BindProperty ¶ added in v0.5.4
BindProperty combines FindProperty() & PropertyEntry.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 ¶ added in v0.5.4
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) *PropertyEntry
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) InitializeBaseline ¶ added in v0.5.3
InitializeBaseline applies an update and collects a baseline (default values) from the update.
Intended for internal use only.
func (*Entity) OnCreateFinished ¶ added in v0.5.4
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 ¶ added in v0.5.4
func (e *Entity) OnDestroy(delegate func())
OnDestroy registers a function to be called on the entity's destruction.
func (*Entity) Position ¶ added in v0.5.4
Position returns the entity's position in world coordinates.
func (*Entity) Props ¶
func (e *Entity) Props() []PropertyEntry
Props returns all properties (PropertyEntry) for the Entity.
type EntityCreatedEvent ¶
type EntityCreatedEvent struct { ServerClass *ServerClass Entity *Entity }
EntityCreatedEvent contains information about a newly created entity.
type EntityCreatedHandler ¶
type EntityCreatedHandler func(EntityCreatedEvent)
EntityCreatedHandler is the interface for handlers that are interested in EntityCreatedEvents.
type FlattenedPropEntry ¶
type FlattenedPropEntry struct {
// contains filtered or unexported fields
}
FlattenedPropEntry stores meta information about a property of an Entity. Might be renamed in a future major release (Deprecated).
func (FlattenedPropEntry) Name ¶
func (fpe FlattenedPropEntry) Name() string
Name returs the name of the prop entry.
type PropValue ¶
type PropValue struct { VectorVal r3.Vector IntVal int ArrayVal []PropValue StringVal string FloatVal float32 }
PropValue stores parsed & decoded send-table values. For instance player health, location etc. Might be renamed in a future major release (Deprecated).
type PropertyEntry ¶
type PropertyEntry struct {
// contains filtered or unexported fields
}
PropertyEntry wraps a FlattenedPropEntry and allows registering handlers that can be triggered on a update of the property.
func (*PropertyEntry) Bind ¶ added in v0.5.4
func (pe *PropertyEntry) Bind(variable interface{}, valueType propertyValueType)
Bind binds a property's value to a pointer.
Example:
var i int PropertyEntry.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 PropValue to use for the binding.
func (*PropertyEntry) Entry ¶
func (pe *PropertyEntry) Entry() *FlattenedPropEntry
Entry returns the underlying FlattenedPropEntry.
func (*PropertyEntry) OnUpdate ¶ added in v0.5.4
func (pe *PropertyEntry) OnUpdate(handler PropertyUpdateHandler)
OnUpdate registers a handler for updates of the PropertyEntry's value.
func (*PropertyEntry) RegisterPropertyUpdateHandler ¶
func (pe *PropertyEntry) RegisterPropertyUpdateHandler(handler PropertyUpdateHandler)
RegisterPropertyUpdateHandler registers a handler for updates of the PropertyEntry's value. Deprecated: Use OnUpdate instead.
func (*PropertyEntry) Value ¶ added in v0.5.3
func (pe *PropertyEntry) Value() PropValue
Value returns current value of the property.
type PropertyUpdateHandler ¶
type PropertyUpdateHandler func(PropValue)
PropertyUpdateHandler is the interface for handlers that are interested in PropertyEntry changes.
type SendTableParser ¶ added in v0.4.0
type SendTableParser struct {
// contains filtered or unexported fields
}
SendTableParser provides functions for parsing send-tables.
func (*SendTableParser) ClassBits ¶ added in v0.4.0
func (p *SendTableParser) ClassBits() int
ClassBits seems to calculate how many bits must be read for the server-class ID. Not 100% sure how tho tbh.
func (*SendTableParser) FindServerClassByName ¶ added in v0.4.0
func (p *SendTableParser) FindServerClassByName(name string) *ServerClass
FindServerClassByName 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.
func (*SendTableParser) ParsePacket ¶ added in v0.4.0
func (p *SendTableParser) ParsePacket(r *bit.BitReader)
ParsePacket parses a send-table packet.
func (*SendTableParser) ServerClasses ¶ added in v0.4.0
func (p *SendTableParser) ServerClasses() []*ServerClass
ServerClasses returns the parsed server-classes.
type ServerClass ¶
type ServerClass struct { ClassID int DataTableID int Name string DTName string FlattenedProps []FlattenedPropEntry BaseClasses []*ServerClass // contains filtered or unexported fields }
ServerClass stores meta information about Entity types (e.g. palyers, teams etc.).
func (*ServerClass) FireEntityCreatedEvent ¶
func (sc *ServerClass) FireEntityCreatedEvent(entity *Entity)
FireEntityCreatedEvent triggers all registered EntityCreatedHandlers on the ServerClass with a new EntityCreatedEvent.
func (*ServerClass) RegisterEntityCreatedHandler ¶
func (sc *ServerClass) RegisterEntityCreatedHandler(handler EntityCreatedHandler)
RegisterEntityCreatedHandler registers a EntityCreatedHandler on the ServerClass. The handler will be triggered on every FireEntityCreatedEvent call.