PBug90 / w3gjs

A native JavaScript WarCraft 3 replay parser implementation.
MIT License
44 stars 17 forks source link

Parsing of 0x1A 'UpdateSubgroup' game block #80

Closed jblanchette closed 3 years ago

jblanchette commented 3 years ago

wondering if it's feasible to implement the parsing of the 0x1A block in the GameDataParser.ts

This block was previously supported in 1.0 and gives contextual information about units shifting in-place within a selected group along with some other minor things.

The blocks existence is enough information to be used but if I'm reading this correctly it seems to be skipped at the moment - https://github.com/PBug90/w3gjs/blob/master/src/parsers/GameDataParser.ts#L63-L65

PBug90 commented 3 years ago

That should be straightforward to implement. I will look into it.

PBug90 commented 3 years ago

The file you referenced parses the GameData Blocks though, and you are referring to a player action, which is an action that is part of a CommandBlock inside of a TimeslotBlock. In V1, 0x1A actions were parsed but they do not contain any usable payload: https://github.com/PBug90/w3gjs/blob/v1/src/parsers/actions.ts#L242

Are you sure you are referencing the correct action id?

jblanchette commented 3 years ago

Yes sorry if I've got the terminology wrong - it's data that the game actually automatically puts in for certain situations before a 0x19 Action (Select Subgroup)

There is no actual useful data inside of 0x1A it's just the existence of it is significant for determining in-game actions i.e tabbing through units in a selected group.

So the end result of these would be new items within the commandBlocks list of a gamedatablock event that have the action 0x1A but otherwise empty data.

It's existence is noted by this other reference document about actions - https://github.com/scopatz/w3g/blob/master/w3g_actions.txt#L538-L544