Skip to content

v1.0.0 Roadmap (archived)

Markus edited this page Mar 10, 2020 · 1 revision

Outdated

v1.0.0 has finally been released! 🎉

Development will continue mostly unchanged, the only difference being guaranteed backwards compatibility for the foreseeable future.

Original Roadmap

This page lists all plans and changes for the initial v1 release of the demoinfocs-golang library.

See the v1.0.0 branch for all progress so far.

ETA

The current ETA is early 2019. The main reason for this is that go's complete support for vgo is scheduled for go 1.12, which is due at the end of January 2019.

Why wait for vgo

The reason for waiting for vgo is that it's not sure if it would be possible to switch from dep to vgo without a v2.0.0. In fact, it's highly doubtful.

From the vgo proposal:

  1. Disallow use of vendor directories, except in one limited use: a vendor directory at the top of the file tree of the top-level module being built is still applied to the build, to continue to allow self-contained application repositories. (Ignoring other vendor directories ensures that Go returns to builds in which each import path has the same meaning throughout the build and establishes that only one copy of a package with a given import path is used in a given build.)

Also the library would potentially become non go-gettable if we were to stay with dep.

In a later release (say, Go 1.13), we will end support for go get of non-modules. Support for working in GOPATH will continue indefinitely.

Changes

API Breaking

  • Cleaned up type names in events package (removed stuttery 'Event' suffixes etc.)
  • Migrated from dep to Go Modules as dependency management system (#61)
  • Changed return type of Parser.GameState() from GameState to IGameState (#66)
  • Changed return type of GameState.Participants() from Participants to IParticipants (#66)
  • Renamed GameState.{T,CT}State() functions to Team{Terrorists,CounterTerrorists}() so the functions are nicely ordered when sorted alphabetically
  • Moved player information to GameState.Participants().{All(),Playing(),TeamMembers(),ByUserID(),ByEntityID,FindByHandle()}
  • Moved Parser.Entities() to GameState.Entities()
  • Replaced beta feature Parser.SendTableParser() with Parser.ServerClasses() (ServerClasses is fully supported for the future)
  • Refactored package sendtables - mostly internal changes and some minimally renamed types & functions
  • Moved type TeamState to package common
  • Moved RoundEndReason, RoundMVPReason & HitGroup types & constants to events package
  • Changed type of DemoHeader.PlaybackTime from float32 to time.Duration
  • Changed return type of DemoHeader.FrameTime(), DemoHeader.TickTime() & Parser.CurrentTime() from float32 to time.Duration
  • Changed return type of DemoHeader.FrameRate() & DemoHeader.TickRate() from float32 to float64
  • Removed ParserConfig.AdditionalEventEmitters and package fuzzy since there are now good team/side-switching events (#21).
  • Fixed typo in events.RoundOfficiallyEndedEvent (Officialy -> Officially)

New Features / General

  • Mockable API (#66 - thanks @micvbang)
  • Tracking of infernos (Molotovs & Incendiary fires) in GameState.Infernos()
  • Added GameState.Bomb() to retrieve information about the bomb (#41 - thanks @micvbang)
  • Added metadata package which currently contains translations between the game's world-coordinates and map-overview images. (#37 - thanks @micvbang)
  • Added GrenadeProjectile.Trajectory - contains the trajectory of a grenade (list of positions) up until the current moment
  • Added NadeProjectileDestroyed event - useful to get the final trajectory of a GrenadeProjectile
  • Added events TeamSideSwitch, GameHalfEnd & GamePhaseChanged (#62 - thanks @micvbang)
  • Added GameState.IsWarmupPeriod(), GameState.MatchStarted() and events IsWarmupPeriodChanged & MatchStartedChanged (#63 & #64)
  • Added ScoreUpdated event and moved TeamState to package common (#55 - thanks @micvbang)
  • Added Equipment.ZoomLevel field to indicate how zoomed-in the player is on his weapon (#60 - thanks @micvbang)
  • Added Entity.OnPositionUpdate() - helper function for position updates
  • Added Entity.BindPosition() - helper function for binding the position of an entity to a pointer
  • Automatic parsing of header if not done manually - this means Parser.ParseHeader() no longer needs to be called if the header is not needed.
  • Added examples for using unhandled entity-data, WebAssembly and mocking
  • Fixed some implementations of io.Reader not working as demo sources (when the reader returns less than the requested number of bytes before EOF).
  • Improvements to the godoc

Features moved from beta status to fully supported

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

Planned