Skip to content

Releases: markus-wa/demoinfocs-golang

v1.0.0-beta.2

01 Aug 11:24
Compare
Choose a tag to compare
v1.0.0-beta.2 Pre-release
Pre-release

Additions

  • Tracking of infernos (Molotovs & Incendiary fires) in GameState.Infernos()
  • Package metadata - currently contains translations between the game's world-coordinates and map-overview images. (#37 - thanks @micvbang)
  • Field GrenadeProjectile.Trajectory - contains the trajectory of a grenade (list of positions)
  • Event NadeProjectileDestroyedEvent - useful to get the final trajectory of a GrenadeProjectile
  • Function Entity.OnPositionUpdate() - helper function for position updates
  • Function Entity.BindPosition() - helper function for binding the position of an entity to a pointer

Roadmap

See https://github.com/markus-wa/demoinfocs-golang/wiki/v1.0.0-Roadmap

v1.0.0-beta.1

21 Jul 19:31
Compare
Choose a tag to compare
v1.0.0-beta.1 Pre-release
Pre-release

API Breaking Changes

  • Moved player information from GameState.{[Playing]Participants(),TeamMembers()} to GameState.Participants().{All(),Playing(),TeamMembers(),ByUserID(),ByEntityID(),FindByHandle()}

Additions

  • Added Entity.ServerClass() back, in case we don't know what kind of entity we're dealing with
  • Added example for using unhandled entity-data

Roadmap

See https://github.com/markus-wa/demoinfocs-golang/wiki/v1.0.0-Roadmap

v1.0.0-beta.0

19 Jul 15:59
Compare
Choose a tag to compare
v1.0.0-beta.0 Pre-release
Pre-release

v1.0.0 Beta

After a long time the API is finally stable enough so we can comfortably go towards guaranteeing backwards compatibility for the foreseeable future.

The plan for releasing v1.0.0 is to have beta versions out for a while (1-2 months) without seeing a need for any breaking changes, then we should be ready to move forward.

This version aimed to clean up the mess that was sendtables as well as some other issues (see #16). The new API should be more future-proof and expose less of the code that is only used internally.

API Breaking Changes

  • Renamed GameState.{T,CT}State() functions to Team{Terrorists,CounterTerrorists}() so the functions are nicely ordered when sorted alphabetically
  • Moved Parser.Entities() to GameState.Entities()
  • Replaced beta feature Parser.SendTableParser() with Parser.ServerClasses() (ServerClasses is fully supported for the future)
  • Refactored package sendtables
  • Moved RoundEndReason, RoundMVPReason & HitGroup types & constants to events package
  • Fixed typo in events.RoundOfficiallyEndedEvent (Officialy -> Officially)

Changes

  • Improvements to the godoc

Features that were moved from beta status to fully supported

  • events.DataTablesParsedEvent
  • events.ParserWarnEvent
  • Parser.RegisterNetMessageHandler()

Roadmap

See https://github.com/markus-wa/demoinfocs-golang/wiki/v1.0.0-Roadmap

v0.5.4

08 Jul 17:55
Compare
Choose a tag to compare

Additions

  • Added GameState.GrenadeProjectiles(), contains currently 'live' grenades i.e. flying around and smokes/mollies that are currently up. (#27 thanks @micvbang)
  • Added NadeProjectileThrownEvent, signals that a nade (projectile) has just been thrown
  • Added NadeProjectileBouncedEvent, signals that a nade just bounced off a wall or object
  • Added NadeEventIf.Base() to get the underlying NadeEvent
  • Added Entity.Position() helper function to get entity positions
  • Added Entity.OnCreateFinished() & Entity.OnDestroy() for registering post-creation & pre-deletion actions respectively
  • Added Entity.BindProperty() & PropertyEntry.Bind() utility functions for binding a property's value to a pointer

Changes

  • Replaced unused Player.Weapons field with Player.Weapons() method (#31)
  • Deprecated PropertyEntry.RegisterPropertyUpdateHandler(), added PropertyEntry.OnUpdate() - they are identical but OnUpdate is shorter & easier to understand.

Fixes

  • Fixed Player.RawWeapons containing bad data (#31)
  • Fixed Molotov and Incendiary grenade projectile positioning bug (#32)
  • Fixed detection of M4A1-S (was being treated as a M4A4)
  • Added detection of Revolver as alternative for the Deagle

v0.5.3

27 Jun 17:52
Compare
Choose a tag to compare

Changes

  • Added PropertyEntry.Value() to allow access to property values (#26 thanks @zyphie)
  • Added Parser.Entities() to expose Parser.entities (#22 thanks @zyphie)
  • Added NadeEvent.NadeEntity (#22)
  • Removed unnecessary property updates for baseline values (#24)

Fixes

  • Fixed wrong Z coordinate for player positions (#28 thanks @micvbang)
  • Fixed wrong property values on entities (#25)

Deprecation Notices

  • Type sendtables.PropValue might be renamed to PropertyValue or similar in the future.
  • Type sendtables.FlattenedPropEntry might be renamed to PropertyEntryMetadata or similar in the future.

v0.5.2

17 Jun 00:29
Compare
Choose a tag to compare

Fixes

  • Fixed player reconnects not being handled properly
  • Fixed weapon related events not containing the right weapons in some cases (#20 round 2)
  • Added missing human readable name for knife (Thanks @viSual42)

v0.5.1

14 Jun 16:00
Compare
Choose a tag to compare

Fixes

  • Fixed weapon data not being updated (#20)
  • Fixed wrong EquipmentElement.EquipmentClass() values (#19)

v0.5.0

02 Jun 21:25
Compare
Choose a tag to compare

API Breaking Changes

  • Removed warnHandler parameter from NewParser(), replaced the old warning system with ParserWarnEvent
  • Replaced NewParserWithBufferSize() with NewParserWithConfig() to allow for changes in the future without breaking the API

New Features

  • Added events.GenericGameEvent which is fired for all currently unhandled events.
  • Parsing and handling of all net-messages via Parser.RegisterNetMessageHandler(). Currently unparsed net-messages can be parsed by adding an entry to ParserConfig.AdditionalNetMessageCreators. 1
  • Added ParserConfig.AdditionalEventEmitters which can be used to enable fuzzy logic from the fuzzy package. 1
    Currently there is only one EventEmitter implementation which emits fuzzy.TeamSwitchEvents for Valve MM demos. More will be added if this feature proves to be of use.

  1. Beta feature - this feature is subject to change / replacement without warning.

v0.4.0

02 Jun 21:26
Compare
Choose a tag to compare

This release has some breaking changes with the goal of cleaning up the API.

API Breaking Changes

  • Moved game-state relevant info into Parser.GameState() (i.e. players, team states / scores etc.)
  • Moved Parser.{FrameRate(),FrameTime()} to DemoHeader.* (Accessible via Parser.Header())

Changes

  • Exposed access to DataTables (a.k.a. SendTables) via Parser.SendTableParser() 1
  • Added StringTableCreatedEvent 1
  • Print out demo-commands when debugging

Fixes

  • Fixed UpdateStringTable messages not being handled correctly
  • Fixed unassigned players becoming CTs (Players who haven't chosen a side yet / some spectators)

  1. Beta feature - this feature is subject to change / replacement without warning.

v0.3.0

03 May 16:41
Compare
Choose a tag to compare

API Breaking Changes

  • Changed bomb-events attribute Site to be of type bombsite (either events.BombsiteA or events.BombsiteB) instead of rune
  • Changed name of field BombBeginDefuseEvent.Defuser to Player so as to be in line with the other bomb-events

Changes

  • Added build tag debugdemoinfocs for debugging game events etc.
  • Vendoring with dep
  • Bitread v0.2.1 (BitReader.Skip())

Fixes

  • Fixed BombBeginDefuseEvent not being handled by BombEventIf handlers

Vendoring

We are using a separate repository for dependencies (https://github.com/markus-wa/demoinfocs-golang-vendor). The reason behind that is to avoid cluttering the repo and avoid search results on github returning irrelevant results.