From 6c6a46e1cb824a591193b67fa8946145e0529c65 Mon Sep 17 00:00:00 2001 From: Rogiel Sulzbach Date: Mon, 18 Jan 2016 21:16:10 -0200 Subject: [PATCH] Initial commit --- .gitignore | 56 + .gitmodules | 3 + .travis.yml | 10 + README.md | 43 + bin/Template/Event.php | 51 + bin/Template/Version.php | 122 ++ bin/Template/Versions.php | 37 + bin/class_mapping.py | 148 ++ bin/generator.py | 167 ++ bin/template.py | 67 + bin/tree.py | 111 ++ composer.json | 31 + phpunit.xml | 37 + s2protocol | 1 + src/Entity/AbstractEntity.php | 34 + src/Entity/Color.php | 85 ++ src/Entity/Entity.php | 34 + src/Entity/Player.php | 169 +++ src/Entity/Point.php | 67 + src/Entity/Thumbnail.php | 46 + src/Entity/Toon.php | 41 + src/Event/AbstractEvent.php | 56 + src/Event/Event.php | 41 + src/Event/Game/AICommunicateEvent.php | 101 ++ src/Event/Game/AbstractGameEvent.php | 35 + src/Event/Game/AchievementAwardedEvent.php | 53 + src/Event/Game/AddAbsoluteGameSpeedEvent.php | 53 + src/Event/Game/AllianceEvent.php | 59 + src/Event/Game/BankFileEvent.php | 53 + src/Event/Game/BankKeyEvent.php | 65 + src/Event/Game/BankSectionEvent.php | 53 + src/Event/Game/BankSignatureEvent.php | 59 + src/Event/Game/BankValueEvent.php | 65 + src/Event/Game/BroadcastCheatEvent.php | 59 + src/Event/Game/CameraSaveEvent.php | 59 + src/Event/Game/CameraUpdateEvent.php | 83 + src/Event/Game/CatalogModifyEvent.php | 71 + src/Event/Game/CmdEvent.php | 83 + src/Event/Game/CmdUpdateTargetPointEvent.php | 53 + src/Event/Game/CmdUpdateTargetUnitEvent.php | 53 + src/Event/Game/CommandManagerResetEvent.php | 53 + src/Event/Game/CommandManagerStateEvent.php | 59 + src/Event/Game/ControlGroupUpdateEvent.php | 65 + .../Game/DecrementGameTimeRemainingEvent.php | 53 + src/Event/Game/Entity/Ability.php | 63 + src/Event/Game/Entity/BankSignature.php | 54 + .../Game/Entity/ControlGroupUpdateMask.php | 49 + .../Entity/ControlGroupUpdateOneIndices.php | 48 + .../Entity/ControlGroupUpdateZeroIndices.php | 48 + src/Event/Game/Entity/ResourceRequest.php | 76 + src/Event/Game/Entity/SelectionDelta.php | 75 + src/Event/Game/Entity/SoundLengthSync.php | 60 + src/Event/Game/Entity/SubgroupUnit.php | 71 + src/Event/Game/Entity/TargetUnit.php | 96 ++ src/Event/Game/GameCheatEvent.php | 53 + src/Event/Game/GameEvent.php | 35 + src/Event/Game/GameUserJoinEvent.php | 89 ++ src/Event/Game/GameUserLeaveEvent.php | 53 + .../Game/HeroTalentTreeSelectedEvent.php | 53 + ...roTalentTreeSelectionPanelToggledEvent.php | 53 + src/Event/Game/HijackReplayGameEvent.php | 59 + src/Event/Game/LagMessageEvent.php | 53 + src/Event/Game/LoadGameDoneEvent.php | 51 + src/Event/Game/PlayerLeaveEvent.php | 51 + src/Event/Game/ResourceRequestCancelEvent.php | 53 + src/Event/Game/ResourceRequestEvent.php | 53 + .../Game/ResourceRequestFulfillEvent.php | 53 + src/Event/Game/ResourceTradeEvent.php | 59 + src/Event/Game/SaveGameDoneEvent.php | 51 + src/Event/Game/SaveGameEvent.php | 77 + src/Event/Game/SelectionDeltaEvent.php | 59 + src/Event/Game/SelectionSyncCheckEvent.php | 59 + src/Event/Game/SetAbsoluteGameSpeedEvent.php | 53 + src/Event/Game/TriggerAbortMissionEvent.php | 51 + .../TriggerAnimLengthQueryByNameEvent.php | 65 + .../TriggerAnimLengthQueryByPropsEvent.php | 59 + src/Event/Game/TriggerAnimOffsetEvent.php | 53 + .../TriggerBattleReportPanelExitEvent.php | 51 + ...iggerBattleReportPanelPlayMissionEvent.php | 59 + ...TriggerBattleReportPanelPlaySceneEvent.php | 53 + ...BattleReportPanelSelectionChangedEvent.php | 53 + src/Event/Game/TriggerButtonPressedEvent.php | 53 + src/Event/Game/TriggerCameraMoveEvent.php | 53 + src/Event/Game/TriggerChatMessageEvent.php | 53 + src/Event/Game/TriggerCommandErrorEvent.php | 59 + .../Game/TriggerConversationSkippedEvent.php | 53 + .../TriggerCustomDialogDismissedEvent.php | 53 + .../TriggerCutsceneBookmarkFiredEvent.php | 59 + .../TriggerCutsceneConversationLineEvent.php | 65 + ...erCutsceneConversationLineMissingEvent.php | 59 + .../TriggerCutsceneEndSceneFiredEvent.php | 53 + src/Event/Game/TriggerDialogControlEvent.php | 65 + .../Game/TriggerGameCreditsFinishedEvent.php | 51 + .../Game/TriggerGameMenuItemSelectedEvent.php | 53 + src/Event/Game/TriggerHotkeyPressedEvent.php | 59 + src/Event/Game/TriggerKeyPressedEvent.php | 59 + .../Game/TriggerMercenaryPanelExitEvent.php | 51 + .../TriggerMercenaryPanelPurchaseEvent.php | 51 + ...gerMercenaryPanelSelectionChangedEvent.php | 53 + src/Event/Game/TriggerMouseClickedEvent.php | 77 + src/Event/Game/TriggerMouseMovedEvent.php | 65 + src/Event/Game/TriggerMouseWheelEvent.php | 59 + src/Event/Game/TriggerMovieFinishedEvent.php | 51 + src/Event/Game/TriggerMovieFunctionEvent.php | 53 + src/Event/Game/TriggerMovieStartedEvent.php | 51 + src/Event/Game/TriggerPingEvent.php | 101 ++ .../TriggerPlanetMissionLaunchedEvent.php | 53 + .../TriggerPlanetMissionSelectedEvent.php | 53 + .../TriggerPlanetPanelBirthCompleteEvent.php | 51 + .../Game/TriggerPlanetPanelCanceledEvent.php | 51 + .../TriggerPlanetPanelDeathCompleteEvent.php | 51 + .../Game/TriggerPlanetPanelReplayEvent.php | 51 + src/Event/Game/TriggerPortraitLoadedEvent.php | 53 + .../TriggerProfilerLoggingFinishedEvent.php | 51 + src/Event/Game/TriggerPurchaseExitEvent.php | 51 + src/Event/Game/TriggerPurchaseMadeEvent.php | 53 + ...elSelectedPurchaseCategoryChangedEvent.php | 53 + ...ePanelSelectedPurchaseItemChangedEvent.php | 53 + src/Event/Game/TriggerReplySelectedEvent.php | 59 + .../Game/TriggerResearchPanelExitEvent.php | 51 + .../TriggerResearchPanelPurchaseEvent.php | 51 + ...ggerResearchPanelSelectionChangedEvent.php | 53 + src/Event/Game/TriggerSkippedEvent.php | 51 + .../Game/TriggerSoundLengthQueryEvent.php | 59 + src/Event/Game/TriggerSoundLengthSync.php | 36 + .../Game/TriggerSoundLengthSyncEvent.php | 53 + src/Event/Game/TriggerSoundOffsetEvent.php | 53 + src/Event/Game/TriggerSoundtrackDoneEvent.php | 53 + .../Game/TriggerTargetModeUpdateEvent.php | 65 + .../Game/TriggerTransmissionCompleteEvent.php | 53 + .../Game/TriggerTransmissionOffsetEvent.php | 59 + .../Game/TriggerVictoryPanelExitEvent.php | 51 + ...iggerVictoryPanelPlayMissionAgainEvent.php | 53 + src/Event/Game/UnitClickEvent.php | 53 + src/Event/Game/UnitHighlightEvent.php | 59 + .../Game/UserFinishedLoadingSyncEvent.php | 51 + src/Event/Game/UserOptionsEvent.php | 131 ++ src/Event/Message/AbstractMessageEvent.php | 35 + src/Event/Message/ChatMessage.php | 59 + src/Event/Message/LoadingProgressMessage.php | 53 + src/Event/Message/MessageEvent.php | 35 + src/Event/Message/PingMessage.php | 59 + src/Event/Message/ReconnectNotifyMessage.php | 53 + src/Event/Message/ServerPingMessage.php | 51 + src/Event/Tracker/AbstractTrackerEvent.php | 35 + src/Event/Tracker/PlayerSetupEvent.php | 71 + src/Event/Tracker/PlayerStats.php | 510 +++++++ src/Event/Tracker/PlayerStatsEvent.php | 59 + src/Event/Tracker/TrackerEvent.php | 36 + src/Event/Tracker/UnitBornEvent.php | 89 ++ src/Event/Tracker/UnitDiedEvent.php | 89 ++ src/Event/Tracker/UnitDoneEvent.php | 59 + src/Event/Tracker/UnitInitEvent.php | 89 ++ src/Event/Tracker/UnitOwnerChangeEvent.php | 71 + src/Event/Tracker/UnitPositions.php | 55 + src/Event/Tracker/UnitPositionsEvent.php | 59 + src/Event/Tracker/UnitTypeChangeEvent.php | 65 + src/Event/Tracker/UpgradeEvent.php | 65 + .../InvalidReplayHeaderException.php | 34 + src/Exception/ReplayException.php | 34 + src/Hydrator/GeneratedHydratorFactory.php | 66 + src/Hydrator/HydratorFactory.php | 41 + src/Metadata/Event/Header.php | 70 + src/Metadata/Header/Hash.php | 43 + src/Metadata/Header/Header.php | 129 ++ src/Metadata/Header/Version.php | 110 ++ src/Metadata/Init/GameDescription.php | 347 +++++ src/Metadata/Init/GameOptions.php | 214 +++ src/Metadata/Init/InitData.php | 46 + src/Metadata/Init/LobbyState.php | 168 +++ src/Metadata/Init/SyncLobbyState.php | 70 + src/Metadata/Init/UserInitialData.php | 250 +++ .../Init/UserInitialDataCollection.php | 54 + src/Metadata/Match/MatchInformation.php | 239 +++ src/Metadata/Match/PlayerList.php | 111 ++ src/Parser/Parser.php | 38 + src/Parser/Serializer/AbstractSerializer.php | 182 +++ src/Parser/Serializer/BitPackedSerializer.php | 107 ++ src/Parser/Serializer/Serializer.php | 45 + .../Serializer/Tree/Node/AbstractNode.php | 51 + src/Parser/Serializer/Tree/Node/ArrayNode.php | 69 + .../Serializer/Tree/Node/BitArrayNode.php | 55 + src/Parser/Serializer/Tree/Node/BlobNode.php | 58 + .../Serializer/Tree/Node/BooleanNode.php | 41 + .../Serializer/Tree/Node/ChoiceNode.php | 72 + .../Serializer/Tree/Node/FourCCNode.php | 37 + .../Serializer/Tree/Node/IntegerNode.php | 72 + src/Parser/Serializer/Tree/Node/Node.php | 41 + src/Parser/Serializer/Tree/Node/NullNode.php | 36 + .../Serializer/Tree/Node/OptionalNode.php | 58 + .../Serializer/Tree/Node/StructNode.php | 105 ++ src/Parser/Serializer/Tree/Tree.php | 80 + src/Parser/Serializer/VersionedSerializer.php | 225 +++ src/Replay.php | 341 +++++ src/Stream/BitStream.php | 132 ++ src/Stream/Parser/ReplayStreamParser.php | 91 ++ src/Version/AbstractVersion.php | 42 + src/Version/Version.php | 61 + src/Version/Version15405.php | 856 +++++++++++ src/Version/Version16561.php | 897 +++++++++++ src/Version/Version16605.php | 897 +++++++++++ src/Version/Version16755.php | 897 +++++++++++ src/Version/Version16939.php | 897 +++++++++++ src/Version/Version17266.php | 920 +++++++++++ src/Version/Version17326.php | 920 +++++++++++ src/Version/Version18092.php | 920 +++++++++++ src/Version/Version18468.php | 920 +++++++++++ src/Version/Version18574.php | 920 +++++++++++ src/Version/Version19132.php | 925 ++++++++++++ src/Version/Version19458.php | 927 ++++++++++++ src/Version/Version19595.php | 927 ++++++++++++ src/Version/Version19679.php | 927 ++++++++++++ src/Version/Version21029.php | 927 ++++++++++++ src/Version/Version21995.php | 988 ++++++++++++ src/Version/Version22612.php | 989 ++++++++++++ src/Version/Version23260.php | 989 ++++++++++++ src/Version/Version24764.php | 1038 +++++++++++++ src/Version/Version24944.php | 1161 ++++++++++++++ src/Version/Version26490.php | 1173 ++++++++++++++ src/Version/Version27950.php | 1185 +++++++++++++++ src/Version/Version28272.php | 1185 +++++++++++++++ src/Version/Version28667.php | 1185 +++++++++++++++ src/Version/Version32283.php | 1186 +++++++++++++++ src/Version/Version34784.php | 1323 ++++++++++++++++ src/Version/Version34835.php | 1323 ++++++++++++++++ src/Version/Version36442.php | 1325 ++++++++++++++++ src/Version/Version38215.php | 1340 ++++++++++++++++ src/Version/Version38749.php | 1341 ++++++++++++++++ src/Version/Version38996.php | 1342 ++++++++++++++++ src/Version/Version39576.php | 1343 +++++++++++++++++ src/Version/VersionLoader.php | 91 ++ src/Version/Versions.php | 70 + tests/AbstractTestCase.php | 46 + tests/Parser/Header/HeaderParserTest.php | 63 + .../Serializer/DefaultSerializerTest.php | 123 ++ tests/Stream/BitStreamTest.php | 101 ++ .../Stream/Parser/ReplayStreamParserTest.php | 151 ++ 237 files changed, 48572 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .travis.yml create mode 100644 README.md create mode 100644 bin/Template/Event.php create mode 100644 bin/Template/Version.php create mode 100644 bin/Template/Versions.php create mode 100644 bin/class_mapping.py create mode 100755 bin/generator.py create mode 100644 bin/template.py create mode 100644 bin/tree.py create mode 100644 composer.json create mode 100644 phpunit.xml create mode 160000 s2protocol create mode 100644 src/Entity/AbstractEntity.php create mode 100644 src/Entity/Color.php create mode 100644 src/Entity/Entity.php create mode 100644 src/Entity/Player.php create mode 100644 src/Entity/Point.php create mode 100644 src/Entity/Thumbnail.php create mode 100644 src/Entity/Toon.php create mode 100644 src/Event/AbstractEvent.php create mode 100644 src/Event/Event.php create mode 100644 src/Event/Game/AICommunicateEvent.php create mode 100644 src/Event/Game/AbstractGameEvent.php create mode 100644 src/Event/Game/AchievementAwardedEvent.php create mode 100644 src/Event/Game/AddAbsoluteGameSpeedEvent.php create mode 100644 src/Event/Game/AllianceEvent.php create mode 100644 src/Event/Game/BankFileEvent.php create mode 100644 src/Event/Game/BankKeyEvent.php create mode 100644 src/Event/Game/BankSectionEvent.php create mode 100644 src/Event/Game/BankSignatureEvent.php create mode 100644 src/Event/Game/BankValueEvent.php create mode 100644 src/Event/Game/BroadcastCheatEvent.php create mode 100644 src/Event/Game/CameraSaveEvent.php create mode 100644 src/Event/Game/CameraUpdateEvent.php create mode 100644 src/Event/Game/CatalogModifyEvent.php create mode 100644 src/Event/Game/CmdEvent.php create mode 100644 src/Event/Game/CmdUpdateTargetPointEvent.php create mode 100644 src/Event/Game/CmdUpdateTargetUnitEvent.php create mode 100644 src/Event/Game/CommandManagerResetEvent.php create mode 100644 src/Event/Game/CommandManagerStateEvent.php create mode 100644 src/Event/Game/ControlGroupUpdateEvent.php create mode 100644 src/Event/Game/DecrementGameTimeRemainingEvent.php create mode 100644 src/Event/Game/Entity/Ability.php create mode 100644 src/Event/Game/Entity/BankSignature.php create mode 100644 src/Event/Game/Entity/ControlGroupUpdateMask.php create mode 100644 src/Event/Game/Entity/ControlGroupUpdateOneIndices.php create mode 100644 src/Event/Game/Entity/ControlGroupUpdateZeroIndices.php create mode 100644 src/Event/Game/Entity/ResourceRequest.php create mode 100644 src/Event/Game/Entity/SelectionDelta.php create mode 100644 src/Event/Game/Entity/SoundLengthSync.php create mode 100644 src/Event/Game/Entity/SubgroupUnit.php create mode 100644 src/Event/Game/Entity/TargetUnit.php create mode 100644 src/Event/Game/GameCheatEvent.php create mode 100644 src/Event/Game/GameEvent.php create mode 100644 src/Event/Game/GameUserJoinEvent.php create mode 100644 src/Event/Game/GameUserLeaveEvent.php create mode 100644 src/Event/Game/HeroTalentTreeSelectedEvent.php create mode 100644 src/Event/Game/HeroTalentTreeSelectionPanelToggledEvent.php create mode 100644 src/Event/Game/HijackReplayGameEvent.php create mode 100644 src/Event/Game/LagMessageEvent.php create mode 100644 src/Event/Game/LoadGameDoneEvent.php create mode 100644 src/Event/Game/PlayerLeaveEvent.php create mode 100644 src/Event/Game/ResourceRequestCancelEvent.php create mode 100644 src/Event/Game/ResourceRequestEvent.php create mode 100644 src/Event/Game/ResourceRequestFulfillEvent.php create mode 100644 src/Event/Game/ResourceTradeEvent.php create mode 100644 src/Event/Game/SaveGameDoneEvent.php create mode 100644 src/Event/Game/SaveGameEvent.php create mode 100644 src/Event/Game/SelectionDeltaEvent.php create mode 100644 src/Event/Game/SelectionSyncCheckEvent.php create mode 100644 src/Event/Game/SetAbsoluteGameSpeedEvent.php create mode 100644 src/Event/Game/TriggerAbortMissionEvent.php create mode 100644 src/Event/Game/TriggerAnimLengthQueryByNameEvent.php create mode 100644 src/Event/Game/TriggerAnimLengthQueryByPropsEvent.php create mode 100644 src/Event/Game/TriggerAnimOffsetEvent.php create mode 100644 src/Event/Game/TriggerBattleReportPanelExitEvent.php create mode 100644 src/Event/Game/TriggerBattleReportPanelPlayMissionEvent.php create mode 100644 src/Event/Game/TriggerBattleReportPanelPlaySceneEvent.php create mode 100644 src/Event/Game/TriggerBattleReportPanelSelectionChangedEvent.php create mode 100644 src/Event/Game/TriggerButtonPressedEvent.php create mode 100644 src/Event/Game/TriggerCameraMoveEvent.php create mode 100644 src/Event/Game/TriggerChatMessageEvent.php create mode 100644 src/Event/Game/TriggerCommandErrorEvent.php create mode 100644 src/Event/Game/TriggerConversationSkippedEvent.php create mode 100644 src/Event/Game/TriggerCustomDialogDismissedEvent.php create mode 100644 src/Event/Game/TriggerCutsceneBookmarkFiredEvent.php create mode 100644 src/Event/Game/TriggerCutsceneConversationLineEvent.php create mode 100644 src/Event/Game/TriggerCutsceneConversationLineMissingEvent.php create mode 100644 src/Event/Game/TriggerCutsceneEndSceneFiredEvent.php create mode 100644 src/Event/Game/TriggerDialogControlEvent.php create mode 100644 src/Event/Game/TriggerGameCreditsFinishedEvent.php create mode 100644 src/Event/Game/TriggerGameMenuItemSelectedEvent.php create mode 100644 src/Event/Game/TriggerHotkeyPressedEvent.php create mode 100644 src/Event/Game/TriggerKeyPressedEvent.php create mode 100644 src/Event/Game/TriggerMercenaryPanelExitEvent.php create mode 100644 src/Event/Game/TriggerMercenaryPanelPurchaseEvent.php create mode 100644 src/Event/Game/TriggerMercenaryPanelSelectionChangedEvent.php create mode 100644 src/Event/Game/TriggerMouseClickedEvent.php create mode 100644 src/Event/Game/TriggerMouseMovedEvent.php create mode 100644 src/Event/Game/TriggerMouseWheelEvent.php create mode 100644 src/Event/Game/TriggerMovieFinishedEvent.php create mode 100644 src/Event/Game/TriggerMovieFunctionEvent.php create mode 100644 src/Event/Game/TriggerMovieStartedEvent.php create mode 100644 src/Event/Game/TriggerPingEvent.php create mode 100644 src/Event/Game/TriggerPlanetMissionLaunchedEvent.php create mode 100644 src/Event/Game/TriggerPlanetMissionSelectedEvent.php create mode 100644 src/Event/Game/TriggerPlanetPanelBirthCompleteEvent.php create mode 100644 src/Event/Game/TriggerPlanetPanelCanceledEvent.php create mode 100644 src/Event/Game/TriggerPlanetPanelDeathCompleteEvent.php create mode 100644 src/Event/Game/TriggerPlanetPanelReplayEvent.php create mode 100644 src/Event/Game/TriggerPortraitLoadedEvent.php create mode 100644 src/Event/Game/TriggerProfilerLoggingFinishedEvent.php create mode 100644 src/Event/Game/TriggerPurchaseExitEvent.php create mode 100644 src/Event/Game/TriggerPurchaseMadeEvent.php create mode 100644 src/Event/Game/TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent.php create mode 100644 src/Event/Game/TriggerPurchasePanelSelectedPurchaseItemChangedEvent.php create mode 100644 src/Event/Game/TriggerReplySelectedEvent.php create mode 100644 src/Event/Game/TriggerResearchPanelExitEvent.php create mode 100644 src/Event/Game/TriggerResearchPanelPurchaseEvent.php create mode 100644 src/Event/Game/TriggerResearchPanelSelectionChangedEvent.php create mode 100644 src/Event/Game/TriggerSkippedEvent.php create mode 100644 src/Event/Game/TriggerSoundLengthQueryEvent.php create mode 100644 src/Event/Game/TriggerSoundLengthSync.php create mode 100644 src/Event/Game/TriggerSoundLengthSyncEvent.php create mode 100644 src/Event/Game/TriggerSoundOffsetEvent.php create mode 100644 src/Event/Game/TriggerSoundtrackDoneEvent.php create mode 100644 src/Event/Game/TriggerTargetModeUpdateEvent.php create mode 100644 src/Event/Game/TriggerTransmissionCompleteEvent.php create mode 100644 src/Event/Game/TriggerTransmissionOffsetEvent.php create mode 100644 src/Event/Game/TriggerVictoryPanelExitEvent.php create mode 100644 src/Event/Game/TriggerVictoryPanelPlayMissionAgainEvent.php create mode 100644 src/Event/Game/UnitClickEvent.php create mode 100644 src/Event/Game/UnitHighlightEvent.php create mode 100644 src/Event/Game/UserFinishedLoadingSyncEvent.php create mode 100644 src/Event/Game/UserOptionsEvent.php create mode 100644 src/Event/Message/AbstractMessageEvent.php create mode 100644 src/Event/Message/ChatMessage.php create mode 100644 src/Event/Message/LoadingProgressMessage.php create mode 100644 src/Event/Message/MessageEvent.php create mode 100644 src/Event/Message/PingMessage.php create mode 100644 src/Event/Message/ReconnectNotifyMessage.php create mode 100644 src/Event/Message/ServerPingMessage.php create mode 100644 src/Event/Tracker/AbstractTrackerEvent.php create mode 100644 src/Event/Tracker/PlayerSetupEvent.php create mode 100644 src/Event/Tracker/PlayerStats.php create mode 100644 src/Event/Tracker/PlayerStatsEvent.php create mode 100644 src/Event/Tracker/TrackerEvent.php create mode 100644 src/Event/Tracker/UnitBornEvent.php create mode 100644 src/Event/Tracker/UnitDiedEvent.php create mode 100644 src/Event/Tracker/UnitDoneEvent.php create mode 100644 src/Event/Tracker/UnitInitEvent.php create mode 100644 src/Event/Tracker/UnitOwnerChangeEvent.php create mode 100644 src/Event/Tracker/UnitPositions.php create mode 100644 src/Event/Tracker/UnitPositionsEvent.php create mode 100644 src/Event/Tracker/UnitTypeChangeEvent.php create mode 100644 src/Event/Tracker/UpgradeEvent.php create mode 100644 src/Exception/InvalidReplayHeaderException.php create mode 100644 src/Exception/ReplayException.php create mode 100644 src/Hydrator/GeneratedHydratorFactory.php create mode 100644 src/Hydrator/HydratorFactory.php create mode 100644 src/Metadata/Event/Header.php create mode 100644 src/Metadata/Header/Hash.php create mode 100644 src/Metadata/Header/Header.php create mode 100644 src/Metadata/Header/Version.php create mode 100644 src/Metadata/Init/GameDescription.php create mode 100644 src/Metadata/Init/GameOptions.php create mode 100644 src/Metadata/Init/InitData.php create mode 100644 src/Metadata/Init/LobbyState.php create mode 100644 src/Metadata/Init/SyncLobbyState.php create mode 100644 src/Metadata/Init/UserInitialData.php create mode 100644 src/Metadata/Init/UserInitialDataCollection.php create mode 100644 src/Metadata/Match/MatchInformation.php create mode 100644 src/Metadata/Match/PlayerList.php create mode 100644 src/Parser/Parser.php create mode 100644 src/Parser/Serializer/AbstractSerializer.php create mode 100644 src/Parser/Serializer/BitPackedSerializer.php create mode 100644 src/Parser/Serializer/Serializer.php create mode 100644 src/Parser/Serializer/Tree/Node/AbstractNode.php create mode 100644 src/Parser/Serializer/Tree/Node/ArrayNode.php create mode 100644 src/Parser/Serializer/Tree/Node/BitArrayNode.php create mode 100644 src/Parser/Serializer/Tree/Node/BlobNode.php create mode 100644 src/Parser/Serializer/Tree/Node/BooleanNode.php create mode 100644 src/Parser/Serializer/Tree/Node/ChoiceNode.php create mode 100644 src/Parser/Serializer/Tree/Node/FourCCNode.php create mode 100644 src/Parser/Serializer/Tree/Node/IntegerNode.php create mode 100644 src/Parser/Serializer/Tree/Node/Node.php create mode 100644 src/Parser/Serializer/Tree/Node/NullNode.php create mode 100644 src/Parser/Serializer/Tree/Node/OptionalNode.php create mode 100644 src/Parser/Serializer/Tree/Node/StructNode.php create mode 100644 src/Parser/Serializer/Tree/Tree.php create mode 100644 src/Parser/Serializer/VersionedSerializer.php create mode 100644 src/Replay.php create mode 100644 src/Stream/BitStream.php create mode 100644 src/Stream/Parser/ReplayStreamParser.php create mode 100644 src/Version/AbstractVersion.php create mode 100644 src/Version/Version.php create mode 100644 src/Version/Version15405.php create mode 100644 src/Version/Version16561.php create mode 100644 src/Version/Version16605.php create mode 100644 src/Version/Version16755.php create mode 100644 src/Version/Version16939.php create mode 100644 src/Version/Version17266.php create mode 100644 src/Version/Version17326.php create mode 100644 src/Version/Version18092.php create mode 100644 src/Version/Version18468.php create mode 100644 src/Version/Version18574.php create mode 100644 src/Version/Version19132.php create mode 100644 src/Version/Version19458.php create mode 100644 src/Version/Version19595.php create mode 100644 src/Version/Version19679.php create mode 100644 src/Version/Version21029.php create mode 100644 src/Version/Version21995.php create mode 100644 src/Version/Version22612.php create mode 100644 src/Version/Version23260.php create mode 100644 src/Version/Version24764.php create mode 100644 src/Version/Version24944.php create mode 100644 src/Version/Version26490.php create mode 100644 src/Version/Version27950.php create mode 100644 src/Version/Version28272.php create mode 100644 src/Version/Version28667.php create mode 100644 src/Version/Version32283.php create mode 100644 src/Version/Version34784.php create mode 100644 src/Version/Version34835.php create mode 100644 src/Version/Version36442.php create mode 100644 src/Version/Version38215.php create mode 100644 src/Version/Version38749.php create mode 100644 src/Version/Version38996.php create mode 100644 src/Version/Version39576.php create mode 100644 src/Version/VersionLoader.php create mode 100644 src/Version/Versions.php create mode 100644 tests/AbstractTestCase.php create mode 100644 tests/Parser/Header/HeaderParserTest.php create mode 100644 tests/Parser/Serializer/DefaultSerializerTest.php create mode 100644 tests/Stream/BitStreamTest.php create mode 100644 tests/Stream/Parser/ReplayStreamParserTest.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7d45daa --- /dev/null +++ b/.gitignore @@ -0,0 +1,56 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +### Composer template +composer.phar +vendor/ + +# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +composer.lock + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..31c1487 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "s2protocol"] + path = s2protocol + url = https://github.com/Blizzard/s2protocol.git diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..cb143d0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: php +php: + - '5.4' + - '5.5' + - '5.6' + - '7.0' + - hhvm + +install: + - composer update \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c51e5b --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Star Replay + +This library allows you to read StarCraft II replay files from PHP. + +A object-oriented API is provided to browse through all metadata and events available on replays. + +## Features +* Read .SC2Replay files from all public game versions (data is mined from [s2protocol](https://github.com/Blizzard/s2protocol)) +* **Game events**: Streams events using PHP 5 generators +* **Lazy parsing**: Parses only structures you require + +## Installation + +The recommended way of installing this library is using Composer. + + composer require "rogiel/star-replay" + +This library uses [php-mpq](https://github.com/Rogiel/php-mpq) to parse and extract compressed information inside replays. + +## Example + +```php +use Rogiel\StarReplay\Replay; +use Rogiel\StarReplay\Event\Game\CameraSaveEvent; + +$replay = new Replay('test.SC2Replay'); + +echo "Version: " . $replay->getHeader()->getVersion() . "\n"; +echo "Map: " . $replay->getMatchInformation()->getTitle() . "\n"; +echo "Players:\n"; +foreach($replay->getPlayers() as $id => $player) { + echo "\tPlayer ".$id.": ".$player->getName()."\n"; +} + +echo "Camera hotkeys:\n"; +foreach($replay->getGameEvents() as $timestamp => $event) { + if($event instanceof CameraSaveEvent) { + $player = $replay->getPlayers()->getPlayer($event->getHeader()->getUserID()); + echo "\tPlayer ". $player->getName() ." saved a new camera #". $event->getWhich() ." at point ". $event->getTarget() ."\n"; + } + // since we are using generators, the events will stream linearly from begining to end +} +``` diff --git a/bin/Template/Event.php b/bin/Template/Event.php new file mode 100644 index 0000000..235f263 --- /dev/null +++ b/bin/Template/Event.php @@ -0,0 +1,51 @@ +getEventName()."{{ {ToString} }}"; + }} + +{Getters} + +}} \ No newline at end of file diff --git a/bin/Template/Version.php b/bin/Template/Version.php new file mode 100644 index 0000000..7251774 --- /dev/null +++ b/bin/Template/Version.php @@ -0,0 +1,122 @@ +getNode({HeaderNode}); + }} + + public function getReplayInitDataNode() {{ + return self::$TREE->getNode({InitDataNode}); + }} + + public function getGameDetailsNode() {{ + return self::$TREE->getNode({GameDetailsNode}); + }} + + public function getGameEventHeaderNode() {{ + return new StructNode( + [ + 'timestamp' => ['type' => {TimestampNode}], + 'user' => ['type' => {UserNode}], + 'event' => ['type' => {GameEventNode}] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + }} + + public function getMessageEventHeaderNode() {{ + return new StructNode( + [ + 'timestamp' => ['type' => {TimestampNode}], + 'user' => ['type' => {UserNode}], + 'event' => ['type' => {MessageEventNode}] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + }} + + public function getTrackerEventHeaderNode() {{ + return new StructNode( + [ + 'timestamp' => ['type' => {TimestampNode}], + 'event' => ['type' => {TrackerEventNode}] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + }} + +}} + +Version{Version}::$TREE = new Tree({Tree}); +Version{Version}::$GAME_EVENT_MAPPING = {GameEvents}; +Version{Version}::$MESSAGE_EVENT_MAPPING = {MessageEvents}; +Version{Version}::$TRACKER_EVENT_MAPPING = {TrackerEvents}; diff --git a/bin/Template/Versions.php b/bin/Template/Versions.php new file mode 100644 index 0000000..047c8f8 --- /dev/null +++ b/bin/Template/Versions.php @@ -0,0 +1,37 @@ + 'Rogiel\StarReplay\Version\Version{0}',\n".format(version) +all_versions_generated = all_versions_generated[:-2] + "\n\t\t]" +template_vars = { + 'Versions': all_versions_generated, +} +template_generator.parse_template(current_path + "/Template/Versions.php", "{0}/Versions.php".format(output_directory), template_vars) + +def extract_field_type(field): + field_type = classes.get(field) + if field_type: + field_type = "\\"+field_type + else: + field_type_struct = protocol.typeinfos[field] + if(field_type_struct[0] == '_int'): + field_type = "integer" + elif(field_type_struct[0] == '_blob'): + field_type = "string" + elif(field_type_struct[0] == '_array'): + field_type = "array" + elif(field_type_struct[0] == '_null'): + field_type = "null" + elif(field_type_struct[0] == '_bool'): + field_type = "boolean" + elif(field_type_struct[0] == '_struct'): + logging.warn("Non mapped struct: %s. Falling back to array.", field_type_struct) + field_type = "struct" + elif(field_type_struct[0] == '_choice'): + field_type = "" + for choice in protocol.typeinfos[field][1][1].iteritems(): + field_type += "{0}|".format(extract_field_type(choice[1][1])) + field_type = field_type[:-1] + elif(field_type_struct[0] == '_optional'): + field_type = "null|{0}".format(extract_field_type(protocol.typeinfos[field][1][0])) + elif(field_type_struct[0] == '_bitarray'): + field_type = "integer" + elif(field_type_struct[0] == '_fourcc'): + field_type = "integer" + else: + logging.error("Unknown type for field: %s. Ignoring type mapping.", field_type_struct) + return field_type + + +def parse_event_template(event, type, prefix, input, output_directory): + event_name = event["event"][1][1][len(prefix):] + full_name = event["event"][1][1] + + fields = "" + to_string = "" + getters = "" + for field in event["type"][1][0]: + field_name = field[0][2:] + camel_field_name = template_generator.capital_first_letter(field_name) + field_type = extract_field_type(field[1]) + + if field_type: + fields += "\t/** @var {0} */\n".format(field_type) + fields += "\tpublic ${0};\n\n".format(field_name) + + # if protocol.typeinfos[field[1]][0] == '_array': + # exit() + + to_string += "{0} = $this->{0}, ".format(field_name) + if field_type: + getters += "\t/** @return {0} */\n".format(field_type) + getters += "\tpublic function get{0}() {{ return $this->{1}; }}\n\n".format(camel_field_name, field_name) + + template_vars = { + 'Name': event_name, + 'FullName': full_name, + 'Type': type, + 'Fields': fields.rstrip('\n'), + 'ToString': to_string[:-2], + 'Getters': getters.rstrip('\n') + } + + template_generator.parse_template(input, "{0}/{1}.php".format(output_directory, event_name), template_vars) + +for name, event in template_generator.all_game_events.iteritems(): + current_path = os.path.dirname(os.path.realpath(__file__)) + output_directory = current_path + "/../src/Event/Game" + + if not os.path.exists(output_directory): + os.makedirs(output_directory) + + parse_event_template(event, 'Game', 'NNet.Game.S', current_path + "/Template/Event.php", output_directory) + +for name, event in template_generator.all_message_events.iteritems(): + current_path = os.path.dirname(os.path.realpath(__file__)) + output_directory = current_path + "/../src/Event/Message" + + if not os.path.exists(output_directory): + os.makedirs(output_directory) + + parse_event_template(event, 'Message', 'NNet.Game.S', current_path + "/Template/Event.php", output_directory) + +for name, event in template_generator.all_tracker_events.iteritems(): + current_path = os.path.dirname(os.path.realpath(__file__)) + output_directory = current_path + "/../src/Event/Tracker" + + if not os.path.exists(output_directory): + os.makedirs(output_directory) + + parse_event_template(event, 'Tracker', 'NNet.Replay.Tracker.S', current_path + "/Template/Event.php", output_directory) + diff --git a/bin/template.py b/bin/template.py new file mode 100644 index 0000000..6af3243 --- /dev/null +++ b/bin/template.py @@ -0,0 +1,67 @@ + + +all_game_events = {} +def generate_game_event_template(protocol): + generated = "[\n" + for event in protocol.game_event_types.iteritems(): + name = event[1][1][11:] + all_game_events[name] = {} + all_game_events[name]["event"] = event + all_game_events[name]["type"] = protocol.typeinfos[event[1][0]] + template_vars = { + 'ID': event[0], + 'Name': name, + 'Node': event[1][0], + } + generated += "\t{ID} => {Node},\n".format(**template_vars) + generated += "]" + return generated + +all_message_events = {} +def generate_message_event_template(protocol): + generated = "[\n" + for event in protocol.message_event_types.iteritems(): + name = event[1][1][11:] + all_message_events[name] = {} + all_message_events[name]["event"] = event + all_message_events[name]["type"] = protocol.typeinfos[event[1][0]] + template_vars = { + 'ID': event[0], + 'Name': name, + 'Node': event[1][0], + } + generated += "\t{ID} => {Node},\n".format(**template_vars) + generated += "]" + return generated + +all_tracker_events = {} +def generate_tracker_event_template(protocol): + if hasattr(protocol, 'tracker_event_types'): + generated = "[\n" + for event in protocol.tracker_event_types.iteritems(): + name = event[1][1][11:] + all_tracker_events[name] = {} + all_tracker_events[name]["event"] = event + all_tracker_events[name]["type"] = protocol.typeinfos[event[1][0]] + template_vars = { + 'ID': event[0], + 'Name': name, + 'Node': event[1][0], + } + generated += "\t{ID} => {Node},\n".format(**template_vars) + generated += "]" + return generated + else: + return "NULL" + + + +def parse_template(input_file, output_file, vars): + print(output_file) + with open(input_file, 'r') as ftemp: + templateString = ftemp.read() + with open(output_file, 'w') as f: + f.write(templateString.format(**vars)) + +def capital_first_letter(s): + return s[0].upper() + s[1:] diff --git a/bin/tree.py b/bin/tree.py new file mode 100644 index 0000000..d1a0d92 --- /dev/null +++ b/bin/tree.py @@ -0,0 +1,111 @@ + +def generate_integer(bounds, className): + generated = "new IntegerNode({0}, {1}".format(bounds[0][1], bounds[0][0]) + if className: + generated += ", '{0}'".format(className) + return generated + ")" + +def generate_choice(tagger, choices, className): + generated = "new ChoiceNode(new IntegerNode({0}), [\n".format(tagger[1]) + for index, choice in choices.iteritems(): + generated += "\t{tag} => {index},\n".format(tag = index, index = choice[1]) + generated += "]" + if className: + generated += ", '{0}'".format(className) + return generated + ")" + +def generate_struct(members, className): + generated = "new StructNode([\n" + for member in members[0]: + if member: + member_name = member[0] + if member_name.startswith('m_'): + member_name = member[0][2:] + generated += "\t\"{name}\" => array('type' => {index}, 'tag' => {tag}),\n".format(name = member_name, index = member[1], tag = member[2]) + + generated += "]" + if className: + generated += ",\n\t'{0}'\n".format(className) + generated += ")" + return generated + +def generate_optional(bounds, className): + generated = "new OptionalNode({0}".format(bounds[0]) + if className: + generated += ", '{0}'".format(className) + return generated + ")" + +def generate_blob(bounds, className): + generated = "new BlobNode(new IntegerNode({0}, {1})".format(bounds[0][1], bounds[0][0]) + if className: + generated += ", '{0}'".format(className) + return generated + ")" + +def generate_bool(className): + generated = "new BooleanNode(" + if className: + generated += ", '{0}'".format(className) + return generated + ")" + +def generate_array(bounds, className): + generated = "new ArrayNode(\n" + generated += "\tnew IntegerNode({size}, {constant}),\n".format(size=bounds[0][1], constant=bounds[0][0]) + generated += "\t{0}".format(bounds[1]) + + if className: + generated += ",\n\t'{0}'\n".format(className) + + generated += "\n)" + return generated + +def generate_bitarray(bounds, className): + generated = "new BitArrayNode(\n" + generated += "\tnew IntegerNode({size}, {constant})\n".format(size=bounds[0][1], constant=bounds[0][0]) + if className: + generated += ",\n\t'{0}'".format(className) + generated += ")" + return generated + +def generate_null(className): + return "new NullNode()" + +def generate_fourcc(className): + generated = "new FourCCNode(" + if className: + generated += ", '{0}'".format(className) + generated += ")" + return generated + +def generate_tree(protocol, classes): + nodes = [] + for index, typeinfo in enumerate(protocol.typeinfos): + if typeinfo[0] == "_int": + generated = generate_integer(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_choice": + generated = generate_choice(typeinfo[1][0], typeinfo[1][1], classes.get(index)) + elif typeinfo[0] == "_struct": + generated = generate_struct(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_optional": + generated = generate_optional(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_blob": + generated = generate_blob(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_bool": + generated = generate_bool(classes.get(index)) + elif typeinfo[0] == "_array": + generated = generate_array(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_bitarray": + generated = generate_bitarray(typeinfo[1], classes.get(index)) + elif typeinfo[0] == "_fourcc": + generated = generate_fourcc(classes.get(index)) + elif typeinfo[0] == "_null": + generated = generate_null(classes.get(index)) + else: + print "Node %s unknown!" % typeinfo[0] + exit() + nodes.append(generated) + + tree = "[\n" + for index, node in enumerate(nodes): + tree += "{index} => {code},\n".format(index=index, code = node) + tree += "]\n" + return tree diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..7407865 --- /dev/null +++ b/composer.json @@ -0,0 +1,31 @@ +{ + "name": "rogiel/star-replay", + "type": "library", + "description": "A StarCraft II replay parser in PHP", + "keywords": ["StarCraft II", "Replay parsing", "Gaming", "Blizzard"], + "homepage": "https://rogiel.com/portfolio/star-replay", + "license": "BSD-2.0", + "authors": [{ + "name": "Rogiel Sulzbach", + "email": "rogiel@rogiel.com", + "homepage": "https://rogiel.com" + }], + "autoload": { + "psr-4": { + "Rogiel\\StarReplay\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Rogiel\\StarReplay\\Tests\\": "tests/" + } + }, + "require": { + "php": "^5.5.0", + "rogiel/mpq": "dev-master", + "ocramius/generated-hydrator": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..56abefd --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,37 @@ + + + + + + + ./tests + + + + + + /src + + + + \ No newline at end of file diff --git a/s2protocol b/s2protocol new file mode 160000 index 0000000..d9973aa --- /dev/null +++ b/s2protocol @@ -0,0 +1 @@ +Subproject commit d9973aacd000a18a98a91fc6a8c66cbf201940cb diff --git a/src/Entity/AbstractEntity.php b/src/Entity/AbstractEntity.php new file mode 100644 index 0000000..3f20e43 --- /dev/null +++ b/src/Entity/AbstractEntity.php @@ -0,0 +1,34 @@ +a; + } + + /** + * @return mixed + */ + public function getRed() { + return $this->r; + } + + /** + * @return mixed + */ + public function getGreen() { + return $this->g; + } + + /** + * @return mixed + */ + public function getBlue() { + return $this->b; + } + + public function toHTML() { + $r = intval($this->r); + $g = intval($this->g); + $b = intval($this->b); + $r = dechex($r<0?0:($r>255?255:$r)); + $g = dechex($g<0?0:($g>255?255:$g)); + $b = dechex($b<0?0:($b>255?255:$b)); + $color = (strlen($r) < 2?'0':'').$r; + $color .= (strlen($g) < 2?'0':'').$g; + $color .= (strlen($b) < 2?'0':'').$b; + $color ='#'.$color; + return $color; + } + + public function __toString() { + return $this->toHTML(); + } + + +} \ No newline at end of file diff --git a/src/Entity/Entity.php b/src/Entity/Entity.php new file mode 100644 index 0000000..ce2aff3 --- /dev/null +++ b/src/Entity/Entity.php @@ -0,0 +1,34 @@ +name; + } + + /** + * @return Toon + */ + public function getToon() { + return $this->toon; + } + + /** + * @return string + */ + public function getRace() { + return $this->race; + } + + /** + * @return Color + */ + public function getColor() { + return $this->color; + } + + /** + * @return int + */ + public function getControl() { + return $this->control; + } + + /** + * @return int + */ + public function getTeamId() { + return $this->teamId; + } + + /** + * @return int + */ + public function getHandicap() { + return $this->handicap; + } + + /** + * @return boolean + */ + public function isObserve() { + return $this->observe; + } + + /** + * @return boolean + */ + public function isResult() { + return $this->result; + } + + /** + * @return int + */ + public function getWorkingSetSlotId() { + return $this->workingSetSlotId; + } + + /** + * @return mixed + */ + public function getHero() { + return $this->hero; + } + + public function __toString() { + return "Player{ name = $this->name, race = $this->race, color = $this->color, teamID = $this->teamId }"; + } + +} \ No newline at end of file diff --git a/src/Entity/Point.php b/src/Entity/Point.php new file mode 100644 index 0000000..c293142 --- /dev/null +++ b/src/Entity/Point.php @@ -0,0 +1,67 @@ +x; + } + + /** + * @return mixed + */ + public function getY() { + return $this->y; + } + + /** + * @return mixed + */ + public function getZ() { + return $this->z; + } + + public function __toString() { + if($this->z === NULL) { + return "Point{ x = $this->x, y = $this->y }"; + } else { + return "Point{ x = $this->x, y = $this->y, z = $this->z }"; + } + } + +} \ No newline at end of file diff --git a/src/Entity/Thumbnail.php b/src/Entity/Thumbnail.php new file mode 100644 index 0000000..162bd69 --- /dev/null +++ b/src/Entity/Thumbnail.php @@ -0,0 +1,46 @@ +file; + } + +} \ No newline at end of file diff --git a/src/Entity/Toon.php b/src/Entity/Toon.php new file mode 100644 index 0000000..4686020 --- /dev/null +++ b/src/Entity/Toon.php @@ -0,0 +1,41 @@ +header; + } + + /** + * @param Header $header + */ + public function setHeader($header) { + $this->header = $header; + } +} \ No newline at end of file diff --git a/src/Event/Event.php b/src/Event/Event.php new file mode 100644 index 0000000..e1ccf51 --- /dev/null +++ b/src/Event/Event.php @@ -0,0 +1,41 @@ +getEventName()."{ beacon = $this->beacon, ally = $this->ally, flags = $this->flags, build = $this->build, targetUnitTag = $this->targetUnitTag, targetUnitSnapshotUnitLink = $this->targetUnitSnapshotUnitLink, targetUnitSnapshotUpkeepPlayerId = $this->targetUnitSnapshotUpkeepPlayerId, targetUnitSnapshotControlPlayerId = $this->targetUnitSnapshotControlPlayerId, targetPoint = $this->targetPoint }"; + } + + /** @return integer */ + public function getBeacon() { return $this->beacon; } + + /** @return integer */ + public function getAlly() { return $this->ally; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + + /** @return integer */ + public function getBuild() { return $this->build; } + + /** @return integer */ + public function getTargetUnitTag() { return $this->targetUnitTag; } + + /** @return integer */ + public function getTargetUnitSnapshotUnitLink() { return $this->targetUnitSnapshotUnitLink; } + + /** @return integer */ + public function getTargetUnitSnapshotUpkeepPlayerId() { return $this->targetUnitSnapshotUpkeepPlayerId; } + + /** @return integer */ + public function getTargetUnitSnapshotControlPlayerId() { return $this->targetUnitSnapshotControlPlayerId; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getTargetPoint() { return $this->targetPoint; } + +} \ No newline at end of file diff --git a/src/Event/Game/AbstractGameEvent.php b/src/Event/Game/AbstractGameEvent.php new file mode 100644 index 0000000..3fb79aa --- /dev/null +++ b/src/Event/Game/AbstractGameEvent.php @@ -0,0 +1,35 @@ +getEventName()."{ achievementLink = $this->achievementLink }"; + } + + /** @return integer */ + public function getAchievementLink() { return $this->achievementLink; } + +} \ No newline at end of file diff --git a/src/Event/Game/AddAbsoluteGameSpeedEvent.php b/src/Event/Game/AddAbsoluteGameSpeedEvent.php new file mode 100644 index 0000000..c5cecb0 --- /dev/null +++ b/src/Event/Game/AddAbsoluteGameSpeedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ delta = $this->delta }"; + } + + /** @return integer */ + public function getDelta() { return $this->delta; } + +} \ No newline at end of file diff --git a/src/Event/Game/AllianceEvent.php b/src/Event/Game/AllianceEvent.php new file mode 100644 index 0000000..b2a41b0 --- /dev/null +++ b/src/Event/Game/AllianceEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ alliance = $this->alliance, control = $this->control }"; + } + + /** @return integer */ + public function getAlliance() { return $this->alliance; } + + /** @return integer */ + public function getControl() { return $this->control; } + +} \ No newline at end of file diff --git a/src/Event/Game/BankFileEvent.php b/src/Event/Game/BankFileEvent.php new file mode 100644 index 0000000..568da32 --- /dev/null +++ b/src/Event/Game/BankFileEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ name = $this->name }"; + } + + /** @return string */ + public function getName() { return $this->name; } + +} \ No newline at end of file diff --git a/src/Event/Game/BankKeyEvent.php b/src/Event/Game/BankKeyEvent.php new file mode 100644 index 0000000..9fdb222 --- /dev/null +++ b/src/Event/Game/BankKeyEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ name = $this->name, type = $this->type, data = $this->data }"; + } + + /** @return string */ + public function getName() { return $this->name; } + + /** @return integer */ + public function getType() { return $this->type; } + + /** @return string */ + public function getData() { return $this->data; } + +} \ No newline at end of file diff --git a/src/Event/Game/BankSectionEvent.php b/src/Event/Game/BankSectionEvent.php new file mode 100644 index 0000000..c60e5f8 --- /dev/null +++ b/src/Event/Game/BankSectionEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ name = $this->name }"; + } + + /** @return string */ + public function getName() { return $this->name; } + +} \ No newline at end of file diff --git a/src/Event/Game/BankSignatureEvent.php b/src/Event/Game/BankSignatureEvent.php new file mode 100644 index 0000000..70275bf --- /dev/null +++ b/src/Event/Game/BankSignatureEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ signature = $this->signature, toonHandle = $this->toonHandle }"; + } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\BankSignature */ + public function getSignature() { return $this->signature; } + + /** @return string */ + public function getToonHandle() { return $this->toonHandle; } + +} \ No newline at end of file diff --git a/src/Event/Game/BankValueEvent.php b/src/Event/Game/BankValueEvent.php new file mode 100644 index 0000000..87df30f --- /dev/null +++ b/src/Event/Game/BankValueEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ type = $this->type, name = $this->name, data = $this->data }"; + } + + /** @return integer */ + public function getType() { return $this->type; } + + /** @return string */ + public function getName() { return $this->name; } + + /** @return string */ + public function getData() { return $this->data; } + +} \ No newline at end of file diff --git a/src/Event/Game/BroadcastCheatEvent.php b/src/Event/Game/BroadcastCheatEvent.php new file mode 100644 index 0000000..6f3147e --- /dev/null +++ b/src/Event/Game/BroadcastCheatEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ verb = $this->verb, arguments = $this->arguments }"; + } + + /** @return string */ + public function getVerb() { return $this->verb; } + + /** @return string */ + public function getArguments() { return $this->arguments; } + +} \ No newline at end of file diff --git a/src/Event/Game/CameraSaveEvent.php b/src/Event/Game/CameraSaveEvent.php new file mode 100644 index 0000000..ba967cb --- /dev/null +++ b/src/Event/Game/CameraSaveEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ which = $this->which, target = $this->target }"; + } + + /** @return integer */ + public function getWhich() { return $this->which; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getTarget() { return $this->target; } + +} \ No newline at end of file diff --git a/src/Event/Game/CameraUpdateEvent.php b/src/Event/Game/CameraUpdateEvent.php new file mode 100644 index 0000000..e9df27d --- /dev/null +++ b/src/Event/Game/CameraUpdateEvent.php @@ -0,0 +1,83 @@ +getEventName()."{ target = $this->target, distance = $this->distance, pitch = $this->pitch, yaw = $this->yaw, reason = $this->reason, follow = $this->follow }"; + } + + /** @return null|\Rogiel\StarReplay\Entity\Point */ + public function getTarget() { return $this->target; } + + /** @return null|integer */ + public function getDistance() { return $this->distance; } + + /** @return null|integer */ + public function getPitch() { return $this->pitch; } + + /** @return null|integer */ + public function getYaw() { return $this->yaw; } + + /** @return null|integer */ + public function getReason() { return $this->reason; } + + /** @return boolean */ + public function getFollow() { return $this->follow; } + +} \ No newline at end of file diff --git a/src/Event/Game/CatalogModifyEvent.php b/src/Event/Game/CatalogModifyEvent.php new file mode 100644 index 0000000..940ee1b --- /dev/null +++ b/src/Event/Game/CatalogModifyEvent.php @@ -0,0 +1,71 @@ +getEventName()."{ catalog = $this->catalog, entry = $this->entry, field = $this->field, value = $this->value }"; + } + + /** @return integer */ + public function getCatalog() { return $this->catalog; } + + /** @return integer */ + public function getEntry() { return $this->entry; } + + /** @return string */ + public function getField() { return $this->field; } + + /** @return string */ + public function getValue() { return $this->value; } + +} \ No newline at end of file diff --git a/src/Event/Game/CmdEvent.php b/src/Event/Game/CmdEvent.php new file mode 100644 index 0000000..757bb18 --- /dev/null +++ b/src/Event/Game/CmdEvent.php @@ -0,0 +1,83 @@ +getEventName()."{ cmdFlags = $this->cmdFlags, abil = $this->abil, data = $this->data, sequence = $this->sequence, otherUnit = $this->otherUnit, unitGroup = $this->unitGroup }"; + } + + /** @return integer */ + public function getCmdFlags() { return $this->cmdFlags; } + + /** @return null|\Rogiel\StarReplay\Event\Game\Entity\Ability */ + public function getAbil() { return $this->abil; } + + /** @return null|\Rogiel\StarReplay\Entity\Point|\Rogiel\StarReplay\Event\Game\Entity\TargetUnit|integer */ + public function getData() { return $this->data; } + + /** @return integer */ + public function getSequence() { return $this->sequence; } + + /** @return null|integer */ + public function getOtherUnit() { return $this->otherUnit; } + + /** @return null|integer */ + public function getUnitGroup() { return $this->unitGroup; } + +} \ No newline at end of file diff --git a/src/Event/Game/CmdUpdateTargetPointEvent.php b/src/Event/Game/CmdUpdateTargetPointEvent.php new file mode 100644 index 0000000..d3a610c --- /dev/null +++ b/src/Event/Game/CmdUpdateTargetPointEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ target = $this->target }"; + } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getTarget() { return $this->target; } + +} \ No newline at end of file diff --git a/src/Event/Game/CmdUpdateTargetUnitEvent.php b/src/Event/Game/CmdUpdateTargetUnitEvent.php new file mode 100644 index 0000000..80495b1 --- /dev/null +++ b/src/Event/Game/CmdUpdateTargetUnitEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ target = $this->target }"; + } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\TargetUnit */ + public function getTarget() { return $this->target; } + +} \ No newline at end of file diff --git a/src/Event/Game/CommandManagerResetEvent.php b/src/Event/Game/CommandManagerResetEvent.php new file mode 100644 index 0000000..6f283b2 --- /dev/null +++ b/src/Event/Game/CommandManagerResetEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ sequence = $this->sequence }"; + } + + /** @return integer */ + public function getSequence() { return $this->sequence; } + +} \ No newline at end of file diff --git a/src/Event/Game/CommandManagerStateEvent.php b/src/Event/Game/CommandManagerStateEvent.php new file mode 100644 index 0000000..0a947ce --- /dev/null +++ b/src/Event/Game/CommandManagerStateEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ state = $this->state, sequence = $this->sequence }"; + } + + /** @return integer */ + public function getState() { return $this->state; } + + /** @return null|integer */ + public function getSequence() { return $this->sequence; } + +} \ No newline at end of file diff --git a/src/Event/Game/ControlGroupUpdateEvent.php b/src/Event/Game/ControlGroupUpdateEvent.php new file mode 100644 index 0000000..187ca26 --- /dev/null +++ b/src/Event/Game/ControlGroupUpdateEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ controlGroupIndex = $this->controlGroupIndex, controlGroupUpdate = $this->controlGroupUpdate, mask = $this->mask }"; + } + + /** @return integer */ + public function getControlGroupIndex() { return $this->controlGroupIndex; } + + /** @return integer */ + public function getControlGroupUpdate() { return $this->controlGroupUpdate; } + + /** @return null|\Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask|\Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices|\Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices */ + public function getMask() { return $this->mask; } + +} \ No newline at end of file diff --git a/src/Event/Game/DecrementGameTimeRemainingEvent.php b/src/Event/Game/DecrementGameTimeRemainingEvent.php new file mode 100644 index 0000000..e58a36f --- /dev/null +++ b/src/Event/Game/DecrementGameTimeRemainingEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ decrementMs = $this->decrementMs }"; + } + + /** @return integer */ + public function getDecrementMs() { return $this->decrementMs; } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/Ability.php b/src/Event/Game/Entity/Ability.php new file mode 100644 index 0000000..d19e826 --- /dev/null +++ b/src/Event/Game/Entity/Ability.php @@ -0,0 +1,63 @@ +abilLink; + } + + /** + * @return mixed + */ + public function getAbilCmdIndex() { + return $this->abilCmdIndex; + } + + /** + * @return mixed + */ + public function getAbilCmdData() { + return $this->abilCmdData; + } + + public function __toString() { + return "Ability { abilLink = $this->abilLink, getAbilCmdIndex = $this->abilCmdIndex, getAbilCmdData = $this->abilCmdData }"; + } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/BankSignature.php b/src/Event/Game/Entity/BankSignature.php new file mode 100644 index 0000000..ddc560c --- /dev/null +++ b/src/Event/Game/Entity/BankSignature.php @@ -0,0 +1,54 @@ +signature = $signature; + } + + /** + * @return mixed + */ + public function getSignature() { + return $this->signature; + } + + public function __toString() { + return join('', array_map('dechex', $this->signature)); + } +} \ No newline at end of file diff --git a/src/Event/Game/Entity/ControlGroupUpdateMask.php b/src/Event/Game/Entity/ControlGroupUpdateMask.php new file mode 100644 index 0000000..a0bd75f --- /dev/null +++ b/src/Event/Game/Entity/ControlGroupUpdateMask.php @@ -0,0 +1,49 @@ +mask = $mask; + } + + public function __toString() { + return "[ ". decbin($this->mask) ." ]"; + } + + +} diff --git a/src/Event/Game/Entity/ControlGroupUpdateOneIndices.php b/src/Event/Game/Entity/ControlGroupUpdateOneIndices.php new file mode 100644 index 0000000..d7645e6 --- /dev/null +++ b/src/Event/Game/Entity/ControlGroupUpdateOneIndices.php @@ -0,0 +1,48 @@ +mask = $mask; + } + + public function __toString() { + return "[ ". join(', ', $this->mask) ." ]"; + } + +} diff --git a/src/Event/Game/Entity/ControlGroupUpdateZeroIndices.php b/src/Event/Game/Entity/ControlGroupUpdateZeroIndices.php new file mode 100644 index 0000000..497816d --- /dev/null +++ b/src/Event/Game/Entity/ControlGroupUpdateZeroIndices.php @@ -0,0 +1,48 @@ +mask = $mask; + } + + public function __toString() { + return "[ ". join(', ', $this->mask) ." ]"; + } + +} diff --git a/src/Event/Game/Entity/ResourceRequest.php b/src/Event/Game/Entity/ResourceRequest.php new file mode 100644 index 0000000..bfb8167 --- /dev/null +++ b/src/Event/Game/Entity/ResourceRequest.php @@ -0,0 +1,76 @@ +resources = $resources; + } + + /** + * @return mixed + */ + public function getResources() { + return $this->resources; + } + + public function getMinerals() { + return $this->resources[self::MINERALS]; + } + + public function getVespene() { + return $this->resources[self::VESPENE]; + } + + public function getTerrazine() { + return $this->resources[self::TERRAZINE]; + } + + public function getCustom() { + return $this->resources[self::CUSTOM]; + } + + public function __toString() { + return "ResourceRequest{ minerals = ".$this->getMinerals().", vespene = ".$this->getVespene().", terrazine = ".$this->getTerrazine().", custom = ".$this->getCustom()." }"; + } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/SelectionDelta.php b/src/Event/Game/Entity/SelectionDelta.php new file mode 100644 index 0000000..17be571 --- /dev/null +++ b/src/Event/Game/Entity/SelectionDelta.php @@ -0,0 +1,75 @@ +subgroupIndex; + } + + /** + * @return mixed + */ + public function getRemoveMask() { + return $this->removeMask; + } + + /** + * @return mixed + */ + public function getAddSubgroups() { + return $this->addSubgroups; + } + + /** + * @return mixed + */ + public function getAddUnitTags() { + return $this->addUnitTags; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function __toString() { + return "SelectionDelta{ subgroupIndex = $this->subgroupIndex, removeMask = $this->removeMask, addSubgroups = " . join(', ', $this->addSubgroups) . ", addUnitTags = ".join(', ', $this->addUnitTags)." }"; + } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/SoundLengthSync.php b/src/Event/Game/Entity/SoundLengthSync.php new file mode 100644 index 0000000..dd19da7 --- /dev/null +++ b/src/Event/Game/Entity/SoundLengthSync.php @@ -0,0 +1,60 @@ +soundHash; + } + + /** + * @return mixed + */ + public function getLength() { + return $this->length; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function __toString() { + return 'SoundLengthSync { soundHash = [ '.join(', ', $this->soundHash) . + ' ], length = '.join(', ', $this->length).' }'; + } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/SubgroupUnit.php b/src/Event/Game/Entity/SubgroupUnit.php new file mode 100644 index 0000000..51afa32 --- /dev/null +++ b/src/Event/Game/Entity/SubgroupUnit.php @@ -0,0 +1,71 @@ +unitLink; + } + + /** + * @return mixed + */ + public function getSubgroupPriority() { + return $this->subgroupPriority; + } + + /** + * @return mixed + */ + public function getIntraSubgroupPriority() { + return $this->intraSubgroupPriority; + } + + /** + * @return mixed + */ + public function getCount() { + return $this->count; + } + + public function __toString() { + return "SubgroupUnit{ unitLink = $this->unitLink, subgroupPriority = $this->subgroupPriority, intraSubgroupPriority = $this->intraSubgroupPriority, count = $this->count }"; + } + +} \ No newline at end of file diff --git a/src/Event/Game/Entity/TargetUnit.php b/src/Event/Game/Entity/TargetUnit.php new file mode 100644 index 0000000..187f945 --- /dev/null +++ b/src/Event/Game/Entity/TargetUnit.php @@ -0,0 +1,96 @@ +targetUnitFlags; + } + + /** + * @return mixed + */ + public function getTimer() { + return $this->timer; + } + + /** + * @return mixed + */ + public function getTag() { + return $this->tag; + } + + /** + * @return mixed + */ + public function getSnapshotUnitLink() { + return $this->snapshotUnitLink; + } + + /** + * @return mixed + */ + public function getSnapshotControlPlayerId() { + return $this->snapshotControlPlayerId; + } + + /** + * @return mixed + */ + public function getSnapshotUpkeepPlayerId() { + return $this->snapshotUpkeepPlayerId; + } + + /** + * @return mixed + */ + public function getSnapshotPoint() { + return $this->snapshotPoint; + } + + public function __toString() { + return "TargetUnit{ targetUnitFlags = $this->targetUnitFlags, timer = $this->timer, tag = $this->tag, snapshotUnitLink = $this->snapshotUnitLink, snapshotControlPlayerId = $this->snapshotControlPlayerId, snapshotUpkeepPlayerId = $this->snapshotUpkeepPlayerId, snapshotPoint = $this->snapshotPoint }"; + } + + +} \ No newline at end of file diff --git a/src/Event/Game/GameCheatEvent.php b/src/Event/Game/GameCheatEvent.php new file mode 100644 index 0000000..6a2b2bb --- /dev/null +++ b/src/Event/Game/GameCheatEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ data = $this->data }"; + } + + /** @return struct */ + public function getData() { return $this->data; } + +} \ No newline at end of file diff --git a/src/Event/Game/GameEvent.php b/src/Event/Game/GameEvent.php new file mode 100644 index 0000000..b6c1595 --- /dev/null +++ b/src/Event/Game/GameEvent.php @@ -0,0 +1,35 @@ +getEventName()."{ observe = $this->observe, name = $this->name, toonHandle = $this->toonHandle, clanTag = $this->clanTag, clanLogo = $this->clanLogo, hijack = $this->hijack, hijackCloneGameUserId = $this->hijackCloneGameUserId }"; + } + + /** @return integer */ + public function getObserve() { return $this->observe; } + + /** @return string */ + public function getName() { return $this->name; } + + /** @return null|string */ + public function getToonHandle() { return $this->toonHandle; } + + /** @return null|string */ + public function getClanTag() { return $this->clanTag; } + + /** @return null|string */ + public function getClanLogo() { return $this->clanLogo; } + + /** @return boolean */ + public function getHijack() { return $this->hijack; } + + /** @return null|integer */ + public function getHijackCloneGameUserId() { return $this->hijackCloneGameUserId; } + +} \ No newline at end of file diff --git a/src/Event/Game/GameUserLeaveEvent.php b/src/Event/Game/GameUserLeaveEvent.php new file mode 100644 index 0000000..98d84ff --- /dev/null +++ b/src/Event/Game/GameUserLeaveEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ leaveReason = $this->leaveReason }"; + } + + /** @return integer */ + public function getLeaveReason() { return $this->leaveReason; } + +} \ No newline at end of file diff --git a/src/Event/Game/HeroTalentTreeSelectedEvent.php b/src/Event/Game/HeroTalentTreeSelectedEvent.php new file mode 100644 index 0000000..907c0d1 --- /dev/null +++ b/src/Event/Game/HeroTalentTreeSelectedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ index = $this->index }"; + } + + /** @return integer */ + public function getIndex() { return $this->index; } + +} \ No newline at end of file diff --git a/src/Event/Game/HeroTalentTreeSelectionPanelToggledEvent.php b/src/Event/Game/HeroTalentTreeSelectionPanelToggledEvent.php new file mode 100644 index 0000000..a39d49e --- /dev/null +++ b/src/Event/Game/HeroTalentTreeSelectionPanelToggledEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ shown = $this->shown }"; + } + + /** @return boolean */ + public function getShown() { return $this->shown; } + +} \ No newline at end of file diff --git a/src/Event/Game/HijackReplayGameEvent.php b/src/Event/Game/HijackReplayGameEvent.php new file mode 100644 index 0000000..10b6aa6 --- /dev/null +++ b/src/Event/Game/HijackReplayGameEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ userInfos = $this->userInfos, method = $this->method }"; + } + + /** @return array */ + public function getUserInfos() { return $this->userInfos; } + + /** @return integer */ + public function getMethod() { return $this->method; } + +} \ No newline at end of file diff --git a/src/Event/Game/LagMessageEvent.php b/src/Event/Game/LagMessageEvent.php new file mode 100644 index 0000000..744bed5 --- /dev/null +++ b/src/Event/Game/LagMessageEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ laggingPlayerId = $this->laggingPlayerId }"; + } + + /** @return integer */ + public function getLaggingPlayerId() { return $this->laggingPlayerId; } + +} \ No newline at end of file diff --git a/src/Event/Game/LoadGameDoneEvent.php b/src/Event/Game/LoadGameDoneEvent.php new file mode 100644 index 0000000..6920ea3 --- /dev/null +++ b/src/Event/Game/LoadGameDoneEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/PlayerLeaveEvent.php b/src/Event/Game/PlayerLeaveEvent.php new file mode 100644 index 0000000..d40f0e2 --- /dev/null +++ b/src/Event/Game/PlayerLeaveEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/ResourceRequestCancelEvent.php b/src/Event/Game/ResourceRequestCancelEvent.php new file mode 100644 index 0000000..88eb5d3 --- /dev/null +++ b/src/Event/Game/ResourceRequestCancelEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ cancelRequestId = $this->cancelRequestId }"; + } + + /** @return integer */ + public function getCancelRequestId() { return $this->cancelRequestId; } + +} \ No newline at end of file diff --git a/src/Event/Game/ResourceRequestEvent.php b/src/Event/Game/ResourceRequestEvent.php new file mode 100644 index 0000000..8b19ce2 --- /dev/null +++ b/src/Event/Game/ResourceRequestEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ resources = $this->resources }"; + } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\ResourceRequest */ + public function getResources() { return $this->resources; } + +} \ No newline at end of file diff --git a/src/Event/Game/ResourceRequestFulfillEvent.php b/src/Event/Game/ResourceRequestFulfillEvent.php new file mode 100644 index 0000000..068894d --- /dev/null +++ b/src/Event/Game/ResourceRequestFulfillEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ fulfillRequestId = $this->fulfillRequestId }"; + } + + /** @return integer */ + public function getFulfillRequestId() { return $this->fulfillRequestId; } + +} \ No newline at end of file diff --git a/src/Event/Game/ResourceTradeEvent.php b/src/Event/Game/ResourceTradeEvent.php new file mode 100644 index 0000000..8dfa7ba --- /dev/null +++ b/src/Event/Game/ResourceTradeEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ recipientId = $this->recipientId, resources = $this->resources }"; + } + + /** @return integer */ + public function getRecipientId() { return $this->recipientId; } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\ResourceRequest */ + public function getResources() { return $this->resources; } + +} \ No newline at end of file diff --git a/src/Event/Game/SaveGameDoneEvent.php b/src/Event/Game/SaveGameDoneEvent.php new file mode 100644 index 0000000..486c8db --- /dev/null +++ b/src/Event/Game/SaveGameDoneEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/SaveGameEvent.php b/src/Event/Game/SaveGameEvent.php new file mode 100644 index 0000000..ee538e9 --- /dev/null +++ b/src/Event/Game/SaveGameEvent.php @@ -0,0 +1,77 @@ +getEventName()."{ fileName = $this->fileName, automatic = $this->automatic, overwrite = $this->overwrite, name = $this->name, description = $this->description }"; + } + + /** @return string */ + public function getFileName() { return $this->fileName; } + + /** @return boolean */ + public function getAutomatic() { return $this->automatic; } + + /** @return boolean */ + public function getOverwrite() { return $this->overwrite; } + + /** @return string */ + public function getName() { return $this->name; } + + /** @return string */ + public function getDescription() { return $this->description; } + +} \ No newline at end of file diff --git a/src/Event/Game/SelectionDeltaEvent.php b/src/Event/Game/SelectionDeltaEvent.php new file mode 100644 index 0000000..b5c721d --- /dev/null +++ b/src/Event/Game/SelectionDeltaEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ controlGroupId = $this->controlGroupId, delta = $this->delta }"; + } + + /** @return integer */ + public function getControlGroupId() { return $this->controlGroupId; } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\SelectionDelta */ + public function getDelta() { return $this->delta; } + +} \ No newline at end of file diff --git a/src/Event/Game/SelectionSyncCheckEvent.php b/src/Event/Game/SelectionSyncCheckEvent.php new file mode 100644 index 0000000..aa27dbd --- /dev/null +++ b/src/Event/Game/SelectionSyncCheckEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ controlGroupId = $this->controlGroupId, selectionSyncData = $this->selectionSyncData }"; + } + + /** @return integer */ + public function getControlGroupId() { return $this->controlGroupId; } + + /** @return struct */ + public function getSelectionSyncData() { return $this->selectionSyncData; } + +} \ No newline at end of file diff --git a/src/Event/Game/SetAbsoluteGameSpeedEvent.php b/src/Event/Game/SetAbsoluteGameSpeedEvent.php new file mode 100644 index 0000000..36019c7 --- /dev/null +++ b/src/Event/Game/SetAbsoluteGameSpeedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ speed = $this->speed }"; + } + + /** @return integer */ + public function getSpeed() { return $this->speed; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerAbortMissionEvent.php b/src/Event/Game/TriggerAbortMissionEvent.php new file mode 100644 index 0000000..7117aa0 --- /dev/null +++ b/src/Event/Game/TriggerAbortMissionEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerAnimLengthQueryByNameEvent.php b/src/Event/Game/TriggerAnimLengthQueryByNameEvent.php new file mode 100644 index 0000000..a0c4029 --- /dev/null +++ b/src/Event/Game/TriggerAnimLengthQueryByNameEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ queryId = $this->queryId, lengthMs = $this->lengthMs, finishGameLoop = $this->finishGameLoop }"; + } + + /** @return integer */ + public function getQueryId() { return $this->queryId; } + + /** @return integer */ + public function getLengthMs() { return $this->lengthMs; } + + /** @return integer */ + public function getFinishGameLoop() { return $this->finishGameLoop; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerAnimLengthQueryByPropsEvent.php b/src/Event/Game/TriggerAnimLengthQueryByPropsEvent.php new file mode 100644 index 0000000..c871c50 --- /dev/null +++ b/src/Event/Game/TriggerAnimLengthQueryByPropsEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ queryId = $this->queryId, lengthMs = $this->lengthMs }"; + } + + /** @return integer */ + public function getQueryId() { return $this->queryId; } + + /** @return integer */ + public function getLengthMs() { return $this->lengthMs; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerAnimOffsetEvent.php b/src/Event/Game/TriggerAnimOffsetEvent.php new file mode 100644 index 0000000..98e2378 --- /dev/null +++ b/src/Event/Game/TriggerAnimOffsetEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ animWaitQueryId = $this->animWaitQueryId }"; + } + + /** @return integer */ + public function getAnimWaitQueryId() { return $this->animWaitQueryId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerBattleReportPanelExitEvent.php b/src/Event/Game/TriggerBattleReportPanelExitEvent.php new file mode 100644 index 0000000..9ec4485 --- /dev/null +++ b/src/Event/Game/TriggerBattleReportPanelExitEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerBattleReportPanelPlayMissionEvent.php b/src/Event/Game/TriggerBattleReportPanelPlayMissionEvent.php new file mode 100644 index 0000000..973ab99 --- /dev/null +++ b/src/Event/Game/TriggerBattleReportPanelPlayMissionEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ battleReportId = $this->battleReportId, difficultyLevel = $this->difficultyLevel }"; + } + + /** @return integer */ + public function getBattleReportId() { return $this->battleReportId; } + + /** @return integer */ + public function getDifficultyLevel() { return $this->difficultyLevel; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerBattleReportPanelPlaySceneEvent.php b/src/Event/Game/TriggerBattleReportPanelPlaySceneEvent.php new file mode 100644 index 0000000..1fa7a59 --- /dev/null +++ b/src/Event/Game/TriggerBattleReportPanelPlaySceneEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ battleReportId = $this->battleReportId }"; + } + + /** @return integer */ + public function getBattleReportId() { return $this->battleReportId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerBattleReportPanelSelectionChangedEvent.php b/src/Event/Game/TriggerBattleReportPanelSelectionChangedEvent.php new file mode 100644 index 0000000..75d0b70 --- /dev/null +++ b/src/Event/Game/TriggerBattleReportPanelSelectionChangedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ battleReportId = $this->battleReportId }"; + } + + /** @return integer */ + public function getBattleReportId() { return $this->battleReportId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerButtonPressedEvent.php b/src/Event/Game/TriggerButtonPressedEvent.php new file mode 100644 index 0000000..5ee628e --- /dev/null +++ b/src/Event/Game/TriggerButtonPressedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ button = $this->button }"; + } + + /** @return integer */ + public function getButton() { return $this->button; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCameraMoveEvent.php b/src/Event/Game/TriggerCameraMoveEvent.php new file mode 100644 index 0000000..a7b6603 --- /dev/null +++ b/src/Event/Game/TriggerCameraMoveEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ reason = $this->reason }"; + } + + /** @return array */ + public function getReason() { return $this->reason; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerChatMessageEvent.php b/src/Event/Game/TriggerChatMessageEvent.php new file mode 100644 index 0000000..bd2d2c9 --- /dev/null +++ b/src/Event/Game/TriggerChatMessageEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ chatMessage = $this->chatMessage }"; + } + + /** @return string */ + public function getChatMessage() { return $this->chatMessage; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCommandErrorEvent.php b/src/Event/Game/TriggerCommandErrorEvent.php new file mode 100644 index 0000000..971723b --- /dev/null +++ b/src/Event/Game/TriggerCommandErrorEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ error = $this->error, abil = $this->abil }"; + } + + /** @return integer */ + public function getError() { return $this->error; } + + /** @return null|\Rogiel\StarReplay\Event\Game\Entity\Ability */ + public function getAbil() { return $this->abil; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerConversationSkippedEvent.php b/src/Event/Game/TriggerConversationSkippedEvent.php new file mode 100644 index 0000000..dd18800 --- /dev/null +++ b/src/Event/Game/TriggerConversationSkippedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ skipType = $this->skipType }"; + } + + /** @return integer */ + public function getSkipType() { return $this->skipType; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCustomDialogDismissedEvent.php b/src/Event/Game/TriggerCustomDialogDismissedEvent.php new file mode 100644 index 0000000..9f2062d --- /dev/null +++ b/src/Event/Game/TriggerCustomDialogDismissedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ result = $this->result }"; + } + + /** @return integer */ + public function getResult() { return $this->result; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCutsceneBookmarkFiredEvent.php b/src/Event/Game/TriggerCutsceneBookmarkFiredEvent.php new file mode 100644 index 0000000..f895f15 --- /dev/null +++ b/src/Event/Game/TriggerCutsceneBookmarkFiredEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ cutsceneId = $this->cutsceneId, bookmarkName = $this->bookmarkName }"; + } + + /** @return integer */ + public function getCutsceneId() { return $this->cutsceneId; } + + /** @return string */ + public function getBookmarkName() { return $this->bookmarkName; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCutsceneConversationLineEvent.php b/src/Event/Game/TriggerCutsceneConversationLineEvent.php new file mode 100644 index 0000000..8177b28 --- /dev/null +++ b/src/Event/Game/TriggerCutsceneConversationLineEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ cutsceneId = $this->cutsceneId, conversationLine = $this->conversationLine, altConversationLine = $this->altConversationLine }"; + } + + /** @return integer */ + public function getCutsceneId() { return $this->cutsceneId; } + + /** @return string */ + public function getConversationLine() { return $this->conversationLine; } + + /** @return string */ + public function getAltConversationLine() { return $this->altConversationLine; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCutsceneConversationLineMissingEvent.php b/src/Event/Game/TriggerCutsceneConversationLineMissingEvent.php new file mode 100644 index 0000000..7d53a7f --- /dev/null +++ b/src/Event/Game/TriggerCutsceneConversationLineMissingEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ cutsceneId = $this->cutsceneId, conversationLine = $this->conversationLine }"; + } + + /** @return integer */ + public function getCutsceneId() { return $this->cutsceneId; } + + /** @return string */ + public function getConversationLine() { return $this->conversationLine; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerCutsceneEndSceneFiredEvent.php b/src/Event/Game/TriggerCutsceneEndSceneFiredEvent.php new file mode 100644 index 0000000..b2211ca --- /dev/null +++ b/src/Event/Game/TriggerCutsceneEndSceneFiredEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ cutsceneId = $this->cutsceneId }"; + } + + /** @return integer */ + public function getCutsceneId() { return $this->cutsceneId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerDialogControlEvent.php b/src/Event/Game/TriggerDialogControlEvent.php new file mode 100644 index 0000000..831ceae --- /dev/null +++ b/src/Event/Game/TriggerDialogControlEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ controlId = $this->controlId, eventType = $this->eventType, eventData = $this->eventData }"; + } + + /** @return integer */ + public function getControlId() { return $this->controlId; } + + /** @return integer */ + public function getEventType() { return $this->eventType; } + + /** @return null|boolean|integer|integer|string|integer */ + public function getEventData() { return $this->eventData; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerGameCreditsFinishedEvent.php b/src/Event/Game/TriggerGameCreditsFinishedEvent.php new file mode 100644 index 0000000..893c100 --- /dev/null +++ b/src/Event/Game/TriggerGameCreditsFinishedEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerGameMenuItemSelectedEvent.php b/src/Event/Game/TriggerGameMenuItemSelectedEvent.php new file mode 100644 index 0000000..25f1621 --- /dev/null +++ b/src/Event/Game/TriggerGameMenuItemSelectedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ gameMenuItemIndex = $this->gameMenuItemIndex }"; + } + + /** @return integer */ + public function getGameMenuItemIndex() { return $this->gameMenuItemIndex; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerHotkeyPressedEvent.php b/src/Event/Game/TriggerHotkeyPressedEvent.php new file mode 100644 index 0000000..a943fa2 --- /dev/null +++ b/src/Event/Game/TriggerHotkeyPressedEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ hotkey = $this->hotkey, down = $this->down }"; + } + + /** @return integer */ + public function getHotkey() { return $this->hotkey; } + + /** @return boolean */ + public function getDown() { return $this->down; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerKeyPressedEvent.php b/src/Event/Game/TriggerKeyPressedEvent.php new file mode 100644 index 0000000..dba7e1b --- /dev/null +++ b/src/Event/Game/TriggerKeyPressedEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ key = $this->key, flags = $this->flags }"; + } + + /** @return integer */ + public function getKey() { return $this->key; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMercenaryPanelExitEvent.php b/src/Event/Game/TriggerMercenaryPanelExitEvent.php new file mode 100644 index 0000000..75b1d94 --- /dev/null +++ b/src/Event/Game/TriggerMercenaryPanelExitEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMercenaryPanelPurchaseEvent.php b/src/Event/Game/TriggerMercenaryPanelPurchaseEvent.php new file mode 100644 index 0000000..58024c5 --- /dev/null +++ b/src/Event/Game/TriggerMercenaryPanelPurchaseEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMercenaryPanelSelectionChangedEvent.php b/src/Event/Game/TriggerMercenaryPanelSelectionChangedEvent.php new file mode 100644 index 0000000..ec413ad --- /dev/null +++ b/src/Event/Game/TriggerMercenaryPanelSelectionChangedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ mercenaryId = $this->mercenaryId }"; + } + + /** @return integer */ + public function getMercenaryId() { return $this->mercenaryId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMouseClickedEvent.php b/src/Event/Game/TriggerMouseClickedEvent.php new file mode 100644 index 0000000..f1ab006 --- /dev/null +++ b/src/Event/Game/TriggerMouseClickedEvent.php @@ -0,0 +1,77 @@ +getEventName()."{ button = $this->button, down = $this->down, posUI = $this->posUI, posWorld = $this->posWorld, flags = $this->flags }"; + } + + /** @return integer */ + public function getButton() { return $this->button; } + + /** @return boolean */ + public function getDown() { return $this->down; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPosUI() { return $this->posUI; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPosWorld() { return $this->posWorld; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMouseMovedEvent.php b/src/Event/Game/TriggerMouseMovedEvent.php new file mode 100644 index 0000000..3dbabad --- /dev/null +++ b/src/Event/Game/TriggerMouseMovedEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ posUI = $this->posUI, posWorld = $this->posWorld, flags = $this->flags }"; + } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPosUI() { return $this->posUI; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPosWorld() { return $this->posWorld; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMouseWheelEvent.php b/src/Event/Game/TriggerMouseWheelEvent.php new file mode 100644 index 0000000..2f587bc --- /dev/null +++ b/src/Event/Game/TriggerMouseWheelEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ wheelSpin = $this->wheelSpin, flags = $this->flags }"; + } + + /** @return integer */ + public function getWheelSpin() { return $this->wheelSpin; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMovieFinishedEvent.php b/src/Event/Game/TriggerMovieFinishedEvent.php new file mode 100644 index 0000000..89c44a6 --- /dev/null +++ b/src/Event/Game/TriggerMovieFinishedEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMovieFunctionEvent.php b/src/Event/Game/TriggerMovieFunctionEvent.php new file mode 100644 index 0000000..59221ae --- /dev/null +++ b/src/Event/Game/TriggerMovieFunctionEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ functionName = $this->functionName }"; + } + + /** @return string */ + public function getFunctionName() { return $this->functionName; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerMovieStartedEvent.php b/src/Event/Game/TriggerMovieStartedEvent.php new file mode 100644 index 0000000..23ac6eb --- /dev/null +++ b/src/Event/Game/TriggerMovieStartedEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPingEvent.php b/src/Event/Game/TriggerPingEvent.php new file mode 100644 index 0000000..3d21e23 --- /dev/null +++ b/src/Event/Game/TriggerPingEvent.php @@ -0,0 +1,101 @@ +getEventName()."{ point = $this->point, unit = $this->unit, unitLink = $this->unitLink, unitControlPlayerId = $this->unitControlPlayerId, unitUpkeepPlayerId = $this->unitUpkeepPlayerId, unitPosition = $this->unitPosition, unitIsUnderConstruction = $this->unitIsUnderConstruction, pingedMinimap = $this->pingedMinimap, option = $this->option }"; + } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPoint() { return $this->point; } + + /** @return integer */ + public function getUnit() { return $this->unit; } + + /** @return integer */ + public function getUnitLink() { return $this->unitLink; } + + /** @return null|integer */ + public function getUnitControlPlayerId() { return $this->unitControlPlayerId; } + + /** @return null|integer */ + public function getUnitUpkeepPlayerId() { return $this->unitUpkeepPlayerId; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getUnitPosition() { return $this->unitPosition; } + + /** @return boolean */ + public function getUnitIsUnderConstruction() { return $this->unitIsUnderConstruction; } + + /** @return boolean */ + public function getPingedMinimap() { return $this->pingedMinimap; } + + /** @return integer */ + public function getOption() { return $this->option; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetMissionLaunchedEvent.php b/src/Event/Game/TriggerPlanetMissionLaunchedEvent.php new file mode 100644 index 0000000..b8caa78 --- /dev/null +++ b/src/Event/Game/TriggerPlanetMissionLaunchedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ difficultyLevel = $this->difficultyLevel }"; + } + + /** @return integer */ + public function getDifficultyLevel() { return $this->difficultyLevel; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetMissionSelectedEvent.php b/src/Event/Game/TriggerPlanetMissionSelectedEvent.php new file mode 100644 index 0000000..5a1b564 --- /dev/null +++ b/src/Event/Game/TriggerPlanetMissionSelectedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ planetId = $this->planetId }"; + } + + /** @return integer */ + public function getPlanetId() { return $this->planetId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetPanelBirthCompleteEvent.php b/src/Event/Game/TriggerPlanetPanelBirthCompleteEvent.php new file mode 100644 index 0000000..34efbc3 --- /dev/null +++ b/src/Event/Game/TriggerPlanetPanelBirthCompleteEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetPanelCanceledEvent.php b/src/Event/Game/TriggerPlanetPanelCanceledEvent.php new file mode 100644 index 0000000..7c88052 --- /dev/null +++ b/src/Event/Game/TriggerPlanetPanelCanceledEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetPanelDeathCompleteEvent.php b/src/Event/Game/TriggerPlanetPanelDeathCompleteEvent.php new file mode 100644 index 0000000..f3bf025 --- /dev/null +++ b/src/Event/Game/TriggerPlanetPanelDeathCompleteEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPlanetPanelReplayEvent.php b/src/Event/Game/TriggerPlanetPanelReplayEvent.php new file mode 100644 index 0000000..a9112e8 --- /dev/null +++ b/src/Event/Game/TriggerPlanetPanelReplayEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPortraitLoadedEvent.php b/src/Event/Game/TriggerPortraitLoadedEvent.php new file mode 100644 index 0000000..6d5192a --- /dev/null +++ b/src/Event/Game/TriggerPortraitLoadedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ portraitId = $this->portraitId }"; + } + + /** @return integer */ + public function getPortraitId() { return $this->portraitId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerProfilerLoggingFinishedEvent.php b/src/Event/Game/TriggerProfilerLoggingFinishedEvent.php new file mode 100644 index 0000000..77d9e5d --- /dev/null +++ b/src/Event/Game/TriggerProfilerLoggingFinishedEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPurchaseExitEvent.php b/src/Event/Game/TriggerPurchaseExitEvent.php new file mode 100644 index 0000000..749b29e --- /dev/null +++ b/src/Event/Game/TriggerPurchaseExitEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPurchaseMadeEvent.php b/src/Event/Game/TriggerPurchaseMadeEvent.php new file mode 100644 index 0000000..ef2f2ae --- /dev/null +++ b/src/Event/Game/TriggerPurchaseMadeEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ purchaseItemId = $this->purchaseItemId }"; + } + + /** @return integer */ + public function getPurchaseItemId() { return $this->purchaseItemId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent.php b/src/Event/Game/TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent.php new file mode 100644 index 0000000..00e70e8 --- /dev/null +++ b/src/Event/Game/TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ purchaseCategoryId = $this->purchaseCategoryId }"; + } + + /** @return integer */ + public function getPurchaseCategoryId() { return $this->purchaseCategoryId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerPurchasePanelSelectedPurchaseItemChangedEvent.php b/src/Event/Game/TriggerPurchasePanelSelectedPurchaseItemChangedEvent.php new file mode 100644 index 0000000..8dbf5ad --- /dev/null +++ b/src/Event/Game/TriggerPurchasePanelSelectedPurchaseItemChangedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ purchaseItemId = $this->purchaseItemId }"; + } + + /** @return integer */ + public function getPurchaseItemId() { return $this->purchaseItemId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerReplySelectedEvent.php b/src/Event/Game/TriggerReplySelectedEvent.php new file mode 100644 index 0000000..809da61 --- /dev/null +++ b/src/Event/Game/TriggerReplySelectedEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ conversationId = $this->conversationId, replyId = $this->replyId }"; + } + + /** @return integer */ + public function getConversationId() { return $this->conversationId; } + + /** @return integer */ + public function getReplyId() { return $this->replyId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerResearchPanelExitEvent.php b/src/Event/Game/TriggerResearchPanelExitEvent.php new file mode 100644 index 0000000..4e2f742 --- /dev/null +++ b/src/Event/Game/TriggerResearchPanelExitEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerResearchPanelPurchaseEvent.php b/src/Event/Game/TriggerResearchPanelPurchaseEvent.php new file mode 100644 index 0000000..c5816da --- /dev/null +++ b/src/Event/Game/TriggerResearchPanelPurchaseEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerResearchPanelSelectionChangedEvent.php b/src/Event/Game/TriggerResearchPanelSelectionChangedEvent.php new file mode 100644 index 0000000..fb911ed --- /dev/null +++ b/src/Event/Game/TriggerResearchPanelSelectionChangedEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ researchItemId = $this->researchItemId }"; + } + + /** @return integer */ + public function getResearchItemId() { return $this->researchItemId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerSkippedEvent.php b/src/Event/Game/TriggerSkippedEvent.php new file mode 100644 index 0000000..d1c9d20 --- /dev/null +++ b/src/Event/Game/TriggerSkippedEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerSoundLengthQueryEvent.php b/src/Event/Game/TriggerSoundLengthQueryEvent.php new file mode 100644 index 0000000..fdfd9fd --- /dev/null +++ b/src/Event/Game/TriggerSoundLengthQueryEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ soundHash = $this->soundHash, length = $this->length }"; + } + + /** @return integer */ + public function getSoundHash() { return $this->soundHash; } + + /** @return integer */ + public function getLength() { return $this->length; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerSoundLengthSync.php b/src/Event/Game/TriggerSoundLengthSync.php new file mode 100644 index 0000000..89a0896 --- /dev/null +++ b/src/Event/Game/TriggerSoundLengthSync.php @@ -0,0 +1,36 @@ +getEventName()."{ syncInfo = $this->syncInfo }"; + } + + /** @return \Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync */ + public function getSyncInfo() { return $this->syncInfo; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerSoundOffsetEvent.php b/src/Event/Game/TriggerSoundOffsetEvent.php new file mode 100644 index 0000000..be4c43a --- /dev/null +++ b/src/Event/Game/TriggerSoundOffsetEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ sound = $this->sound }"; + } + + /** @return integer */ + public function getSound() { return $this->sound; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerSoundtrackDoneEvent.php b/src/Event/Game/TriggerSoundtrackDoneEvent.php new file mode 100644 index 0000000..6c86174 --- /dev/null +++ b/src/Event/Game/TriggerSoundtrackDoneEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ soundtrack = $this->soundtrack }"; + } + + /** @return integer */ + public function getSoundtrack() { return $this->soundtrack; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerTargetModeUpdateEvent.php b/src/Event/Game/TriggerTargetModeUpdateEvent.php new file mode 100644 index 0000000..06587fb --- /dev/null +++ b/src/Event/Game/TriggerTargetModeUpdateEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ abilLink = $this->abilLink, abilCmdIndex = $this->abilCmdIndex, state = $this->state }"; + } + + /** @return integer */ + public function getAbilLink() { return $this->abilLink; } + + /** @return integer */ + public function getAbilCmdIndex() { return $this->abilCmdIndex; } + + /** @return integer */ + public function getState() { return $this->state; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerTransmissionCompleteEvent.php b/src/Event/Game/TriggerTransmissionCompleteEvent.php new file mode 100644 index 0000000..e4fe1b6 --- /dev/null +++ b/src/Event/Game/TriggerTransmissionCompleteEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ transmissionId = $this->transmissionId }"; + } + + /** @return integer */ + public function getTransmissionId() { return $this->transmissionId; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerTransmissionOffsetEvent.php b/src/Event/Game/TriggerTransmissionOffsetEvent.php new file mode 100644 index 0000000..8b51db7 --- /dev/null +++ b/src/Event/Game/TriggerTransmissionOffsetEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ transmissionId = $this->transmissionId, thread = $this->thread }"; + } + + /** @return integer */ + public function getTransmissionId() { return $this->transmissionId; } + + /** @return integer */ + public function getThread() { return $this->thread; } + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerVictoryPanelExitEvent.php b/src/Event/Game/TriggerVictoryPanelExitEvent.php new file mode 100644 index 0000000..ca6a84e --- /dev/null +++ b/src/Event/Game/TriggerVictoryPanelExitEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/TriggerVictoryPanelPlayMissionAgainEvent.php b/src/Event/Game/TriggerVictoryPanelPlayMissionAgainEvent.php new file mode 100644 index 0000000..b7e6790 --- /dev/null +++ b/src/Event/Game/TriggerVictoryPanelPlayMissionAgainEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ difficultyLevel = $this->difficultyLevel }"; + } + + /** @return integer */ + public function getDifficultyLevel() { return $this->difficultyLevel; } + +} \ No newline at end of file diff --git a/src/Event/Game/UnitClickEvent.php b/src/Event/Game/UnitClickEvent.php new file mode 100644 index 0000000..0f02908 --- /dev/null +++ b/src/Event/Game/UnitClickEvent.php @@ -0,0 +1,53 @@ +getEventName()."{ unitTag = $this->unitTag }"; + } + + /** @return integer */ + public function getUnitTag() { return $this->unitTag; } + +} \ No newline at end of file diff --git a/src/Event/Game/UnitHighlightEvent.php b/src/Event/Game/UnitHighlightEvent.php new file mode 100644 index 0000000..601c742 --- /dev/null +++ b/src/Event/Game/UnitHighlightEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ unitTag = $this->unitTag, flags = $this->flags }"; + } + + /** @return integer */ + public function getUnitTag() { return $this->unitTag; } + + /** @return integer */ + public function getFlags() { return $this->flags; } + +} \ No newline at end of file diff --git a/src/Event/Game/UserFinishedLoadingSyncEvent.php b/src/Event/Game/UserFinishedLoadingSyncEvent.php new file mode 100644 index 0000000..6a202fd --- /dev/null +++ b/src/Event/Game/UserFinishedLoadingSyncEvent.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Game/UserOptionsEvent.php b/src/Event/Game/UserOptionsEvent.php new file mode 100644 index 0000000..3ea9c57 --- /dev/null +++ b/src/Event/Game/UserOptionsEvent.php @@ -0,0 +1,131 @@ +getEventName()."{ gameFullyDownloaded = $this->gameFullyDownloaded, developmentCheatsEnabled = $this->developmentCheatsEnabled, testCheatsEnabled = $this->testCheatsEnabled, multiplayerCheatsEnabled = $this->multiplayerCheatsEnabled, syncChecksummingEnabled = $this->syncChecksummingEnabled, isMapToMapTransition = $this->isMapToMapTransition, debugPauseEnabled = $this->debugPauseEnabled, useGalaxyAsserts = $this->useGalaxyAsserts, platformMac = $this->platformMac, cameraFollow = $this->cameraFollow, baseBuildNum = $this->baseBuildNum, buildNum = $this->buildNum, versionFlags = $this->versionFlags, hotkeyProfile = $this->hotkeyProfile }"; + } + + /** @return boolean */ + public function getGameFullyDownloaded() { return $this->gameFullyDownloaded; } + + /** @return boolean */ + public function getDevelopmentCheatsEnabled() { return $this->developmentCheatsEnabled; } + + /** @return boolean */ + public function getTestCheatsEnabled() { return $this->testCheatsEnabled; } + + /** @return boolean */ + public function getMultiplayerCheatsEnabled() { return $this->multiplayerCheatsEnabled; } + + /** @return boolean */ + public function getSyncChecksummingEnabled() { return $this->syncChecksummingEnabled; } + + /** @return boolean */ + public function getIsMapToMapTransition() { return $this->isMapToMapTransition; } + + /** @return boolean */ + public function getDebugPauseEnabled() { return $this->debugPauseEnabled; } + + /** @return boolean */ + public function getUseGalaxyAsserts() { return $this->useGalaxyAsserts; } + + /** @return boolean */ + public function getPlatformMac() { return $this->platformMac; } + + /** @return boolean */ + public function getCameraFollow() { return $this->cameraFollow; } + + /** @return integer */ + public function getBaseBuildNum() { return $this->baseBuildNum; } + + /** @return integer */ + public function getBuildNum() { return $this->buildNum; } + + /** @return integer */ + public function getVersionFlags() { return $this->versionFlags; } + + /** @return string */ + public function getHotkeyProfile() { return $this->hotkeyProfile; } + +} \ No newline at end of file diff --git a/src/Event/Message/AbstractMessageEvent.php b/src/Event/Message/AbstractMessageEvent.php new file mode 100644 index 0000000..e1fc6c9 --- /dev/null +++ b/src/Event/Message/AbstractMessageEvent.php @@ -0,0 +1,35 @@ +getEventName()."{ recipient = $this->recipient, string = $this->string }"; + } + + /** @return integer */ + public function getRecipient() { return $this->recipient; } + + /** @return string */ + public function getString() { return $this->string; } + +} \ No newline at end of file diff --git a/src/Event/Message/LoadingProgressMessage.php b/src/Event/Message/LoadingProgressMessage.php new file mode 100644 index 0000000..d26704c --- /dev/null +++ b/src/Event/Message/LoadingProgressMessage.php @@ -0,0 +1,53 @@ +getEventName()."{ progress = $this->progress }"; + } + + /** @return integer */ + public function getProgress() { return $this->progress; } + +} \ No newline at end of file diff --git a/src/Event/Message/MessageEvent.php b/src/Event/Message/MessageEvent.php new file mode 100644 index 0000000..28de777 --- /dev/null +++ b/src/Event/Message/MessageEvent.php @@ -0,0 +1,35 @@ +getEventName()."{ recipient = $this->recipient, point = $this->point }"; + } + + /** @return integer */ + public function getRecipient() { return $this->recipient; } + + /** @return \Rogiel\StarReplay\Entity\Point */ + public function getPoint() { return $this->point; } + +} \ No newline at end of file diff --git a/src/Event/Message/ReconnectNotifyMessage.php b/src/Event/Message/ReconnectNotifyMessage.php new file mode 100644 index 0000000..8bb90fa --- /dev/null +++ b/src/Event/Message/ReconnectNotifyMessage.php @@ -0,0 +1,53 @@ +getEventName()."{ status = $this->status }"; + } + + /** @return integer */ + public function getStatus() { return $this->status; } + +} \ No newline at end of file diff --git a/src/Event/Message/ServerPingMessage.php b/src/Event/Message/ServerPingMessage.php new file mode 100644 index 0000000..3940e24 --- /dev/null +++ b/src/Event/Message/ServerPingMessage.php @@ -0,0 +1,51 @@ +getEventName()."{ }"; + } + + + +} \ No newline at end of file diff --git a/src/Event/Tracker/AbstractTrackerEvent.php b/src/Event/Tracker/AbstractTrackerEvent.php new file mode 100644 index 0000000..6c41846 --- /dev/null +++ b/src/Event/Tracker/AbstractTrackerEvent.php @@ -0,0 +1,35 @@ +getEventName()."{ playerId = $this->playerId, type = $this->type, userId = $this->userId, slotId = $this->slotId }"; + } + + /** @return integer */ + public function getPlayerId() { return $this->playerId; } + + /** @return integer */ + public function getType() { return $this->type; } + + /** @return null|integer */ + public function getUserId() { return $this->userId; } + + /** @return null|integer */ + public function getSlotId() { return $this->slotId; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/PlayerStats.php b/src/Event/Tracker/PlayerStats.php new file mode 100644 index 0000000..f2b0981 --- /dev/null +++ b/src/Event/Tracker/PlayerStats.php @@ -0,0 +1,510 @@ +scoreValueMineralsCurrent; + } + + /** + * @return int + */ + public function getScoreValueVespeneCurrent() { + return $this->scoreValueVespeneCurrent; + } + + /** + * @return int + */ + public function getScoreValueMineralsCollectionRate() { + return $this->scoreValueMineralsCollectionRate; + } + + /** + * @return int + */ + public function getScoreValueVespeneCollectionRate() { + return $this->scoreValueVespeneCollectionRate; + } + + /** + * @return int + */ + public function getScoreValueWorkersActiveCount() { + return $this->scoreValueWorkersActiveCount; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedInProgressArmy() { + return $this->scoreValueMineralsUsedInProgressArmy; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedInProgressEconomy() { + return $this->scoreValueMineralsUsedInProgressEconomy; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedInProgressTechnology() { + return $this->scoreValueMineralsUsedInProgressTechnology; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedInProgressArmy() { + return $this->scoreValueVespeneUsedInProgressArmy; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedInProgressEconomy() { + return $this->scoreValueVespeneUsedInProgressEconomy; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedInProgressTechnology() { + return $this->scoreValueVespeneUsedInProgressTechnology; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedCurrentArmy() { + return $this->scoreValueMineralsUsedCurrentArmy; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedCurrentEconomy() { + return $this->scoreValueMineralsUsedCurrentEconomy; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedCurrentTechnology() { + return $this->scoreValueMineralsUsedCurrentTechnology; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedCurrentArmy() { + return $this->scoreValueVespeneUsedCurrentArmy; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedCurrentEconomy() { + return $this->scoreValueVespeneUsedCurrentEconomy; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedCurrentTechnology() { + return $this->scoreValueVespeneUsedCurrentTechnology; + } + + /** + * @return int + */ + public function getScoreValueMineralsLostArmy() { + return $this->scoreValueMineralsLostArmy; + } + + /** + * @return int + */ + public function getScoreValueMineralsLostEconomy() { + return $this->scoreValueMineralsLostEconomy; + } + + /** + * @return int + */ + public function getScoreValueMineralsLostTechnology() { + return $this->scoreValueMineralsLostTechnology; + } + + /** + * @return int + */ + public function getScoreValueVespeneLostArmy() { + return $this->scoreValueVespeneLostArmy; + } + + /** + * @return int + */ + public function getScoreValueVespeneLostEconomy() { + return $this->scoreValueVespeneLostEconomy; + } + + /** + * @return int + */ + public function getScoreValueVespeneLostTechnology() { + return $this->scoreValueVespeneLostTechnology; + } + + /** + * @return int + */ + public function getScoreValueMineralsKilledArmy() { + return $this->scoreValueMineralsKilledArmy; + } + + /** + * @return int + */ + public function getScoreValueMineralsKilledEconomy() { + return $this->scoreValueMineralsKilledEconomy; + } + + /** + * @return int + */ + public function getScoreValueMineralsKilledTechnology() { + return $this->scoreValueMineralsKilledTechnology; + } + + /** + * @return int + */ + public function getScoreValueVespeneKilledArmy() { + return $this->scoreValueVespeneKilledArmy; + } + + /** + * @return int + */ + public function getScoreValueVespeneKilledEconomy() { + return $this->scoreValueVespeneKilledEconomy; + } + + /** + * @return int + */ + public function getScoreValueVespeneKilledTechnology() { + return $this->scoreValueVespeneKilledTechnology; + } + + /** + * @return int + */ + public function getScoreValueFoodUsed() { + return $this->scoreValueFoodUsed; + } + + /** + * @return int + */ + public function getScoreValueFoodMade() { + return $this->scoreValueFoodMade; + } + + /** + * @return int + */ + public function getScoreValueMineralsUsedActiveForces() { + return $this->scoreValueMineralsUsedActiveForces; + } + + /** + * @return int + */ + public function getScoreValueVespeneUsedActiveForces() { + return $this->scoreValueVespeneUsedActiveForces; + } + + /** + * @return int + */ + public function getScoreValueMineralsFriendlyFireArmy() { + return $this->scoreValueMineralsFriendlyFireArmy; + } + + /** + * @return int + */ + public function getScoreValueMineralsFriendlyFireEconomy() { + return $this->scoreValueMineralsFriendlyFireEconomy; + } + + /** + * @return int + */ + public function getScoreValueMineralsFriendlyFireTechnology() { + return $this->scoreValueMineralsFriendlyFireTechnology; + } + + /** + * @return int + */ + public function getScoreValueVespeneFriendlyFireArmy() { + return $this->scoreValueVespeneFriendlyFireArmy; + } + + /** + * @return int + */ + public function getScoreValueVespeneFriendlyFireEconomy() { + return $this->scoreValueVespeneFriendlyFireEconomy; + } + + /** + * @return int + */ + public function getScoreValueVespeneFriendlyFireTechnology() { + return $this->scoreValueVespeneFriendlyFireTechnology; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function __toString() { + return "PlayerStats {scoreValueMineralsCurrent = $this->scoreValueMineralsCurrent, scoreValueVespeneCurrent = $this->scoreValueVespeneCurrent, scoreValueMineralsCollectionRate = $this->scoreValueMineralsCollectionRate, scoreValueVespeneCollectionRate = $this->scoreValueVespeneCollectionRate, scoreValueWorkersActiveCount = $this->scoreValueWorkersActiveCount, scoreValueMineralsUsedInProgressArmy = $this->scoreValueMineralsUsedInProgressArmy, scoreValueMineralsUsedInProgressEconomy = $this->scoreValueMineralsUsedInProgressEconomy, scoreValueMineralsUsedInProgressTechnology = $this->scoreValueMineralsUsedInProgressTechnology, scoreValueVespeneUsedInProgressArmy = $this->scoreValueVespeneUsedInProgressArmy, scoreValueVespeneUsedInProgressEconomy = $this->scoreValueVespeneUsedInProgressEconomy, scoreValueVespeneUsedInProgressTechnology = $this->scoreValueVespeneUsedInProgressTechnology, scoreValueMineralsUsedCurrentArmy = $this->scoreValueMineralsUsedCurrentArmy, scoreValueMineralsUsedCurrentEconomy = $this->scoreValueMineralsUsedCurrentEconomy, scoreValueMineralsUsedCurrentTechnology = $this->scoreValueMineralsUsedCurrentTechnology, scoreValueVespeneUsedCurrentArmy = $this->scoreValueVespeneUsedCurrentArmy, scoreValueVespeneUsedCurrentEconomy = $this->scoreValueVespeneUsedCurrentEconomy, scoreValueVespeneUsedCurrentTechnology = $this->scoreValueVespeneUsedCurrentTechnology, scoreValueMineralsLostArmy = $this->scoreValueMineralsLostArmy, scoreValueMineralsLostEconomy = $this->scoreValueMineralsLostEconomy, scoreValueMineralsLostTechnology = $this->scoreValueMineralsLostTechnology, scoreValueVespeneLostArmy = $this->scoreValueVespeneLostArmy, scoreValueVespeneLostEconomy = $this->scoreValueVespeneLostEconomy, scoreValueVespeneLostTechnology = $this->scoreValueVespeneLostTechnology, scoreValueMineralsKilledArmy = $this->scoreValueMineralsKilledArmy, scoreValueMineralsKilledEconomy = $this->scoreValueMineralsKilledEconomy, scoreValueMineralsKilledTechnology = $this->scoreValueMineralsKilledTechnology, scoreValueVespeneKilledArmy = $this->scoreValueVespeneKilledArmy, scoreValueVespeneKilledEconomy = $this->scoreValueVespeneKilledEconomy, scoreValueVespeneKilledTechnology = $this->scoreValueVespeneKilledTechnology, scoreValueFoodUsed = $this->scoreValueFoodUsed, scoreValueFoodMade = $this->scoreValueFoodMade, scoreValueMineralsUsedActiveForces = $this->scoreValueMineralsUsedActiveForces, scoreValueVespeneUsedActiveForces = $this->scoreValueVespeneUsedActiveForces, scoreValueMineralsFriendlyFireArmy = $this->scoreValueMineralsFriendlyFireArmy, scoreValueMineralsFriendlyFireEconomy = $this->scoreValueMineralsFriendlyFireEconomy, scoreValueMineralsFriendlyFireTechnology = $this->scoreValueMineralsFriendlyFireTechnology, scoreValueVespeneFriendlyFireArmy = $this->scoreValueVespeneFriendlyFireArmy, scoreValueVespeneFriendlyFireEconomy = $this->scoreValueVespeneFriendlyFireEconomy, scoreValueVespeneFriendlyFireTechnology = $this->scoreValueVespeneFriendlyFireTechnology }"; + } + +} \ No newline at end of file diff --git a/src/Event/Tracker/PlayerStatsEvent.php b/src/Event/Tracker/PlayerStatsEvent.php new file mode 100644 index 0000000..0db1ed5 --- /dev/null +++ b/src/Event/Tracker/PlayerStatsEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ playerId = $this->playerId, stats = $this->stats }"; + } + + /** @return integer */ + public function getPlayerId() { return $this->playerId; } + + /** @return \Rogiel\StarReplay\Event\Tracker\PlayerStats */ + public function getStats() { return $this->stats; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/TrackerEvent.php b/src/Event/Tracker/TrackerEvent.php new file mode 100644 index 0000000..476360f --- /dev/null +++ b/src/Event/Tracker/TrackerEvent.php @@ -0,0 +1,36 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle, unitTypeName = $this->unitTypeName, controlPlayerId = $this->controlPlayerId, upkeepPlayerId = $this->upkeepPlayerId, x = $this->x, y = $this->y }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + + /** @return string */ + public function getUnitTypeName() { return $this->unitTypeName; } + + /** @return integer */ + public function getControlPlayerId() { return $this->controlPlayerId; } + + /** @return integer */ + public function getUpkeepPlayerId() { return $this->upkeepPlayerId; } + + /** @return integer */ + public function getX() { return $this->x; } + + /** @return integer */ + public function getY() { return $this->y; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitDiedEvent.php b/src/Event/Tracker/UnitDiedEvent.php new file mode 100644 index 0000000..0cdc592 --- /dev/null +++ b/src/Event/Tracker/UnitDiedEvent.php @@ -0,0 +1,89 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle, killerPlayerId = $this->killerPlayerId, x = $this->x, y = $this->y, killerUnitTagIndex = $this->killerUnitTagIndex, killerUnitTagRecycle = $this->killerUnitTagRecycle }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + + /** @return null|integer */ + public function getKillerPlayerId() { return $this->killerPlayerId; } + + /** @return integer */ + public function getX() { return $this->x; } + + /** @return integer */ + public function getY() { return $this->y; } + + /** @return null|integer */ + public function getKillerUnitTagIndex() { return $this->killerUnitTagIndex; } + + /** @return null|integer */ + public function getKillerUnitTagRecycle() { return $this->killerUnitTagRecycle; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitDoneEvent.php b/src/Event/Tracker/UnitDoneEvent.php new file mode 100644 index 0000000..2c0ce57 --- /dev/null +++ b/src/Event/Tracker/UnitDoneEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitInitEvent.php b/src/Event/Tracker/UnitInitEvent.php new file mode 100644 index 0000000..b18ad17 --- /dev/null +++ b/src/Event/Tracker/UnitInitEvent.php @@ -0,0 +1,89 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle, unitTypeName = $this->unitTypeName, controlPlayerId = $this->controlPlayerId, upkeepPlayerId = $this->upkeepPlayerId, x = $this->x, y = $this->y }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + + /** @return string */ + public function getUnitTypeName() { return $this->unitTypeName; } + + /** @return integer */ + public function getControlPlayerId() { return $this->controlPlayerId; } + + /** @return integer */ + public function getUpkeepPlayerId() { return $this->upkeepPlayerId; } + + /** @return integer */ + public function getX() { return $this->x; } + + /** @return integer */ + public function getY() { return $this->y; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitOwnerChangeEvent.php b/src/Event/Tracker/UnitOwnerChangeEvent.php new file mode 100644 index 0000000..a625425 --- /dev/null +++ b/src/Event/Tracker/UnitOwnerChangeEvent.php @@ -0,0 +1,71 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle, controlPlayerId = $this->controlPlayerId, upkeepPlayerId = $this->upkeepPlayerId }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + + /** @return integer */ + public function getControlPlayerId() { return $this->controlPlayerId; } + + /** @return integer */ + public function getUpkeepPlayerId() { return $this->upkeepPlayerId; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitPositions.php b/src/Event/Tracker/UnitPositions.php new file mode 100644 index 0000000..8922aaf --- /dev/null +++ b/src/Event/Tracker/UnitPositions.php @@ -0,0 +1,55 @@ +positions = $positions; + } + + /** + * @return mixed + */ + public function getPositions() { + return $this->positions; + } + + public function __toString() { + return "[ " . join(', ', $this->positions) . " ]"; + } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitPositionsEvent.php b/src/Event/Tracker/UnitPositionsEvent.php new file mode 100644 index 0000000..5926cb2 --- /dev/null +++ b/src/Event/Tracker/UnitPositionsEvent.php @@ -0,0 +1,59 @@ +getEventName()."{ firstUnitIndex = $this->firstUnitIndex, items = $this->items }"; + } + + /** @return integer */ + public function getFirstUnitIndex() { return $this->firstUnitIndex; } + + /** @return \Rogiel\StarReplay\Event\Tracker\UnitPositions */ + public function getItems() { return $this->items; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UnitTypeChangeEvent.php b/src/Event/Tracker/UnitTypeChangeEvent.php new file mode 100644 index 0000000..c5804b3 --- /dev/null +++ b/src/Event/Tracker/UnitTypeChangeEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ unitTagIndex = $this->unitTagIndex, unitTagRecycle = $this->unitTagRecycle, unitTypeName = $this->unitTypeName }"; + } + + /** @return integer */ + public function getUnitTagIndex() { return $this->unitTagIndex; } + + /** @return integer */ + public function getUnitTagRecycle() { return $this->unitTagRecycle; } + + /** @return string */ + public function getUnitTypeName() { return $this->unitTypeName; } + +} \ No newline at end of file diff --git a/src/Event/Tracker/UpgradeEvent.php b/src/Event/Tracker/UpgradeEvent.php new file mode 100644 index 0000000..54c02f6 --- /dev/null +++ b/src/Event/Tracker/UpgradeEvent.php @@ -0,0 +1,65 @@ +getEventName()."{ playerId = $this->playerId, upgradeTypeName = $this->upgradeTypeName, count = $this->count }"; + } + + /** @return integer */ + public function getPlayerId() { return $this->playerId; } + + /** @return string */ + public function getUpgradeTypeName() { return $this->upgradeTypeName; } + + /** @return integer */ + public function getCount() { return $this->count; } + +} \ No newline at end of file diff --git a/src/Exception/InvalidReplayHeaderException.php b/src/Exception/InvalidReplayHeaderException.php new file mode 100644 index 0000000..dca17dc --- /dev/null +++ b/src/Exception/InvalidReplayHeaderException.php @@ -0,0 +1,34 @@ +directory = $directory; + } + + public function getHydrator($class) { + if(isset($this->hydrators[$class])) { + return $this->hydrators[$class]; + } + + $configuration = new Configuration($class); + $configuration->setGeneratedClassesNamespace('Rogiel\StarReplay\Hydrator\Generated'); + if($this->directory !== null) { + $configuration->setGeneratedClassesTargetDir($this->directory); + spl_autoload_register($configuration->getGeneratedClassAutoloader()); + } + + $hydratorClass = $configuration->createFactory()->getHydratorClass(); + $this->hydrators[$class] = new $hydratorClass(); + return $this->hydrators[$class]; + } + +} \ No newline at end of file diff --git a/src/Hydrator/HydratorFactory.php b/src/Hydrator/HydratorFactory.php new file mode 100644 index 0000000..3198327 --- /dev/null +++ b/src/Hydrator/HydratorFactory.php @@ -0,0 +1,41 @@ +timestamp; + } + + /** + * @return integer + */ + public function getUserID() { + return $this->user['userId']; + } + + /** + * @return mixed + */ + public function getEventID() { + return $this->event; + } + +} \ No newline at end of file diff --git a/src/Metadata/Header/Hash.php b/src/Metadata/Header/Hash.php new file mode 100644 index 0000000..a14735a --- /dev/null +++ b/src/Metadata/Header/Hash.php @@ -0,0 +1,43 @@ +data; + } + +} \ No newline at end of file diff --git a/src/Metadata/Header/Header.php b/src/Metadata/Header/Header.php new file mode 100644 index 0000000..4e9385f --- /dev/null +++ b/src/Metadata/Header/Header.php @@ -0,0 +1,129 @@ +signature; + } + + /** + * @return Version + */ + public function getVersion() { + return $this->version; + } + + /** + * @return string + */ + public function getType() { + return $this->type; + } + + /** + * @return int + */ + public function getElapsedGameLoops() { + return $this->elapsedGameLoops; + } + + /** + * @return int + */ + public function getUseScaledTime() { + return $this->useScaledTime; + } + + /** + * @return Hash + */ + public function getNgdpRootKey() { + return $this->ngdpRootKey; + } + + /** + * @return int + */ + public function getDataBuildNum() { + return $this->dataBuildNum; + } + + /** + * @return Hash + */ + public function getFixedFileHash() { + return $this->fixedFileHash; + } + +} \ No newline at end of file diff --git a/src/Metadata/Header/Version.php b/src/Metadata/Header/Version.php new file mode 100644 index 0000000..f994312 --- /dev/null +++ b/src/Metadata/Header/Version.php @@ -0,0 +1,110 @@ +flags; + } + + /** + * @return mixed + */ + public function getMajor() { + return $this->major; + } + + /** + * @return mixed + */ + public function getMinor() { + return $this->minor; + } + + /** + * @return mixed + */ + public function getRevision() { + return $this->revision; + } + + /** + * @return mixed + */ + public function getBuild() { + return $this->build; + } + + /** + * @return mixed + */ + public function getBaseBuild() { + return $this->baseBuild; + } + + public function __toString() { + return "$this->major.$this->minor.$this->revision.$this->build ($this->baseBuild)"; + } + +} \ No newline at end of file diff --git a/src/Metadata/Init/GameDescription.php b/src/Metadata/Init/GameDescription.php new file mode 100644 index 0000000..a32e960 --- /dev/null +++ b/src/Metadata/Init/GameDescription.php @@ -0,0 +1,347 @@ +randomValue; + } + + /** + * @return string + */ + public function getGameCacheName() { + return $this->gameCacheName; + } + + /** + * @return GameOptions + */ + public function getGameOptions() { + return $this->gameOptions; + } + + /** + * @return int + */ + public function getGameSpeed() { + return $this->gameSpeed; + } + + /** + * @return int + */ + public function getGameType() { + return $this->gameType; + } + + /** + * @return int + */ + public function getMaxUsers() { + return $this->maxUsers; + } + + /** + * @return int + */ + public function getMaxObservers() { + return $this->maxObservers; + } + + /** + * @return int + */ + public function getMaxPlayers() { + return $this->maxPlayers; + } + + /** + * @return int + */ + public function getMaxTeams() { + return $this->maxTeams; + } + + /** + * @return int + */ + public function getMaxColors() { + return $this->maxColors; + } + + /** + * @return int + */ + public function getMaxRaces() { + return $this->maxRaces; + } + + /** + * @return int + */ + public function getMaxControls() { + return $this->maxControls; + } + + /** + * @return int + */ + public function getMapSizeX() { + return $this->mapSizeX; + } + + /** + * @return int + */ + public function getMapSizeY() { + return $this->mapSizeY; + } + + /** + * @return int + */ + public function getMapFileSyncChecksum() { + return $this->mapFileSyncChecksum; + } + + /** + * @return string + */ + public function getMapFileName() { + return $this->mapFileName; + } + + /** + * @return string + */ + public function getMapAuthorName() { + return $this->mapAuthorName; + } + + /** + * @return int + */ + public function getModFileSyncChecksum() { + return $this->modFileSyncChecksum; + } + + /** + * @return array + */ + public function getSlotDescriptions() { + return $this->slotDescriptions; + } + + /** + * @return int + */ + public function getDefaultDifficulty() { + return $this->defaultDifficulty; + } + + /** + * @return int + */ + public function getDefaultAIBuild() { + return $this->defaultAIBuild; + } + + /** + * @return array + */ + public function getCacheHandles() { + return $this->cacheHandles; + } + + /** + * @return boolean + */ + public function hasExtensionMod() { + return $this->hasExtensionMod; + } + + /** + * @return boolean + */ + public function isBlizzardMap() { + return $this->isBlizzardMap; + } + + /** + * @return boolean + */ + public function isPremadeFFA() { + return $this->isPremadeFFA; + } + + /** + * @return boolean + */ + public function isCoopMode() { + return $this->isCoopMode; + } + + +} \ No newline at end of file diff --git a/src/Metadata/Init/GameOptions.php b/src/Metadata/Init/GameOptions.php new file mode 100644 index 0000000..23b6854 --- /dev/null +++ b/src/Metadata/Init/GameOptions.php @@ -0,0 +1,214 @@ +lockTeams; + } + + /** + * @return boolean + */ + public function isTeamsTogether() { + return $this->teamsTogether; + } + + /** + * @return boolean + */ + public function isAdvancedSharedControl() { + return $this->advancedSharedControl; + } + + /** + * @return boolean + */ + public function isRandomRaces() { + return $this->randomRaces; + } + + /** + * @return boolean + */ + public function isBattleNet() { + return $this->battleNet; + } + + /** + * @return boolean + */ + public function isAmm() { + return $this->amm; + } + + /** + * @return boolean + */ + public function isCompetitive() { + return $this->competitive; + } + + /** + * @return boolean + */ + public function isPractice() { + return $this->practice; + } + + /** + * @return boolean + */ + public function isCooperative() { + return $this->cooperative; + } + + /** + * @return boolean + */ + public function isNoVictoryOrDefeat() { + return $this->noVictoryOrDefeat; + } + + /** + * @return boolean + */ + public function isHeroDuplicatesAllowed() { + return $this->heroDuplicatesAllowed; + } + + /** + * @return boolean + */ + public function isFog() { + return $this->fog; + } + + /** + * @return int + */ + public function getObservers() { + return $this->observers; + } + + /** + * @return int + */ + public function getUserDifficulty() { + return $this->userDifficulty; + } + + /** + * @return int + */ + public function getClientDebugFlags() { + return $this->clientDebugFlags; + } + +} \ No newline at end of file diff --git a/src/Metadata/Init/InitData.php b/src/Metadata/Init/InitData.php new file mode 100644 index 0000000..be50e58 --- /dev/null +++ b/src/Metadata/Init/InitData.php @@ -0,0 +1,46 @@ +syncLobbyState; + } + +} \ No newline at end of file diff --git a/src/Metadata/Init/LobbyState.php b/src/Metadata/Init/LobbyState.php new file mode 100644 index 0000000..0f578e1 --- /dev/null +++ b/src/Metadata/Init/LobbyState.php @@ -0,0 +1,168 @@ +phase; + } + + /** + * @return int + */ + public function getMaxUsers() { + return $this->maxUsers; + } + + /** + * @return int + */ + public function getMaxObservers() { + return $this->maxObservers; + } + + /** + * @return int + */ + public function getSlots() { + return $this->slots; + } + + /** + * @return int + */ + public function getRandomSeed() { + return $this->randomSeed; + } + + /** + * @return int + */ + public function getHostUserId() { + return $this->hostUserId; + } + + /** + * @return boolean + */ + public function isSinglePlayer() { + return $this->isSinglePlayer; + } + + /** + * @return int + */ + public function getPickedMapTag() { + return $this->pickedMapTag; + } + + /** + * @return int + */ + public function getGameDuration() { + return $this->gameDuration; + } + + /** + * @return int + */ + public function getDefaultDifficulty() { + return $this->defaultDifficulty; + } + + /** + * @return int + */ + public function getDefaultAIBuild() { + return $this->defaultAIBuild; + } + + + +} \ No newline at end of file diff --git a/src/Metadata/Init/SyncLobbyState.php b/src/Metadata/Init/SyncLobbyState.php new file mode 100644 index 0000000..d35f779 --- /dev/null +++ b/src/Metadata/Init/SyncLobbyState.php @@ -0,0 +1,70 @@ +userInitialData; + } + + /** + * @return GameDescription + */ + public function getGameDescription() { + return $this->gameDescription; + } + + /** + * @return LobbyState + */ + public function getLobbyState() { + return $this->lobbyState; + } + +} \ No newline at end of file diff --git a/src/Metadata/Init/UserInitialData.php b/src/Metadata/Init/UserInitialData.php new file mode 100644 index 0000000..321a046 --- /dev/null +++ b/src/Metadata/Init/UserInitialData.php @@ -0,0 +1,250 @@ +name; + } + + /** + * @return string + */ + public function getClanTag() { + return $this->clanTag; + } + + /** + * @return string + */ + public function getClanLogo() { + return $this->clanLogo; + } + + /** + * @return int + */ + public function getHighestLeague() { + return $this->highestLeague; + } + + /** + * @return int + */ + public function getCombinedRaceLevels() { + return $this->combinedRaceLevels; + } + + /** + * @return string + */ + public function getRandomSeed() { + return $this->randomSeed; + } + + /** + * @return string + */ + public function getRacePreference() { + return $this->racePreference; + } + + /** + * @return string + */ + public function getTeamPreference() { + return $this->teamPreference; + } + + /** + * @return string + */ + public function getTestMap() { + return $this->testMap; + } + + /** + * @return boolean + */ + public function isTestAuto() { + return $this->testAuto; + } + + /** + * @return boolean + */ + public function isExamine() { + return $this->examine; + } + + /** + * @return boolean + */ + public function isCustomInterface() { + return $this->customInterface; + } + + /** + * @return boolean + */ + public function isTestType() { + return $this->testType; + } + + /** + * @return boolean + */ + public function isObserve() { + return $this->observe; + } + + /** + * @return int + */ + public function getHero() { + return $this->hero; + } + + /** + * @return int + */ + public function getSkin() { + return $this->skin; + } + + /** + * @return int + */ + public function getMount() { + return $this->mount; + } + + /** + * @return array + */ + public function getToonHandle() { + return $this->toonHandle; + } + +} \ No newline at end of file diff --git a/src/Metadata/Init/UserInitialDataCollection.php b/src/Metadata/Init/UserInitialDataCollection.php new file mode 100644 index 0000000..c7c8934 --- /dev/null +++ b/src/Metadata/Init/UserInitialDataCollection.php @@ -0,0 +1,54 @@ +userInitialData = $userInitialData; + } + + /** + * @return mixed + */ + public function getUserInitialData() { + return $this->userInitialData; + } + +} \ No newline at end of file diff --git a/src/Metadata/Match/MatchInformation.php b/src/Metadata/Match/MatchInformation.php new file mode 100644 index 0000000..b3a3c48 --- /dev/null +++ b/src/Metadata/Match/MatchInformation.php @@ -0,0 +1,239 @@ +playerList; + } + + /** + * @return string + */ + public function getTitle() { + return $this->title; + } + + /** + * @return int + */ + public function getDifficulty() { + return $this->difficulty; + } + + /** + * @return Thumbnail + */ + public function getThumbnail() { + return $this->thumbnail; + } + + /** + * @return boolean + */ + public function isIsBlizzardMap() { + return $this->isBlizzardMap; + } + + /** + * @return int + */ + public function getTimeUTC() { + return $this->timeUTC; + } + + /** + * @return int + */ + public function getTimeLocalOffset() { + return $this->timeLocalOffset; + } + + /** + * @return string + */ + public function getDescription() { + return $this->description; + } + + /** + * @return string + */ + public function getImageFilePath() { + return $this->imageFilePath; + } + + /** + * @return string + */ + public function getMapFileName() { + return $this->mapFileName; + } + + /** + * @return array + */ + public function getCacheHandles() { + return $this->cacheHandles; + } + + /** + * @return boolean + */ + public function isMiniSave() { + return $this->miniSave; + } + + /** + * @return int + */ + public function getGameSpeed() { + return $this->gameSpeed; + } + + /** + * @return int + */ + public function getDefaultDifficulty() { + return $this->defaultDifficulty; + } + + /** + * @return string + */ + public function getModPaths() { + return $this->modPaths; + } + + /** + * @return int + */ + public function getCampaignIndex() { + return $this->campaignIndex; + } + + /** + * @return boolean + */ + public function isRestartAsTransitionMap() { + return $this->restartAsTransitionMap; + } + +} \ No newline at end of file diff --git a/src/Metadata/Match/PlayerList.php b/src/Metadata/Match/PlayerList.php new file mode 100644 index 0000000..c07c64b --- /dev/null +++ b/src/Metadata/Match/PlayerList.php @@ -0,0 +1,111 @@ +players = $players; + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @param $id + * @return Player|null + */ + public function getPlayer($id) { + if(!isset($this->players[$id])) { + return NULL; + } + return $this->players[$id]; + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @return mixed + */ + public function getPlayers() { + return $this->players; + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @inheritDoc + */ + public function offsetExists($offset) { + return array_key_exists($offset, $this->players); + } + + /** + * @inheritDoc + */ + public function offsetGet($offset) { + return $this->players[$offset]; + } + + /** + * @inheritDoc + */ + public function offsetSet($offset, $value) { + $this->players[$offset] = $value; + } + + /** + * @inheritDoc + */ + public function offsetUnset($offset) { + unset($this->players[$offset]); + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @inheritDoc + */ + public function getIterator() { + return new \ArrayIterator($this->players); + } + + public function __toString() { + return join(', ', $this->players); + } + +} \ No newline at end of file diff --git a/src/Parser/Parser.php b/src/Parser/Parser.php new file mode 100644 index 0000000..a1e7031 --- /dev/null +++ b/src/Parser/Parser.php @@ -0,0 +1,38 @@ +parser = $parser; + $this->tree = $tree; + $this->hydratorFactory = $hydratorFactory; + } + + /** + * @param $rootNode Node|int + * @return array|int|object|string|null + */ + public function parse($rootNode) { + if(is_int($rootNode)) { + $rootNode = $this->tree->getNode($rootNode); + } + + if($rootNode instanceof ArrayNode) { + return $this->decorateObject( + $this->parseArray($rootNode), + $rootNode + ); + } else if($rootNode instanceof BitArrayNode) { + return $this->decorateObject( + $this->parseBitArray($rootNode), + $rootNode + ); + } else if($rootNode instanceof BlobNode) { + return $this->decorateObject( + $this->parseBlob($rootNode), + $rootNode + ); + } else if($rootNode instanceof BooleanNode) { + return $this->decorateObject( + $this->parseBoolean($rootNode), + $rootNode + ); + } else if($rootNode instanceof ChoiceNode) { + return $this->decorateObject( + $this->parseChoice($rootNode) + , + $rootNode + ); + } else if($rootNode instanceof IntegerNode) { + return $this->decorateObject( + $this->parseInteger($rootNode), + $rootNode + ); + } else if($rootNode instanceof FourCCNode) { + return $this->decorateObject( + $this->parseFourCC($rootNode), + $rootNode + ); + } else if($rootNode instanceof NullNode) { + return $this->decorateObject( + $this->parseNull($rootNode), + $rootNode + ); + } else if($rootNode instanceof OptionalNode) { + return $this->decorateObject( + $this->parseOptional($rootNode), + $rootNode + ); + } else if($rootNode instanceof StructNode) { + return $this->hydrateStruct( + $this->parseStruct($rootNode), + $rootNode + ); + } else { + throw new \RuntimeException(sprintf("Invalid type: %s", get_class($rootNode))); + } + } + + protected abstract function parseArray(ArrayNode $arrayNode); + protected abstract function parseBitArray(BitArrayNode $arrayNode); + protected abstract function parseBlob(BlobNode $blobNode); + protected abstract function parseBoolean(BooleanNode $booleanNode); + protected abstract function parseChoice(ChoiceNode $choiceNode); + protected abstract function parseInteger(IntegerNode $integerNode); + protected abstract function parseFourCC(FourCCNode $fourCCNode); + protected abstract function parseNull(NullNode $nullNode); + protected abstract function parseOptional(OptionalNode $optionalNode); + protected abstract function parseStruct(StructNode $structNode); + + protected function decorateObject($raw, Node $node) { + $className = $node->getClassName(); + if($className === null) { + return $raw; + } + return new $className($raw); + } + + protected function hydrateStruct(array $struct, StructNode $structNode) { + $className = $structNode->getClassName(); + if($className !== NULL) { + $structObject = new $className(); + $hydrator = $this->hydratorFactory->getHydrator($className); + + $defaultData = $hydrator->extract($structObject); + $struct = array_merge($defaultData, $struct); + $hydrator->hydrate($struct, $structObject); + + return $structObject; + } + return $struct; + } + + public function align() { + $this->parser->align(); + } + + public function eof() { + return $this->parser->eof(); + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/BitPackedSerializer.php b/src/Parser/Serializer/BitPackedSerializer.php new file mode 100644 index 0000000..d6f1c93 --- /dev/null +++ b/src/Parser/Serializer/BitPackedSerializer.php @@ -0,0 +1,107 @@ +parse($arrayNode->getHeader()); + $array = array(); + for ($i = 0; $i < $size; $i++) { + $array[$i] = $this->parse($arrayNode->getItem()); + } + + return $array; + } + + public function parseBitArray(BitArrayNode $arrayNode) { + $length = $this->parse($arrayNode->getHeader()); + return $this->parser->readBits($length); + } + + public function parseBlob(BlobNode $blobNode) { + $size = $this->parse($blobNode->getHeader()); + $this->parser->align(); + return $this->parser->readBytes($size); + } + + public function parseBoolean(BooleanNode $booleanNode) { + return $this->parser->readBit() != 0; + } + + public function parseChoice(ChoiceNode $choiceNode) { + $tag = $this->parse($choiceNode->getTag()); + return$this->parse($choiceNode->getChoices()[$tag]); + } + + public function parseInteger(IntegerNode $integerNode) { + return $this->parser->readBits($integerNode->getBits()) + $integerNode->getConstant(); + } + + public function parseFourCC(FourCCNode $fourCCNode) { + return $this->parser->readBits(4 * 8); + } + + public function parseNull(NullNode $nullNode) { + return NULL; + } + + public function parseOptional(OptionalNode $optionalNode) { + $bool = $this->parser->readBit(); + if($bool !== 0) { + return $this->parse($optionalNode->getIndex()); + } + return NULL; + } + + public function parseStruct(StructNode $structNode) { + $struct = array(); + foreach($structNode->getFields() as $key => $index) { + $struct[$key] = $this->parse($index); + } + return $struct; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Serializer.php b/src/Parser/Serializer/Serializer.php new file mode 100644 index 0000000..7d9e205 --- /dev/null +++ b/src/Parser/Serializer/Serializer.php @@ -0,0 +1,45 @@ +className = $className; + } + + /** + * @return mixed + */ + public function getClassName() { + return $this->className; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/ArrayNode.php b/src/Parser/Serializer/Tree/Node/ArrayNode.php new file mode 100644 index 0000000..673244f --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/ArrayNode.php @@ -0,0 +1,69 @@ +header = $header; + $this->item = $item; + } + + /** + * @return Node|int + */ + public function getHeader() { + return $this->header; + } + + /** + * @return int|Node + */ + public function getItem() { + return $this->item; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/BitArrayNode.php b/src/Parser/Serializer/Tree/Node/BitArrayNode.php new file mode 100644 index 0000000..ab14afc --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/BitArrayNode.php @@ -0,0 +1,55 @@ +header = $header; + } + + /** + * @return Node|int + */ + public function getHeader() { + return $this->header; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/BlobNode.php b/src/Parser/Serializer/Tree/Node/BlobNode.php new file mode 100644 index 0000000..cc78c68 --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/BlobNode.php @@ -0,0 +1,58 @@ +header = $header; + } + + /** + * @return integer + */ + public function getHeader() { + return $this->header; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/BooleanNode.php b/src/Parser/Serializer/Tree/Node/BooleanNode.php new file mode 100644 index 0000000..2f73504 --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/BooleanNode.php @@ -0,0 +1,41 @@ +tag = $tag; + $this->choices = $choices; + } + + /** + * @return int|Node + */ + public function getTag() { + return $this->tag; + } + + /** + * @return \integer[] + */ + public function getChoices() { + return $this->choices; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/FourCCNode.php b/src/Parser/Serializer/Tree/Node/FourCCNode.php new file mode 100644 index 0000000..9cf5356 --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/FourCCNode.php @@ -0,0 +1,37 @@ +bits = $bits; + $this->constant = $constant; + } + + /** + * @return integer + */ + public function getBits() { + return $this->bits; + } + + /** + * @return int + */ + public function getConstant() { + return $this->constant; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/Node.php b/src/Parser/Serializer/Tree/Node/Node.php new file mode 100644 index 0000000..d46c8ea --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/Node.php @@ -0,0 +1,41 @@ +index = $index; + } + + /** + * @return integer + */ + public function getIndex() { + return $this->index; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Node/StructNode.php b/src/Parser/Serializer/Tree/Node/StructNode.php new file mode 100644 index 0000000..9966ed4 --- /dev/null +++ b/src/Parser/Serializer/Tree/Node/StructNode.php @@ -0,0 +1,105 @@ +fields = $fields; + $this->abstract = $abstract; + } + + /** + * @return int[] + */ + public function getFields() { + return array_map(function($field) { + return $field['type']; + }, $this->fields); + } + + public function getFieldMetadata() { + return $this->fields; + } + + /** + * @return boolean + */ + public function isAbstract() { + return $this->abstract; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function getNamedFieldType($field) { + return $this->fields[$field]['type']; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function hasTaggedField($tag) { + foreach($this->fields as $id => $field) { + if($field['tag'] == $tag) { + return true; + } + } + return false; + } + + public function getTaggedField($tag) { + foreach($this->fields as $key => $field) { + if($field['tag'] == $tag) { + return $key; + } + } + return NULL; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/Tree/Tree.php b/src/Parser/Serializer/Tree/Tree.php new file mode 100644 index 0000000..e56ec2b --- /dev/null +++ b/src/Parser/Serializer/Tree/Tree.php @@ -0,0 +1,80 @@ +nodes = $nodes; + } + + public function parse($node, ReplayStreamParser $parser) { + if(is_int($node)) { + $node = $this->getNode($node); + } + return $node->parse($this, $parser); + } + + /** + * @param $index + * @return bool + */ + public function hasNode($index) { + return array_key_exists($index, $this->nodes); + } + + /** + * @return Node[] + */ + public function getNodes() { + return $this->nodes; + } + + /** + * @param $index integer + * @return Node + */ + public function getNode($index) { + return $this->nodes[$index]; + } + +} \ No newline at end of file diff --git a/src/Parser/Serializer/VersionedSerializer.php b/src/Parser/Serializer/VersionedSerializer.php new file mode 100644 index 0000000..fcbd472 --- /dev/null +++ b/src/Parser/Serializer/VersionedSerializer.php @@ -0,0 +1,225 @@ +parser->readBits(8); + if ($type != $expected) { + throw new \RuntimeException(sprintf("Expected %s, got %s. Near %s", $expected, $type, bin2hex($this->parser->readBytes(10)))); + } + } + + public function parseVersionedInt() { + $b = $this->parser->readBits(8); + $negative = $b & 1; + $result = ($b >> 1) & 0x3f; + $bits = 6; + while (($b & 0x80) != 0) { + $b = $this->parser->readBits(8); + $result |= ($b & 0x7f) << $bits; + $bits += 7; + } + + if($negative) { + return -$result; + } + return $result; + } + + public function parseArray(ArrayNode $arrayNode) { + $this->expectSkip(0); + + $size = $this->parseVersionedInt(); + $array = array(); + for($i = 0; $i<$size; $i++) { + $array[$i] = $this->parse($arrayNode->getItem()); + } + return $array; + } + + public function parseBitArray(BitArrayNode $arrayNode) { + throw new \RuntimeException("Unsupported operation."); + } + + public function parseBlob(BlobNode $blobNode) { + $this->expectSkip(2); + + $size = $this->parseVersionedInt(); + $this->parser->align(); + return $this->parser->readBytes($size); + } + + public function parseBoolean(BooleanNode $booleanNode) { + $this->expectSkip(6); + return $this->parser->readBits(8); + } + + public function parseChoice(ChoiceNode $choiceNode) { + $this->expectSkip(3); + + $tag = $this->parseVersionedInt(); + $field = $this->tree->getNode($choiceNode->getChoices()[$tag]); + if($field === NULL) { + $this->skip(); + return NULL; + } + + return $this->parse($field); + } + + public function parseInteger(IntegerNode $integerNode) { + $this->expectSkip(9); + return $this->parseVersionedInt(); + } + + public function parseFourCC(FourCCNode $fourCCNode) { + $this->expectSkip(7); + $this->parser->align(); + return $this->parser->readBits(4*8); + } + + public function parseNull(NullNode $nullNode) { + return NULL; + } + + public function parseOptional(OptionalNode $optionalNode) { + $this->expectSkip(4); + + $bool = $this->parser->readBits(8); + if($bool != 0) { + return $this->parse($optionalNode->getIndex()); + } + return NULL; + } + + public function parseStruct(StructNode $structNode) { + if ($structNode->isAbstract()) { + return $this->parseAbstractStruct($structNode); + } else { + return $this->parseRegularStruct($structNode); + } + } + + public function parseRegularStruct(StructNode $structNode) { + $this->expectSkip(5); + + $struct = array(); + $length = $this->parseVersionedInt(); + for($i = 0; $i < $length; $i++) { + $tag = $this->parseVersionedInt(); + $key = $structNode->getTaggedField($tag); + + if($key === NULL) { + $this->skip(); + continue; + } + + $index = $structNode->getNamedFieldType($key); + $struct[$key] = $this->parse($index); + } + return $struct; + } + + public function parseAbstractStruct(StructNode $structNode) { + $struct = array(); + foreach($structNode->getFields() as $key => $index) { + $struct[$key] = $this->parse($index); + } + + return $struct; + } + + private function skip() { + $skip = $this->parser->readBits(8); + if ($skip == 0) { # array + $length = $this->parseVersionedInt(); + for ($i = 0; $i < $length; $i++) { + $this->skip(); + } + } else if($skip == 1) { + $length = $this->parseVersionedInt(); + $this->parser->align(); + $this->parser->readBytes(($length + 7) / 8); + } else if($skip == 2) { + $length = $this->parseVersionedInt(); + $this->parser->align(); + $this->parser->readBytes($length); + } else if($skip == 3) { + $this->parseVersionedInt(); // tag + $this->skip(); + } else if($skip == 4) { + $exists = $this->parser->readBits(8); + if($exists != 0) { + $this->skip(); + } + } else if($skip == 5) { + $length = $this->parseVersionedInt(); + for ($i = 0; $i < $length; $i++) { + $this->parseVersionedInt(); // tag + $this->skip(); + } + } else if($skip == 6) { + $this->parser->align(); + $this->parser->readBytes(1); + } else if($skip == 7) { + $this->parser->align(); + $this->parser->readBytes(4); + } else if($skip == 8) { + $this->parser->align(); + $this->parser->readBytes(8); + } else if($skip == 9) { + $this->parseVersionedInt(); + } else { + throw new \RuntimeException(sprintf("Invalid skip type: %s around %s", $skip, bin2hex($this->parser->readBytes(20)))); + } + } + +} \ No newline at end of file diff --git a/src/Replay.php b/src/Replay.php new file mode 100644 index 0000000..d5870c9 --- /dev/null +++ b/src/Replay.php @@ -0,0 +1,341 @@ +file = $file; + $this->versionLoader = new VersionLoader(); + $this->hydratorFactory = new GeneratedHydratorFactory(); + } + + public function parse() { + $this->file->parse(); + return $this->getHeader(); + } + + // ----------------------------------------------------------------------------------------------------------------- + + private function detectVersion() { + $this->file->parse(); + $lowestVersion = $this->getVersionLoader()->earliest(); + + $stream = new MemoryStream($this->file->getUserData()->getRawContent()); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new VersionedSerializer($parser, $lowestVersion->getTree(), $this->hydratorFactory); + + /** @var Header $header */ + $header = $serializer->parse($lowestVersion->getReplayHeaderNode()); + + $buildNumber = $header->getVersion()->getBaseBuild(); + $version = $this->getVersionLoader()->load($buildNumber); + if($version === NULL) { + throw new ReplayException(sprintf('Build number %s is not supported.', $buildNumber)); + + } + return $version; + } + + private function parseHeader() { + $this->file->parse(); + $stream = new MemoryStream($this->file->getUserData()->getRawContent()); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new VersionedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + return $serializer->parse($this->getVersion()->getReplayHeaderNode()); + } + + private function parseDetails() { + $this->file->parse(); + $stream = $this->file->openStream('replay.details'); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new VersionedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + return $serializer->parse($this->getVersion()->getGameDetailsNode()); + } + + private function parseInitData() { + $this->file->parse(); + $stream = $this->file->openStream('replay.initData'); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new BitPackedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + return $serializer->parse($this->getVersion()->getReplayInitDataNode()); + } + + // ----------------------------------------------------------------------------------------------------------------- + // EVENT PARSERS + // ----------------------------------------------------------------------------------------------------------------- + + /** + * Parses a event stream by using the given serializer, the event mapping and a header node + * + * @param Serializer $serializer the data serializer + * @param $mapping array the mapping + * @param Node $headerNode the header node + * @return \Generator a generator that will yield a result on every event + */ + private function parseEventStream(Serializer $serializer, $mapping, Node $headerNode) { + $gametime = 0; + while(!$serializer->eof()) { + /** @var EventHeader $header */ + $header = $serializer->parse($headerNode); + $gametime = $gametime + $header->getTimestamp(); + + if(!isset($mapping[$header->getEventID()])) { + print_r($header); + throw new \RuntimeException(sprintf("Event %s not found.", $header->getEventID())); + } + + /** @var Node $node */ + $node = $mapping[$header->getEventID()]; + $event = $serializer->parse($node); + $serializer->align(); + + if($event instanceof AbstractEvent) { + $event->setHeader($header); + } + + yield $gametime => $event; + } + } + + /** + * @return \Generator + */ + public function getGameEvents() { + $stream = $this->file->openStream('replay.game.events'); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new BitPackedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + + return $this->parseEventStream( + $serializer, + $this->getVersion()->getGameEventMapping(), + $this->getVersion()->getGameEventHeaderNode() + ); + } + + /** + * @return \Generator + */ + public function getMessageEvents() { + $stream = $this->file->openStream('replay.message.events'); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new BitPackedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + + return $this->parseEventStream( + $serializer, + $this->getVersion()->getMessageEventMapping(), + $this->getVersion()->getMessageEventHeaderNode() + ); + } + + /** + * @return \Generator + * @throws ReplayException + */ + public function getTrackerEvents() { + if(!$this->getVersion()->hasTrackerEvents()) { + throw new ReplayException('Tracker events are not supported on this version.'); + } + + $stream = $this->file->openStream('replay.tracker.events'); + $stream = new BitStream($stream); + $parser = new ReplayStreamParser($stream); + $serializer = new VersionedSerializer($parser, $this->getVersion()->getTree(), $this->hydratorFactory); + + return $this->parseEventStream( + $serializer, + $this->getVersion()->getTrackerEventMapping(), + $this->getVersion()->getTrackerEventHeaderNode() + ); + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function getVersion() { + if($this->version === null) { + $this->version = $this->detectVersion(); + } + return $this->version; + } + + /** + * Gets the replay header. If the data is not yet parsed, + * it is parsed and its values are stored in memory. + * + * @return Header + */ + public function getHeader() { + if($this->header === null) { + $this->header = $this->parseHeader(); + } + return $this->header; + } + + /** + * Gets the replay match information. If the data is not yet parsed, + * it is parsed and its values are stored in memory. + * + * @return MatchInformation + */ + public function getMatchInformation() { + if($this->matchInformation === null) { + $this->matchInformation = $this->parseDetails(); + } + return $this->matchInformation; + } + + /** + * Gets the replay init data. If the data is not yet parsed, + * it is parsed and its values are stored in memory. + * + * @return InitData + */ + public function getInitData() { + if($this->initData === null) { + $this->initData = $this->parseInitData(); + } + return $this->initData; + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @return Metadata\Match\PlayerList + */ + public function getPlayers() { + return $this->getMatchInformation()->getPlayerList(); + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @return VersionLoader + */ + public function getVersionLoader() { + return $this->versionLoader; + } + + /** + * @param VersionLoader $versionLoader + */ + public function setVersionLoader($versionLoader) { + $this->versionLoader = $versionLoader; + } + + /** + * @return HydratorFactory + */ + public function getHydratorFactory() { + return $this->hydratorFactory; + } + + /** + * @param HydratorFactory $hydratorFactory + */ + public function setHydratorFactory($hydratorFactory) { + $this->hydratorFactory = $hydratorFactory; + } + +} \ No newline at end of file diff --git a/src/Stream/BitStream.php b/src/Stream/BitStream.php new file mode 100644 index 0000000..7c955e8 --- /dev/null +++ b/src/Stream/BitStream.php @@ -0,0 +1,132 @@ +stream = $stream; + + $this->currentByte = NULL; + $this->currentBit = 0; + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function readBit() { + return $this->readBits(1); + } + + public function readBits($bits) { + $result = 0; + $resultbits = 0; + while($resultbits != $bits) { + if($this->currentBit == 0) { + $this->currentByte = ord($this->stream->readByte()); + $this->currentBit = 8; + } + $copybits = min($bits - $resultbits, $this->currentBit); + $copy = ($this->currentByte & ((1 << $copybits) - 1)); + $result |= $copy << ($bits - $resultbits - $copybits); + + $this->currentByte >>= $copybits; // self . _next >>= copybits + $this->currentBit -= $copybits; // self . _nextbits -= copybits + $resultbits += $copybits; // resultbits += copybits + } + return $result; + } + + public function align() { + $this->currentBit = 0; + } + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * @inheritDoc + */ + public function close() { + $this->stream->close(); + } + + /** + * @inheritDoc + */ + public function readByte() { + $this->align(); + return $this->stream->readByte(); + } + + /** + * @inheritDoc + */ + public function readBytes($bytes) { + $this->align(); + return $this->stream->readBytes($bytes); + } + + /** + * @inheritDoc + */ + public function seek($position) { + return $this->stream->seek($position); + } + + /** + * @inheritDoc + */ + public function skip($bytes) { + return $this->stream->skip($bytes); + } + + /** + * {@inheritdoc} + */ + public function eof() { + return $this->stream->eof(); + } +} \ No newline at end of file diff --git a/src/Stream/Parser/ReplayStreamParser.php b/src/Stream/Parser/ReplayStreamParser.php new file mode 100644 index 0000000..ff173a9 --- /dev/null +++ b/src/Stream/Parser/ReplayStreamParser.php @@ -0,0 +1,91 @@ +stream = $stream; + } + + public function align() { + $this->stream->align(); + } + + public function readBit() { + return $this->stream->readBit(); + } + + public function readBits($bits) { + return $this->stream->readBits($bits); + } + + public function readTimestamp() { + $length = $this->readBits(2); + return $this->readBits(6 + $length * 8); + } + + public function readPlayerID() { + return $this->readBits(5); + } + + public function readVariableLengthNumber() { + $number = 0; + $first = true; + $multiplier = 1; + for ($i = $this->readBits(8),$bytes = 0;true;$i = $this->readBits(8),$bytes++) { + $number += ($i & 0x7F) * pow(2,$bytes * 7); + if ($first) { + if ($number & 1) { + $multiplier = -1; + $number--; + } + $first = false; + } + if (($i & 0x80) == 0) break; + } + $number *= $multiplier; + $number /= 2; // can't use right-shift because the datatype will be float for large values on 32-bit systems + return $number; + } + +} \ No newline at end of file diff --git a/src/Version/AbstractVersion.php b/src/Version/AbstractVersion.php new file mode 100644 index 0000000..5df997d --- /dev/null +++ b/src/Version/AbstractVersion.php @@ -0,0 +1,42 @@ +getGameEventMapping()[$eventID]; + } + + public function hasTrackerEvents() { + return $this->getTrackerEventMapping() !== NULL; + } + +} \ No newline at end of file diff --git a/src/Version/Version.php b/src/Version/Version.php new file mode 100644 index 0000000..92ef507 --- /dev/null +++ b/src/Version/Version.php @@ -0,0 +1,61 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version15405::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "name" => array('type' => 9, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "racePreference" => array('type' => 34, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +36 => new ArrayNode( + new IntegerNode(5, 0), + 35, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +37 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +38 => new IntegerNode(4, 1), +39 => new IntegerNode(5, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 37, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 38, 'tag' => -15), + "maxColors" => array('type' => 39, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -9), + "userId" => array('type' => 47, 'tag' => -8), + "teamId" => array('type' => 1, 'tag' => -7), + "colorPref" => array('type' => 49, 'tag' => -6), + "racePref" => array('type' => 34, 'tag' => -5), + "difficulty" => array('type' => 2, 'tag' => -4), + "handicap" => array('type' => 0, 'tag' => -3), + "observe" => array('type' => 19, 'tag' => -2), + "rewards" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 36, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +62 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +63 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +64 => new IntegerNode(32, -2147483648), +65 => new StructNode([ + "x" => array('type' => 64, 'tag' => -2), + "y" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +66 => new StructNode([ + "point" => array('type' => 65, 'tag' => -4), + "time" => array('type' => 64, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +67 => new StructNode([ + "data" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +68 => new IntegerNode(16, 0), +69 => new StructNode([ + "x" => array('type' => 64, 'tag' => -3), + "y" => array('type' => 64, 'tag' => -2), + "z" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +70 => new StructNode([ + "cmdFlags" => array('type' => 5, 'tag' => -11), + "abilLink" => array('type' => 68, 'tag' => -10), + "abilCmdIndex" => array('type' => 10, 'tag' => -9), + "abilCmdData" => array('type' => 10, 'tag' => -8), + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "targetUnitTimer" => array('type' => 10, 'tag' => -6), + "otherUnit" => array('type' => 5, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 68, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +71 => new StructNode([ + "__parent" => array('type' => 42, 'tag' => -1), +]), +72 => new StructNode([ + "unitLink" => array('type' => 68, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +73 => new ArrayNode( + new IntegerNode(8, 0), + 72 +), +74 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +75 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 71, 'tag' => -3), + "addSubgroups" => array('type' => 73, 'tag' => -2), + "addUnitTags" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +76 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +77 => new OptionalNode(71), +78 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +79 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +80 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +81 => new ArrayNode( + new IntegerNode(3, 0), + 64, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +82 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +83 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +84 => new IntegerNode(8, -128), +85 => new StructNode([ + "beacon" => array('type' => 84, 'tag' => -7), + "ally" => array('type' => 84, 'tag' => -6), + "autocast" => array('type' => 84, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 68, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +86 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +87 => new StructNode([ + "delta" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +88 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +89 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +90 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +91 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +92 => new StructNode([ + "conversationId" => array('type' => 64, 'tag' => -2), + "replyId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +93 => new StructNode([ + "purchaseItemId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +94 => new StructNode([ + "difficultyLevel" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +95 => new NullNode(), +96 => new ChoiceNode(new IntegerNode(3), [ + 0 => 95, + 1 => 26, + 2 => 5, + 3 => 64, + 4 => 24, +]), +97 => new StructNode([ + "controlId" => array('type' => 64, 'tag' => -3), + "eventType" => array('type' => 64, 'tag' => -2), + "eventData" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +98 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +99 => new StructNode([ + "soundHash" => array('type' => 74, 'tag' => -2), + "length" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +100 => new StructNode([ + "syncInfo" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +101 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +102 => new StructNode([ + "transmissionId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +103 => new StructNode([ + "x" => array('type' => 68, 'tag' => -2), + "y" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +104 => new OptionalNode(68), +105 => new StructNode([ + "target" => array('type' => 103, 'tag' => -4), + "distance" => array('type' => 104, 'tag' => -3), + "pitch" => array('type' => 104, 'tag' => -2), + "yaw" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +106 => new IntegerNode(1, 0), +107 => new StructNode([ + "skipType" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +108 => new StructNode([ + "button" => array('type' => 5, 'tag' => -7), + "down" => array('type' => 26, 'tag' => -6), + "posXUI" => array('type' => 5, 'tag' => -5), + "posYUI" => array('type' => 5, 'tag' => -4), + "posXWorld" => array('type' => 64, 'tag' => -3), + "posYWorld" => array('type' => 64, 'tag' => -2), + "posZWorld" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +109 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +110 => new StructNode([ + "planetId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +111 => new StructNode([ + "key" => array('type' => 84, 'tag' => -2), + "flags" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +112 => new StructNode([ + "resources" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +113 => new StructNode([ + "fulfillRequestId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +114 => new StructNode([ + "cancelRequestId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +115 => new StructNode([ + "researchItemId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +116 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +117 => new StructNode([ + "mercenaryId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +118 => new StructNode([ + "battleReportId" => array('type' => 64, 'tag' => -2), + "difficultyLevel" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +119 => new StructNode([ + "battleReportId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +120 => new StructNode([ + "decrementMs" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +121 => new StructNode([ + "portraitId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +122 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +123 => new StructNode([ + "result" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +124 => new StructNode([ + "gameMenuItemIndex" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +125 => new StructNode([ + "reason" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +126 => new StructNode([ + "purchaseCategoryId" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +127 => new StructNode([ + "button" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +128 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +129 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +130 => new StructNode([ + "progress" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version15405::$GAME_EVENT_MAPPING = [ + 5 => 62, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 61, + 22 => 63, + 23 => 62, + 25 => 62, + 26 => 67, + 27 => 70, + 28 => 76, + 29 => 78, + 30 => 80, + 31 => 82, + 32 => 83, + 33 => 85, + 34 => 86, + 35 => 87, + 37 => 88, + 38 => 89, + 39 => 90, + 40 => 91, + 41 => 92, + 44 => 62, + 45 => 98, + 46 => 101, + 47 => 102, + 48 => 102, + 49 => 105, + 50 => 62, + 51 => 93, + 52 => 62, + 53 => 94, + 54 => 62, + 55 => 97, + 56 => 100, + 57 => 107, + 58 => 108, + 63 => 62, + 64 => 109, + 65 => 110, + 66 => 111, + 67 => 122, + 68 => 62, + 69 => 62, + 70 => 112, + 71 => 113, + 72 => 114, + 73 => 62, + 74 => 62, + 75 => 115, + 76 => 116, + 77 => 62, + 78 => 62, + 79 => 117, + 80 => 62, + 81 => 62, + 82 => 118, + 83 => 119, + 84 => 119, + 85 => 94, + 86 => 62, + 87 => 62, + 88 => 120, + 89 => 121, + 90 => 123, + 91 => 124, + 92 => 125, + 93 => 93, + 94 => 126, + 95 => 127, + 96 => 62, +]; +Version15405::$MESSAGE_EVENT_MAPPING = [ + 0 => 128, + 1 => 129, + 2 => 130, + 3 => 62, +]; +Version15405::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version16561.php b/src/Version/Version16561.php new file mode 100644 index 0000000..29e88aa --- /dev/null +++ b/src/Version/Version16561.php @@ -0,0 +1,897 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version16561::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(5, 1), +41 => new IntegerNode(8, 1), +42 => new BitArrayNode( + new IntegerNode(6, 0) +), +43 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +44 => new BitArrayNode( + new IntegerNode(2, 0) +), +45 => new StructNode([ + "allowedColors" => array('type' => 42, 'tag' => -5), + "allowedRaces" => array('type' => 43, 'tag' => -4), + "allowedDifficulty" => array('type' => 42, 'tag' => -3), + "allowedControls" => array('type' => 43, 'tag' => -2), + "allowedObserveTypes" => array('type' => 44, 'tag' => -1), +]), +46 => new ArrayNode( + new IntegerNode(5, 0), + 45 +), +47 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 40, 'tag' => -14), + "maxRaces" => array('type' => 41, 'tag' => -13), + "maxControls" => array('type' => 41, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 46, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +48 => new OptionalNode(1), +49 => new OptionalNode(7), +50 => new StructNode([ + "color" => array('type' => 49, 'tag' => -1), +]), +51 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -9), + "userId" => array('type' => 48, 'tag' => -8), + "teamId" => array('type' => 1, 'tag' => -7), + "colorPref" => array('type' => 50, 'tag' => -6), + "racePref" => array('type' => 34, 'tag' => -5), + "difficulty" => array('type' => 2, 'tag' => -4), + "handicap" => array('type' => 0, 'tag' => -3), + "observe" => array('type' => 19, 'tag' => -2), + "rewards" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 48, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 47, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +63 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +64 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +65 => new IntegerNode(32, -2147483648), +66 => new StructNode([ + "x" => array('type' => 65, 'tag' => -2), + "y" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +67 => new StructNode([ + "point" => array('type' => 66, 'tag' => -4), + "time" => array('type' => 65, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +68 => new StructNode([ + "data" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +69 => new IntegerNode(17, 0), +70 => new IntegerNode(16, 0), +71 => new StructNode([ + "abilLink" => array('type' => 70, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +72 => new OptionalNode(71), +73 => new NullNode(), +74 => new IntegerNode(20, 0), +75 => new StructNode([ + "x" => array('type' => 74, 'tag' => -3), + "y" => array('type' => 74, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +76 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 70, 'tag' => -3), + "snapshotPlayerId" => array('type' => 48, 'tag' => -2), + "snapshotPoint" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +77 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 75, + 2 => 76, + 3 => 5, +]), +78 => new OptionalNode(5), +79 => new StructNode([ + "cmdFlags" => array('type' => 69, 'tag' => -4), + "abil" => array('type' => 72, 'tag' => -3), + "data" => array('type' => 77, 'tag' => -2), + "otherUnit" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +80 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +81 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 43, + 2 => 80, + 3 => 80, +]), +82 => new StructNode([ + "unitLink" => array('type' => 70, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +83 => new ArrayNode( + new IntegerNode(8, 0), + 82 +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +85 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 81, 'tag' => -3), + "addSubgroups" => array('type' => 83, 'tag' => -2), + "addUnitTags" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +86 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +87 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +88 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +89 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +90 => new ArrayNode( + new IntegerNode(3, 0), + 65, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +91 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +92 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +93 => new IntegerNode(8, -128), +94 => new StructNode([ + "x" => array('type' => 65, 'tag' => -3), + "y" => array('type' => 65, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +95 => new StructNode([ + "beacon" => array('type' => 93, 'tag' => -7), + "ally" => array('type' => 93, 'tag' => -6), + "autocast" => array('type' => 93, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 70, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 48, 'tag' => -2), + "targetPoint" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +96 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +97 => new StructNode([ + "delta" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +99 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +100 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +102 => new StructNode([ + "conversationId" => array('type' => 65, 'tag' => -2), + "replyId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +103 => new StructNode([ + "purchaseItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +104 => new StructNode([ + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +105 => new ChoiceNode(new IntegerNode(3), [ + 0 => 73, + 1 => 26, + 2 => 5, + 3 => 65, + 4 => 24, +]), +106 => new StructNode([ + "controlId" => array('type' => 65, 'tag' => -3), + "eventType" => array('type' => 65, 'tag' => -2), + "eventData" => array('type' => 105, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +107 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 84, 'tag' => -2), + "length" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +109 => new StructNode([ + "syncInfo" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +110 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +111 => new StructNode([ + "transmissionId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +112 => new StructNode([ + "x" => array('type' => 70, 'tag' => -2), + "y" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new OptionalNode(70), +114 => new StructNode([ + "target" => array('type' => 112, 'tag' => -4), + "distance" => array('type' => 113, 'tag' => -3), + "pitch" => array('type' => 113, 'tag' => -2), + "yaw" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +115 => new IntegerNode(1, 0), +116 => new StructNode([ + "skipType" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +117 => new StructNode([ + "button" => array('type' => 5, 'tag' => -7), + "down" => array('type' => 26, 'tag' => -6), + "posXUI" => array('type' => 5, 'tag' => -5), + "posYUI" => array('type' => 5, 'tag' => -4), + "posXWorld" => array('type' => 65, 'tag' => -3), + "posYWorld" => array('type' => 65, 'tag' => -2), + "posZWorld" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +118 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +119 => new StructNode([ + "planetId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +120 => new StructNode([ + "key" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +121 => new StructNode([ + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +122 => new StructNode([ + "fulfillRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +123 => new StructNode([ + "cancelRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +124 => new StructNode([ + "researchItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +125 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +126 => new StructNode([ + "mercenaryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +127 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -2), + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +128 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +129 => new IntegerNode(19, 0), +130 => new StructNode([ + "decrementMs" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +131 => new StructNode([ + "portraitId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +132 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +133 => new StructNode([ + "result" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +134 => new StructNode([ + "gameMenuItemIndex" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +135 => new StructNode([ + "reason" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +136 => new StructNode([ + "purchaseCategoryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +137 => new StructNode([ + "button" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +138 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +139 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +140 => new StructNode([ + "progress" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version16561::$GAME_EVENT_MAPPING = [ + 5 => 63, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 62, + 22 => 64, + 23 => 63, + 25 => 63, + 26 => 68, + 27 => 79, + 28 => 86, + 29 => 87, + 30 => 89, + 31 => 91, + 32 => 92, + 33 => 95, + 34 => 96, + 35 => 97, + 37 => 98, + 38 => 99, + 39 => 100, + 40 => 101, + 41 => 102, + 44 => 63, + 45 => 107, + 46 => 110, + 47 => 111, + 48 => 111, + 49 => 114, + 50 => 63, + 51 => 103, + 52 => 63, + 53 => 104, + 54 => 63, + 55 => 106, + 56 => 109, + 57 => 116, + 58 => 117, + 63 => 63, + 64 => 118, + 65 => 119, + 66 => 120, + 67 => 132, + 68 => 63, + 69 => 63, + 70 => 121, + 71 => 122, + 72 => 123, + 73 => 63, + 74 => 63, + 75 => 124, + 76 => 125, + 77 => 63, + 78 => 63, + 79 => 126, + 80 => 63, + 81 => 63, + 82 => 127, + 83 => 128, + 84 => 128, + 85 => 104, + 86 => 63, + 87 => 63, + 88 => 130, + 89 => 131, + 90 => 133, + 91 => 134, + 92 => 135, + 93 => 103, + 94 => 136, + 95 => 137, + 96 => 63, +]; +Version16561::$MESSAGE_EVENT_MAPPING = [ + 0 => 138, + 1 => 139, + 2 => 140, + 3 => 63, +]; +Version16561::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version16605.php b/src/Version/Version16605.php new file mode 100644 index 0000000..14143c0 --- /dev/null +++ b/src/Version/Version16605.php @@ -0,0 +1,897 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version16605::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(5, 1), +41 => new IntegerNode(8, 1), +42 => new BitArrayNode( + new IntegerNode(6, 0) +), +43 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +44 => new BitArrayNode( + new IntegerNode(2, 0) +), +45 => new StructNode([ + "allowedColors" => array('type' => 42, 'tag' => -5), + "allowedRaces" => array('type' => 43, 'tag' => -4), + "allowedDifficulty" => array('type' => 42, 'tag' => -3), + "allowedControls" => array('type' => 43, 'tag' => -2), + "allowedObserveTypes" => array('type' => 44, 'tag' => -1), +]), +46 => new ArrayNode( + new IntegerNode(5, 0), + 45 +), +47 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 40, 'tag' => -14), + "maxRaces" => array('type' => 41, 'tag' => -13), + "maxControls" => array('type' => 41, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 46, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +48 => new OptionalNode(1), +49 => new OptionalNode(7), +50 => new StructNode([ + "color" => array('type' => 49, 'tag' => -1), +]), +51 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -9), + "userId" => array('type' => 48, 'tag' => -8), + "teamId" => array('type' => 1, 'tag' => -7), + "colorPref" => array('type' => 50, 'tag' => -6), + "racePref" => array('type' => 34, 'tag' => -5), + "difficulty" => array('type' => 2, 'tag' => -4), + "handicap" => array('type' => 0, 'tag' => -3), + "observe" => array('type' => 19, 'tag' => -2), + "rewards" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 48, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 47, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +63 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +64 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +65 => new IntegerNode(32, -2147483648), +66 => new StructNode([ + "x" => array('type' => 65, 'tag' => -2), + "y" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +67 => new StructNode([ + "point" => array('type' => 66, 'tag' => -4), + "time" => array('type' => 65, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +68 => new StructNode([ + "data" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +69 => new IntegerNode(17, 0), +70 => new IntegerNode(16, 0), +71 => new StructNode([ + "abilLink" => array('type' => 70, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +72 => new OptionalNode(71), +73 => new NullNode(), +74 => new IntegerNode(20, 0), +75 => new StructNode([ + "x" => array('type' => 74, 'tag' => -3), + "y" => array('type' => 74, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +76 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 70, 'tag' => -3), + "snapshotPlayerId" => array('type' => 48, 'tag' => -2), + "snapshotPoint" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +77 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 75, + 2 => 76, + 3 => 5, +]), +78 => new OptionalNode(5), +79 => new StructNode([ + "cmdFlags" => array('type' => 69, 'tag' => -4), + "abil" => array('type' => 72, 'tag' => -3), + "data" => array('type' => 77, 'tag' => -2), + "otherUnit" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +80 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +81 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 43, + 2 => 80, + 3 => 80, +]), +82 => new StructNode([ + "unitLink" => array('type' => 70, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +83 => new ArrayNode( + new IntegerNode(8, 0), + 82 +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +85 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 81, 'tag' => -3), + "addSubgroups" => array('type' => 83, 'tag' => -2), + "addUnitTags" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +86 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +87 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +88 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +89 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +90 => new ArrayNode( + new IntegerNode(3, 0), + 65, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +91 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +92 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +93 => new IntegerNode(8, -128), +94 => new StructNode([ + "x" => array('type' => 65, 'tag' => -3), + "y" => array('type' => 65, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +95 => new StructNode([ + "beacon" => array('type' => 93, 'tag' => -7), + "ally" => array('type' => 93, 'tag' => -6), + "autocast" => array('type' => 93, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 70, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 48, 'tag' => -2), + "targetPoint" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +96 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +97 => new StructNode([ + "delta" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +99 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +100 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +102 => new StructNode([ + "conversationId" => array('type' => 65, 'tag' => -2), + "replyId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +103 => new StructNode([ + "purchaseItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +104 => new StructNode([ + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +105 => new ChoiceNode(new IntegerNode(3), [ + 0 => 73, + 1 => 26, + 2 => 5, + 3 => 65, + 4 => 24, +]), +106 => new StructNode([ + "controlId" => array('type' => 65, 'tag' => -3), + "eventType" => array('type' => 65, 'tag' => -2), + "eventData" => array('type' => 105, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +107 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 84, 'tag' => -2), + "length" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +109 => new StructNode([ + "syncInfo" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +110 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +111 => new StructNode([ + "transmissionId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +112 => new StructNode([ + "x" => array('type' => 70, 'tag' => -2), + "y" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new OptionalNode(70), +114 => new StructNode([ + "target" => array('type' => 112, 'tag' => -4), + "distance" => array('type' => 113, 'tag' => -3), + "pitch" => array('type' => 113, 'tag' => -2), + "yaw" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +115 => new IntegerNode(1, 0), +116 => new StructNode([ + "skipType" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +117 => new StructNode([ + "button" => array('type' => 5, 'tag' => -7), + "down" => array('type' => 26, 'tag' => -6), + "posXUI" => array('type' => 5, 'tag' => -5), + "posYUI" => array('type' => 5, 'tag' => -4), + "posXWorld" => array('type' => 65, 'tag' => -3), + "posYWorld" => array('type' => 65, 'tag' => -2), + "posZWorld" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +118 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +119 => new StructNode([ + "planetId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +120 => new StructNode([ + "key" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +121 => new StructNode([ + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +122 => new StructNode([ + "fulfillRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +123 => new StructNode([ + "cancelRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +124 => new StructNode([ + "researchItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +125 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +126 => new StructNode([ + "mercenaryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +127 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -2), + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +128 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +129 => new IntegerNode(19, 0), +130 => new StructNode([ + "decrementMs" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +131 => new StructNode([ + "portraitId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +132 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +133 => new StructNode([ + "result" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +134 => new StructNode([ + "gameMenuItemIndex" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +135 => new StructNode([ + "reason" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +136 => new StructNode([ + "purchaseCategoryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +137 => new StructNode([ + "button" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +138 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +139 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +140 => new StructNode([ + "progress" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version16605::$GAME_EVENT_MAPPING = [ + 5 => 63, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 62, + 22 => 64, + 23 => 63, + 25 => 63, + 26 => 68, + 27 => 79, + 28 => 86, + 29 => 87, + 30 => 89, + 31 => 91, + 32 => 92, + 33 => 95, + 34 => 96, + 35 => 97, + 37 => 98, + 38 => 99, + 39 => 100, + 40 => 101, + 41 => 102, + 44 => 63, + 45 => 107, + 46 => 110, + 47 => 111, + 48 => 111, + 49 => 114, + 50 => 63, + 51 => 103, + 52 => 63, + 53 => 104, + 54 => 63, + 55 => 106, + 56 => 109, + 57 => 116, + 58 => 117, + 63 => 63, + 64 => 118, + 65 => 119, + 66 => 120, + 67 => 132, + 68 => 63, + 69 => 63, + 70 => 121, + 71 => 122, + 72 => 123, + 73 => 63, + 74 => 63, + 75 => 124, + 76 => 125, + 77 => 63, + 78 => 63, + 79 => 126, + 80 => 63, + 81 => 63, + 82 => 127, + 83 => 128, + 84 => 128, + 85 => 104, + 86 => 63, + 87 => 63, + 88 => 130, + 89 => 131, + 90 => 133, + 91 => 134, + 92 => 135, + 93 => 103, + 94 => 136, + 95 => 137, + 96 => 63, +]; +Version16605::$MESSAGE_EVENT_MAPPING = [ + 0 => 138, + 1 => 139, + 2 => 140, + 3 => 63, +]; +Version16605::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version16755.php b/src/Version/Version16755.php new file mode 100644 index 0000000..1879681 --- /dev/null +++ b/src/Version/Version16755.php @@ -0,0 +1,897 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version16755::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(5, 1), +41 => new IntegerNode(8, 1), +42 => new BitArrayNode( + new IntegerNode(6, 0) +), +43 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +44 => new BitArrayNode( + new IntegerNode(2, 0) +), +45 => new StructNode([ + "allowedColors" => array('type' => 42, 'tag' => -5), + "allowedRaces" => array('type' => 43, 'tag' => -4), + "allowedDifficulty" => array('type' => 42, 'tag' => -3), + "allowedControls" => array('type' => 43, 'tag' => -2), + "allowedObserveTypes" => array('type' => 44, 'tag' => -1), +]), +46 => new ArrayNode( + new IntegerNode(5, 0), + 45 +), +47 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 40, 'tag' => -14), + "maxRaces" => array('type' => 41, 'tag' => -13), + "maxControls" => array('type' => 41, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 46, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +48 => new OptionalNode(1), +49 => new OptionalNode(7), +50 => new StructNode([ + "color" => array('type' => 49, 'tag' => -1), +]), +51 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -9), + "userId" => array('type' => 48, 'tag' => -8), + "teamId" => array('type' => 1, 'tag' => -7), + "colorPref" => array('type' => 50, 'tag' => -6), + "racePref" => array('type' => 34, 'tag' => -5), + "difficulty" => array('type' => 2, 'tag' => -4), + "handicap" => array('type' => 0, 'tag' => -3), + "observe" => array('type' => 19, 'tag' => -2), + "rewards" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 48, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 47, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +63 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +64 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +65 => new IntegerNode(32, -2147483648), +66 => new StructNode([ + "x" => array('type' => 65, 'tag' => -2), + "y" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +67 => new StructNode([ + "point" => array('type' => 66, 'tag' => -4), + "time" => array('type' => 65, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +68 => new StructNode([ + "data" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +69 => new IntegerNode(17, 0), +70 => new IntegerNode(16, 0), +71 => new StructNode([ + "abilLink" => array('type' => 70, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +72 => new OptionalNode(71), +73 => new NullNode(), +74 => new IntegerNode(20, 0), +75 => new StructNode([ + "x" => array('type' => 74, 'tag' => -3), + "y" => array('type' => 74, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +76 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 70, 'tag' => -3), + "snapshotPlayerId" => array('type' => 48, 'tag' => -2), + "snapshotPoint" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +77 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 75, + 2 => 76, + 3 => 5, +]), +78 => new OptionalNode(5), +79 => new StructNode([ + "cmdFlags" => array('type' => 69, 'tag' => -4), + "abil" => array('type' => 72, 'tag' => -3), + "data" => array('type' => 77, 'tag' => -2), + "otherUnit" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +80 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +81 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 43, + 2 => 80, + 3 => 80, +]), +82 => new StructNode([ + "unitLink" => array('type' => 70, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +83 => new ArrayNode( + new IntegerNode(8, 0), + 82 +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +85 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 81, 'tag' => -3), + "addSubgroups" => array('type' => 83, 'tag' => -2), + "addUnitTags" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +86 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +87 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +88 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +89 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +90 => new ArrayNode( + new IntegerNode(3, 0), + 65, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +91 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +92 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +93 => new IntegerNode(8, -128), +94 => new StructNode([ + "x" => array('type' => 65, 'tag' => -3), + "y" => array('type' => 65, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +95 => new StructNode([ + "beacon" => array('type' => 93, 'tag' => -7), + "ally" => array('type' => 93, 'tag' => -6), + "autocast" => array('type' => 93, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 70, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 48, 'tag' => -2), + "targetPoint" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +96 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +97 => new StructNode([ + "delta" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +99 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +100 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +102 => new StructNode([ + "conversationId" => array('type' => 65, 'tag' => -2), + "replyId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +103 => new StructNode([ + "purchaseItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +104 => new StructNode([ + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +105 => new ChoiceNode(new IntegerNode(3), [ + 0 => 73, + 1 => 26, + 2 => 5, + 3 => 65, + 4 => 24, +]), +106 => new StructNode([ + "controlId" => array('type' => 65, 'tag' => -3), + "eventType" => array('type' => 65, 'tag' => -2), + "eventData" => array('type' => 105, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +107 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 84, 'tag' => -2), + "length" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +109 => new StructNode([ + "syncInfo" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +110 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +111 => new StructNode([ + "transmissionId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +112 => new StructNode([ + "x" => array('type' => 70, 'tag' => -2), + "y" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new OptionalNode(70), +114 => new StructNode([ + "target" => array('type' => 112, 'tag' => -4), + "distance" => array('type' => 113, 'tag' => -3), + "pitch" => array('type' => 113, 'tag' => -2), + "yaw" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +115 => new IntegerNode(1, 0), +116 => new StructNode([ + "skipType" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +117 => new StructNode([ + "button" => array('type' => 5, 'tag' => -7), + "down" => array('type' => 26, 'tag' => -6), + "posXUI" => array('type' => 5, 'tag' => -5), + "posYUI" => array('type' => 5, 'tag' => -4), + "posXWorld" => array('type' => 65, 'tag' => -3), + "posYWorld" => array('type' => 65, 'tag' => -2), + "posZWorld" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +118 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +119 => new StructNode([ + "planetId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +120 => new StructNode([ + "key" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +121 => new StructNode([ + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +122 => new StructNode([ + "fulfillRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +123 => new StructNode([ + "cancelRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +124 => new StructNode([ + "researchItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +125 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +126 => new StructNode([ + "mercenaryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +127 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -2), + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +128 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +129 => new IntegerNode(19, 0), +130 => new StructNode([ + "decrementMs" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +131 => new StructNode([ + "portraitId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +132 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +133 => new StructNode([ + "result" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +134 => new StructNode([ + "gameMenuItemIndex" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +135 => new StructNode([ + "reason" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +136 => new StructNode([ + "purchaseCategoryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +137 => new StructNode([ + "button" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +138 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +139 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +140 => new StructNode([ + "progress" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version16755::$GAME_EVENT_MAPPING = [ + 5 => 63, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 62, + 22 => 64, + 23 => 63, + 25 => 63, + 26 => 68, + 27 => 79, + 28 => 86, + 29 => 87, + 30 => 89, + 31 => 91, + 32 => 92, + 33 => 95, + 34 => 96, + 35 => 97, + 37 => 98, + 38 => 99, + 39 => 100, + 40 => 101, + 41 => 102, + 44 => 63, + 45 => 107, + 46 => 110, + 47 => 111, + 48 => 111, + 49 => 114, + 50 => 63, + 51 => 103, + 52 => 63, + 53 => 104, + 54 => 63, + 55 => 106, + 56 => 109, + 57 => 116, + 58 => 117, + 63 => 63, + 64 => 118, + 65 => 119, + 66 => 120, + 67 => 132, + 68 => 63, + 69 => 63, + 70 => 121, + 71 => 122, + 72 => 123, + 73 => 63, + 74 => 63, + 75 => 124, + 76 => 125, + 77 => 63, + 78 => 63, + 79 => 126, + 80 => 63, + 81 => 63, + 82 => 127, + 83 => 128, + 84 => 128, + 85 => 104, + 86 => 63, + 87 => 63, + 88 => 130, + 89 => 131, + 90 => 133, + 91 => 134, + 92 => 135, + 93 => 103, + 94 => 136, + 95 => 137, + 96 => 63, +]; +Version16755::$MESSAGE_EVENT_MAPPING = [ + 0 => 138, + 1 => 139, + 2 => 140, + 3 => 63, +]; +Version16755::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version16939.php b/src/Version/Version16939.php new file mode 100644 index 0000000..75073b9 --- /dev/null +++ b/src/Version/Version16939.php @@ -0,0 +1,897 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version16939::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(5, 1), +41 => new IntegerNode(8, 1), +42 => new BitArrayNode( + new IntegerNode(6, 0) +), +43 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +44 => new BitArrayNode( + new IntegerNode(2, 0) +), +45 => new StructNode([ + "allowedColors" => array('type' => 42, 'tag' => -5), + "allowedRaces" => array('type' => 43, 'tag' => -4), + "allowedDifficulty" => array('type' => 42, 'tag' => -3), + "allowedControls" => array('type' => 43, 'tag' => -2), + "allowedObserveTypes" => array('type' => 44, 'tag' => -1), +]), +46 => new ArrayNode( + new IntegerNode(5, 0), + 45 +), +47 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 40, 'tag' => -14), + "maxRaces" => array('type' => 41, 'tag' => -13), + "maxControls" => array('type' => 41, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 46, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +48 => new OptionalNode(1), +49 => new OptionalNode(7), +50 => new StructNode([ + "color" => array('type' => 49, 'tag' => -1), +]), +51 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -9), + "userId" => array('type' => 48, 'tag' => -8), + "teamId" => array('type' => 1, 'tag' => -7), + "colorPref" => array('type' => 50, 'tag' => -6), + "racePref" => array('type' => 34, 'tag' => -5), + "difficulty" => array('type' => 2, 'tag' => -4), + "handicap" => array('type' => 0, 'tag' => -3), + "observe" => array('type' => 19, 'tag' => -2), + "rewards" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 48, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 47, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +63 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +64 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +65 => new IntegerNode(32, -2147483648), +66 => new StructNode([ + "x" => array('type' => 65, 'tag' => -2), + "y" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +67 => new StructNode([ + "point" => array('type' => 66, 'tag' => -4), + "time" => array('type' => 65, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +68 => new StructNode([ + "data" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +69 => new IntegerNode(17, 0), +70 => new IntegerNode(16, 0), +71 => new StructNode([ + "abilLink" => array('type' => 70, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +72 => new OptionalNode(71), +73 => new NullNode(), +74 => new IntegerNode(20, 0), +75 => new StructNode([ + "x" => array('type' => 74, 'tag' => -3), + "y" => array('type' => 74, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +76 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 70, 'tag' => -3), + "snapshotPlayerId" => array('type' => 48, 'tag' => -2), + "snapshotPoint" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +77 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 75, + 2 => 76, + 3 => 5, +]), +78 => new OptionalNode(5), +79 => new StructNode([ + "cmdFlags" => array('type' => 69, 'tag' => -4), + "abil" => array('type' => 72, 'tag' => -3), + "data" => array('type' => 77, 'tag' => -2), + "otherUnit" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +80 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +81 => new ChoiceNode(new IntegerNode(2), [ + 0 => 73, + 1 => 43, + 2 => 80, + 3 => 80, +]), +82 => new StructNode([ + "unitLink" => array('type' => 70, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +83 => new ArrayNode( + new IntegerNode(8, 0), + 82 +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +85 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 81, 'tag' => -3), + "addSubgroups" => array('type' => 83, 'tag' => -2), + "addUnitTags" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +86 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +87 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +88 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +89 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +90 => new ArrayNode( + new IntegerNode(3, 0), + 65, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +91 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +92 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +93 => new IntegerNode(8, -128), +94 => new StructNode([ + "x" => array('type' => 65, 'tag' => -3), + "y" => array('type' => 65, 'tag' => -2), + "z" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +95 => new StructNode([ + "beacon" => array('type' => 93, 'tag' => -7), + "ally" => array('type' => 93, 'tag' => -6), + "autocast" => array('type' => 93, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 70, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 48, 'tag' => -2), + "targetPoint" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +96 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +97 => new StructNode([ + "delta" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +99 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +100 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +102 => new StructNode([ + "conversationId" => array('type' => 65, 'tag' => -2), + "replyId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +103 => new StructNode([ + "purchaseItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +104 => new StructNode([ + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +105 => new ChoiceNode(new IntegerNode(3), [ + 0 => 73, + 1 => 26, + 2 => 5, + 3 => 65, + 4 => 24, +]), +106 => new StructNode([ + "controlId" => array('type' => 65, 'tag' => -3), + "eventType" => array('type' => 65, 'tag' => -2), + "eventData" => array('type' => 105, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +107 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 84, 'tag' => -2), + "length" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +109 => new StructNode([ + "syncInfo" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +110 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +111 => new StructNode([ + "transmissionId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +112 => new StructNode([ + "x" => array('type' => 70, 'tag' => -2), + "y" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new OptionalNode(70), +114 => new StructNode([ + "target" => array('type' => 112, 'tag' => -4), + "distance" => array('type' => 113, 'tag' => -3), + "pitch" => array('type' => 113, 'tag' => -2), + "yaw" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +115 => new IntegerNode(1, 0), +116 => new StructNode([ + "skipType" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +117 => new StructNode([ + "button" => array('type' => 5, 'tag' => -7), + "down" => array('type' => 26, 'tag' => -6), + "posXUI" => array('type' => 5, 'tag' => -5), + "posYUI" => array('type' => 5, 'tag' => -4), + "posXWorld" => array('type' => 65, 'tag' => -3), + "posYWorld" => array('type' => 65, 'tag' => -2), + "posZWorld" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +118 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +119 => new StructNode([ + "planetId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +120 => new StructNode([ + "key" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +121 => new StructNode([ + "resources" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +122 => new StructNode([ + "fulfillRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +123 => new StructNode([ + "cancelRequestId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +124 => new StructNode([ + "researchItemId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +125 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +126 => new StructNode([ + "mercenaryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +127 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -2), + "difficultyLevel" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +128 => new StructNode([ + "battleReportId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +129 => new IntegerNode(19, 0), +130 => new StructNode([ + "decrementMs" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +131 => new StructNode([ + "portraitId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +132 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +133 => new StructNode([ + "result" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +134 => new StructNode([ + "gameMenuItemIndex" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +135 => new StructNode([ + "reason" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +136 => new StructNode([ + "purchaseCategoryId" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +137 => new StructNode([ + "button" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +138 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +139 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +140 => new StructNode([ + "progress" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version16939::$GAME_EVENT_MAPPING = [ + 5 => 63, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 62, + 22 => 64, + 23 => 63, + 25 => 63, + 26 => 68, + 27 => 79, + 28 => 86, + 29 => 87, + 30 => 89, + 31 => 91, + 32 => 92, + 33 => 95, + 34 => 96, + 35 => 97, + 37 => 98, + 38 => 99, + 39 => 100, + 40 => 101, + 41 => 102, + 44 => 63, + 45 => 107, + 46 => 110, + 47 => 111, + 48 => 111, + 49 => 114, + 50 => 63, + 51 => 103, + 52 => 63, + 53 => 104, + 54 => 63, + 55 => 106, + 56 => 109, + 57 => 116, + 58 => 117, + 63 => 63, + 64 => 118, + 65 => 119, + 66 => 120, + 67 => 132, + 68 => 63, + 69 => 63, + 70 => 121, + 71 => 122, + 72 => 123, + 73 => 63, + 74 => 63, + 75 => 124, + 76 => 125, + 77 => 63, + 78 => 63, + 79 => 126, + 80 => 63, + 81 => 63, + 82 => 127, + 83 => 128, + 84 => 128, + 85 => 104, + 86 => 63, + 87 => 63, + 88 => 130, + 89 => 131, + 90 => 133, + 91 => 134, + 92 => 135, + 93 => 103, + 94 => 136, + 95 => 137, + 96 => 63, +]; +Version16939::$MESSAGE_EVENT_MAPPING = [ + 0 => 138, + 1 => 139, + 2 => 140, + 3 => 63, +]; +Version16939::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version17266.php b/src/Version/Version17266.php new file mode 100644 index 0000000..c4ad167 --- /dev/null +++ b/src/Version/Version17266.php @@ -0,0 +1,920 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version17266::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -10), + "userId" => array('type' => 47, 'tag' => -9), + "teamId" => array('type' => 1, 'tag' => -8), + "colorPref" => array('type' => 49, 'tag' => -7), + "racePref" => array('type' => 34, 'tag' => -6), + "difficulty" => array('type' => 2, 'tag' => -5), + "handicap" => array('type' => 0, 'tag' => -4), + "observe" => array('type' => 19, 'tag' => -3), + "rewards" => array('type' => 50, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +62 => new StructNode([ + "signature" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +63 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +64 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +65 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +66 => new IntegerNode(32, -2147483648), +67 => new StructNode([ + "x" => array('type' => 66, 'tag' => -2), + "y" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +68 => new StructNode([ + "point" => array('type' => 67, 'tag' => -4), + "time" => array('type' => 66, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +69 => new StructNode([ + "data" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +70 => new IntegerNode(17, 0), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +73 => new OptionalNode(72), +74 => new NullNode(), +75 => new IntegerNode(20, 0), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 71, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +78 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 76, + 2 => 77, + 3 => 5, +]), +79 => new OptionalNode(5), +80 => new StructNode([ + "cmdFlags" => array('type' => 70, 'tag' => -4), + "abil" => array('type' => 73, 'tag' => -3), + "data" => array('type' => 78, 'tag' => -2), + "otherUnit" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +81 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +82 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 42, + 2 => 81, + 3 => 81, +]), +83 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 83 +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +86 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 82, 'tag' => -3), + "addSubgroups" => array('type' => 84, 'tag' => -2), + "addUnitTags" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +87 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +88 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 82, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +89 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +91 => new ArrayNode( + new IntegerNode(3, 0), + 66, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +92 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +93 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +94 => new IntegerNode(8, -128), +95 => new StructNode([ + "x" => array('type' => 66, 'tag' => -3), + "y" => array('type' => 66, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +96 => new StructNode([ + "beacon" => array('type' => 94, 'tag' => -7), + "ally" => array('type' => 94, 'tag' => -6), + "autocast" => array('type' => 94, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +97 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +100 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +103 => new StructNode([ + "conversationId" => array('type' => 66, 'tag' => -2), + "replyId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +104 => new StructNode([ + "purchaseItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +105 => new StructNode([ + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +106 => new ChoiceNode(new IntegerNode(3), [ + 0 => 74, + 1 => 26, + 2 => 5, + 3 => 66, + 4 => 24, +]), +107 => new StructNode([ + "controlId" => array('type' => 66, 'tag' => -3), + "eventType" => array('type' => 66, 'tag' => -2), + "eventData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 85, 'tag' => -2), + "length" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +110 => new StructNode([ + "syncInfo" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +111 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +112 => new StructNode([ + "transmissionId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +113 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new OptionalNode(71), +115 => new StructNode([ + "target" => array('type' => 113, 'tag' => -4), + "distance" => array('type' => 114, 'tag' => -3), + "pitch" => array('type' => 114, 'tag' => -2), + "yaw" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +118 => new IntegerNode(11, 0), +119 => new StructNode([ + "x" => array('type' => 118, 'tag' => -2), + "y" => array('type' => 118, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +121 => new StructNode([ + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +122 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +123 => new StructNode([ + "planetId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +124 => new StructNode([ + "key" => array('type' => 94, 'tag' => -2), + "flags" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +125 => new StructNode([ + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +126 => new StructNode([ + "fulfillRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +127 => new StructNode([ + "cancelRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +128 => new StructNode([ + "researchItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +129 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +130 => new StructNode([ + "mercenaryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +131 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -2), + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +133 => new IntegerNode(19, 0), +134 => new StructNode([ + "decrementMs" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +135 => new StructNode([ + "portraitId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +136 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +137 => new StructNode([ + "result" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +138 => new StructNode([ + "gameMenuItemIndex" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +139 => new StructNode([ + "reason" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +140 => new StructNode([ + "purchaseCategoryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +141 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +142 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +144 => new StructNode([ + "progress" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version17266::$GAME_EVENT_MAPPING = [ + 5 => 64, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 62, + 12 => 63, + 22 => 65, + 23 => 64, + 25 => 64, + 26 => 69, + 27 => 80, + 28 => 87, + 29 => 88, + 30 => 90, + 31 => 92, + 32 => 93, + 33 => 96, + 34 => 97, + 35 => 98, + 37 => 99, + 38 => 100, + 39 => 101, + 40 => 102, + 41 => 103, + 44 => 64, + 45 => 108, + 46 => 111, + 47 => 112, + 48 => 112, + 49 => 115, + 50 => 64, + 51 => 104, + 52 => 64, + 53 => 105, + 54 => 64, + 55 => 107, + 56 => 110, + 57 => 117, + 58 => 120, + 59 => 121, + 63 => 64, + 64 => 122, + 65 => 123, + 66 => 124, + 67 => 136, + 68 => 64, + 69 => 64, + 70 => 125, + 71 => 126, + 72 => 127, + 73 => 64, + 74 => 64, + 75 => 128, + 76 => 129, + 77 => 64, + 78 => 64, + 79 => 130, + 80 => 64, + 81 => 64, + 82 => 131, + 83 => 132, + 84 => 132, + 85 => 105, + 86 => 64, + 87 => 64, + 88 => 134, + 89 => 135, + 90 => 137, + 91 => 138, + 92 => 139, + 93 => 104, + 94 => 140, + 95 => 141, + 96 => 64, +]; +Version17266::$MESSAGE_EVENT_MAPPING = [ + 0 => 142, + 1 => 143, + 2 => 144, + 3 => 64, +]; +Version17266::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version17326.php b/src/Version/Version17326.php new file mode 100644 index 0000000..120fcb1 --- /dev/null +++ b/src/Version/Version17326.php @@ -0,0 +1,920 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version17326::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -10), + "userId" => array('type' => 47, 'tag' => -9), + "teamId" => array('type' => 1, 'tag' => -8), + "colorPref" => array('type' => 49, 'tag' => -7), + "racePref" => array('type' => 34, 'tag' => -6), + "difficulty" => array('type' => 2, 'tag' => -5), + "handicap" => array('type' => 0, 'tag' => -4), + "observe" => array('type' => 19, 'tag' => -3), + "rewards" => array('type' => 50, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +62 => new StructNode([ + "signature" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +63 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +64 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +65 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +66 => new IntegerNode(32, -2147483648), +67 => new StructNode([ + "x" => array('type' => 66, 'tag' => -2), + "y" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +68 => new StructNode([ + "point" => array('type' => 67, 'tag' => -4), + "time" => array('type' => 66, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +69 => new StructNode([ + "data" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +70 => new IntegerNode(17, 0), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +73 => new OptionalNode(72), +74 => new NullNode(), +75 => new IntegerNode(20, 0), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 71, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +78 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 76, + 2 => 77, + 3 => 5, +]), +79 => new OptionalNode(5), +80 => new StructNode([ + "cmdFlags" => array('type' => 70, 'tag' => -4), + "abil" => array('type' => 73, 'tag' => -3), + "data" => array('type' => 78, 'tag' => -2), + "otherUnit" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +81 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +82 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 42, + 2 => 81, + 3 => 81, +]), +83 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 83 +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +86 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 82, 'tag' => -3), + "addSubgroups" => array('type' => 84, 'tag' => -2), + "addUnitTags" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +87 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +88 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 82, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +89 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +91 => new ArrayNode( + new IntegerNode(3, 0), + 66, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +92 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +93 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +94 => new IntegerNode(8, -128), +95 => new StructNode([ + "x" => array('type' => 66, 'tag' => -3), + "y" => array('type' => 66, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +96 => new StructNode([ + "beacon" => array('type' => 94, 'tag' => -7), + "ally" => array('type' => 94, 'tag' => -6), + "autocast" => array('type' => 94, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +97 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +100 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +103 => new StructNode([ + "conversationId" => array('type' => 66, 'tag' => -2), + "replyId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +104 => new StructNode([ + "purchaseItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +105 => new StructNode([ + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +106 => new ChoiceNode(new IntegerNode(3), [ + 0 => 74, + 1 => 26, + 2 => 5, + 3 => 66, + 4 => 24, +]), +107 => new StructNode([ + "controlId" => array('type' => 66, 'tag' => -3), + "eventType" => array('type' => 66, 'tag' => -2), + "eventData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 85, 'tag' => -2), + "length" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +110 => new StructNode([ + "syncInfo" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +111 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +112 => new StructNode([ + "transmissionId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +113 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new OptionalNode(71), +115 => new StructNode([ + "target" => array('type' => 113, 'tag' => -4), + "distance" => array('type' => 114, 'tag' => -3), + "pitch" => array('type' => 114, 'tag' => -2), + "yaw" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +118 => new IntegerNode(11, 0), +119 => new StructNode([ + "x" => array('type' => 118, 'tag' => -2), + "y" => array('type' => 118, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +121 => new StructNode([ + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +122 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +123 => new StructNode([ + "planetId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +124 => new StructNode([ + "key" => array('type' => 94, 'tag' => -2), + "flags" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +125 => new StructNode([ + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +126 => new StructNode([ + "fulfillRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +127 => new StructNode([ + "cancelRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +128 => new StructNode([ + "researchItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +129 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +130 => new StructNode([ + "mercenaryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +131 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -2), + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +133 => new IntegerNode(19, 0), +134 => new StructNode([ + "decrementMs" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +135 => new StructNode([ + "portraitId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +136 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +137 => new StructNode([ + "result" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +138 => new StructNode([ + "gameMenuItemIndex" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +139 => new StructNode([ + "reason" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +140 => new StructNode([ + "purchaseCategoryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +141 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +142 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +144 => new StructNode([ + "progress" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version17326::$GAME_EVENT_MAPPING = [ + 5 => 64, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 62, + 12 => 63, + 22 => 65, + 23 => 64, + 25 => 64, + 26 => 69, + 27 => 80, + 28 => 87, + 29 => 88, + 30 => 90, + 31 => 92, + 32 => 93, + 33 => 96, + 34 => 97, + 35 => 98, + 37 => 99, + 38 => 100, + 39 => 101, + 40 => 102, + 41 => 103, + 44 => 64, + 45 => 108, + 46 => 111, + 47 => 112, + 48 => 112, + 49 => 115, + 50 => 64, + 51 => 104, + 52 => 64, + 53 => 105, + 54 => 64, + 55 => 107, + 56 => 110, + 57 => 117, + 58 => 120, + 59 => 121, + 63 => 64, + 64 => 122, + 65 => 123, + 66 => 124, + 67 => 136, + 68 => 64, + 69 => 64, + 70 => 125, + 71 => 126, + 72 => 127, + 73 => 64, + 74 => 64, + 75 => 128, + 76 => 129, + 77 => 64, + 78 => 64, + 79 => 130, + 80 => 64, + 81 => 64, + 82 => 131, + 83 => 132, + 84 => 132, + 85 => 105, + 86 => 64, + 87 => 64, + 88 => 134, + 89 => 135, + 90 => 137, + 91 => 138, + 92 => 139, + 93 => 104, + 94 => 140, + 95 => 141, + 96 => 64, +]; +Version17326::$MESSAGE_EVENT_MAPPING = [ + 0 => 142, + 1 => 143, + 2 => 144, + 3 => 64, +]; +Version17326::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version18092.php b/src/Version/Version18092.php new file mode 100644 index 0000000..ea64e5c --- /dev/null +++ b/src/Version/Version18092.php @@ -0,0 +1,920 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version18092::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -10), + "userId" => array('type' => 47, 'tag' => -9), + "teamId" => array('type' => 1, 'tag' => -8), + "colorPref" => array('type' => 49, 'tag' => -7), + "racePref" => array('type' => 34, 'tag' => -6), + "difficulty" => array('type' => 2, 'tag' => -5), + "handicap" => array('type' => 0, 'tag' => -4), + "observe" => array('type' => 19, 'tag' => -3), + "rewards" => array('type' => 50, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +62 => new StructNode([ + "signature" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +63 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +64 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +65 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +66 => new IntegerNode(32, -2147483648), +67 => new StructNode([ + "x" => array('type' => 66, 'tag' => -2), + "y" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +68 => new StructNode([ + "point" => array('type' => 67, 'tag' => -4), + "time" => array('type' => 66, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +69 => new StructNode([ + "data" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +70 => new IntegerNode(17, 0), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +73 => new OptionalNode(72), +74 => new NullNode(), +75 => new IntegerNode(20, 0), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 71, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +78 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 76, + 2 => 77, + 3 => 5, +]), +79 => new OptionalNode(5), +80 => new StructNode([ + "cmdFlags" => array('type' => 70, 'tag' => -4), + "abil" => array('type' => 73, 'tag' => -3), + "data" => array('type' => 78, 'tag' => -2), + "otherUnit" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +81 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +82 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 42, + 2 => 81, + 3 => 81, +]), +83 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 83 +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +86 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 82, 'tag' => -3), + "addSubgroups" => array('type' => 84, 'tag' => -2), + "addUnitTags" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +87 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +88 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 82, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +89 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +91 => new ArrayNode( + new IntegerNode(3, 0), + 66, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +92 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +93 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +94 => new IntegerNode(8, -128), +95 => new StructNode([ + "x" => array('type' => 66, 'tag' => -3), + "y" => array('type' => 66, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +96 => new StructNode([ + "beacon" => array('type' => 94, 'tag' => -7), + "ally" => array('type' => 94, 'tag' => -6), + "autocast" => array('type' => 94, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +97 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +100 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +103 => new StructNode([ + "conversationId" => array('type' => 66, 'tag' => -2), + "replyId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +104 => new StructNode([ + "purchaseItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +105 => new StructNode([ + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +106 => new ChoiceNode(new IntegerNode(3), [ + 0 => 74, + 1 => 26, + 2 => 5, + 3 => 66, + 4 => 24, +]), +107 => new StructNode([ + "controlId" => array('type' => 66, 'tag' => -3), + "eventType" => array('type' => 66, 'tag' => -2), + "eventData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 85, 'tag' => -2), + "length" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +110 => new StructNode([ + "syncInfo" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +111 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +112 => new StructNode([ + "transmissionId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +113 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new OptionalNode(71), +115 => new StructNode([ + "target" => array('type' => 113, 'tag' => -4), + "distance" => array('type' => 114, 'tag' => -3), + "pitch" => array('type' => 114, 'tag' => -2), + "yaw" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +118 => new IntegerNode(11, 0), +119 => new StructNode([ + "x" => array('type' => 118, 'tag' => -2), + "y" => array('type' => 118, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +121 => new StructNode([ + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +122 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +123 => new StructNode([ + "planetId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +124 => new StructNode([ + "key" => array('type' => 94, 'tag' => -2), + "flags" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +125 => new StructNode([ + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +126 => new StructNode([ + "fulfillRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +127 => new StructNode([ + "cancelRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +128 => new StructNode([ + "researchItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +129 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +130 => new StructNode([ + "mercenaryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +131 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -2), + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +133 => new IntegerNode(19, 0), +134 => new StructNode([ + "decrementMs" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +135 => new StructNode([ + "portraitId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +136 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +137 => new StructNode([ + "result" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +138 => new StructNode([ + "gameMenuItemIndex" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +139 => new StructNode([ + "reason" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +140 => new StructNode([ + "purchaseCategoryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +141 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +142 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +144 => new StructNode([ + "progress" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version18092::$GAME_EVENT_MAPPING = [ + 5 => 64, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 62, + 12 => 63, + 22 => 65, + 23 => 64, + 25 => 64, + 26 => 69, + 27 => 80, + 28 => 87, + 29 => 88, + 30 => 90, + 31 => 92, + 32 => 93, + 33 => 96, + 34 => 97, + 35 => 98, + 37 => 99, + 38 => 100, + 39 => 101, + 40 => 102, + 41 => 103, + 44 => 64, + 45 => 108, + 46 => 111, + 47 => 112, + 48 => 112, + 49 => 115, + 50 => 64, + 51 => 104, + 52 => 64, + 53 => 105, + 54 => 64, + 55 => 107, + 56 => 110, + 57 => 117, + 58 => 120, + 59 => 121, + 63 => 64, + 64 => 122, + 65 => 123, + 66 => 124, + 67 => 136, + 68 => 64, + 69 => 64, + 70 => 125, + 71 => 126, + 72 => 127, + 73 => 64, + 74 => 64, + 75 => 128, + 76 => 129, + 77 => 64, + 78 => 64, + 79 => 130, + 80 => 64, + 81 => 64, + 82 => 131, + 83 => 132, + 84 => 132, + 85 => 105, + 86 => 64, + 87 => 64, + 88 => 134, + 89 => 135, + 90 => 137, + 91 => 138, + 92 => 139, + 93 => 104, + 94 => 140, + 95 => 141, + 96 => 64, +]; +Version18092::$MESSAGE_EVENT_MAPPING = [ + 0 => 142, + 1 => 143, + 2 => 144, + 3 => 64, +]; +Version18092::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version18468.php b/src/Version/Version18468.php new file mode 100644 index 0000000..fdfeadf --- /dev/null +++ b/src/Version/Version18468.php @@ -0,0 +1,920 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version18468::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -10), + "userId" => array('type' => 47, 'tag' => -9), + "teamId" => array('type' => 1, 'tag' => -8), + "colorPref" => array('type' => 49, 'tag' => -7), + "racePref" => array('type' => 34, 'tag' => -6), + "difficulty" => array('type' => 2, 'tag' => -5), + "handicap" => array('type' => 0, 'tag' => -4), + "observe" => array('type' => 19, 'tag' => -3), + "rewards" => array('type' => 50, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +62 => new StructNode([ + "signature" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +63 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +64 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +65 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +66 => new IntegerNode(32, -2147483648), +67 => new StructNode([ + "x" => array('type' => 66, 'tag' => -2), + "y" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +68 => new StructNode([ + "point" => array('type' => 67, 'tag' => -4), + "time" => array('type' => 66, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +69 => new StructNode([ + "data" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +70 => new IntegerNode(18, 0), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +73 => new OptionalNode(72), +74 => new NullNode(), +75 => new IntegerNode(20, 0), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 71, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +78 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 76, + 2 => 77, + 3 => 5, +]), +79 => new OptionalNode(5), +80 => new StructNode([ + "cmdFlags" => array('type' => 70, 'tag' => -4), + "abil" => array('type' => 73, 'tag' => -3), + "data" => array('type' => 78, 'tag' => -2), + "otherUnit" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +81 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +82 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 42, + 2 => 81, + 3 => 81, +]), +83 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 83 +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +86 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 82, 'tag' => -3), + "addSubgroups" => array('type' => 84, 'tag' => -2), + "addUnitTags" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +87 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +88 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 82, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +89 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +91 => new ArrayNode( + new IntegerNode(3, 0), + 66, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +92 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +93 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +94 => new IntegerNode(8, -128), +95 => new StructNode([ + "x" => array('type' => 66, 'tag' => -3), + "y" => array('type' => 66, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +96 => new StructNode([ + "beacon" => array('type' => 94, 'tag' => -7), + "ally" => array('type' => 94, 'tag' => -6), + "autocast" => array('type' => 94, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +97 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +100 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +103 => new StructNode([ + "conversationId" => array('type' => 66, 'tag' => -2), + "replyId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +104 => new StructNode([ + "purchaseItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +105 => new StructNode([ + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +106 => new ChoiceNode(new IntegerNode(3), [ + 0 => 74, + 1 => 26, + 2 => 5, + 3 => 66, + 4 => 24, +]), +107 => new StructNode([ + "controlId" => array('type' => 66, 'tag' => -3), + "eventType" => array('type' => 66, 'tag' => -2), + "eventData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 85, 'tag' => -2), + "length" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +110 => new StructNode([ + "syncInfo" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +111 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +112 => new StructNode([ + "transmissionId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +113 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new OptionalNode(71), +115 => new StructNode([ + "target" => array('type' => 113, 'tag' => -4), + "distance" => array('type' => 114, 'tag' => -3), + "pitch" => array('type' => 114, 'tag' => -2), + "yaw" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +118 => new IntegerNode(11, 0), +119 => new StructNode([ + "x" => array('type' => 118, 'tag' => -2), + "y" => array('type' => 118, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +121 => new StructNode([ + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +122 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +123 => new StructNode([ + "planetId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +124 => new StructNode([ + "key" => array('type' => 94, 'tag' => -2), + "flags" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +125 => new StructNode([ + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +126 => new StructNode([ + "fulfillRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +127 => new StructNode([ + "cancelRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +128 => new StructNode([ + "researchItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +129 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +130 => new StructNode([ + "mercenaryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +131 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -2), + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +133 => new IntegerNode(19, 0), +134 => new StructNode([ + "decrementMs" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +135 => new StructNode([ + "portraitId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +136 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +137 => new StructNode([ + "result" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +138 => new StructNode([ + "gameMenuItemIndex" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +139 => new StructNode([ + "reason" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +140 => new StructNode([ + "purchaseCategoryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +141 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +142 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +144 => new StructNode([ + "progress" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version18468::$GAME_EVENT_MAPPING = [ + 5 => 64, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 62, + 12 => 63, + 22 => 65, + 23 => 64, + 25 => 64, + 26 => 69, + 27 => 80, + 28 => 87, + 29 => 88, + 30 => 90, + 31 => 92, + 32 => 93, + 33 => 96, + 34 => 97, + 35 => 98, + 37 => 99, + 38 => 100, + 39 => 101, + 40 => 102, + 41 => 103, + 44 => 64, + 45 => 108, + 46 => 111, + 47 => 112, + 48 => 112, + 49 => 115, + 50 => 64, + 51 => 104, + 52 => 64, + 53 => 105, + 54 => 64, + 55 => 107, + 56 => 110, + 57 => 117, + 58 => 120, + 59 => 121, + 63 => 64, + 64 => 122, + 65 => 123, + 66 => 124, + 67 => 136, + 68 => 64, + 69 => 64, + 70 => 125, + 71 => 126, + 72 => 127, + 73 => 64, + 74 => 64, + 75 => 128, + 76 => 129, + 77 => 64, + 78 => 64, + 79 => 130, + 80 => 64, + 81 => 64, + 82 => 131, + 83 => 132, + 84 => 132, + 85 => 105, + 86 => 64, + 87 => 64, + 88 => 134, + 89 => 135, + 90 => 137, + 91 => 138, + 92 => 139, + 93 => 104, + 94 => 140, + 95 => 141, + 96 => 64, +]; +Version18468::$MESSAGE_EVENT_MAPPING = [ + 0 => 142, + 1 => 143, + 2 => 144, + 3 => 64, +]; +Version18468::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version18574.php b/src/Version/Version18574.php new file mode 100644 index 0000000..51b4cb6 --- /dev/null +++ b/src/Version/Version18574.php @@ -0,0 +1,920 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(55); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version18574::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new StructNode([ + "control" => array('type' => 10, 'tag' => -10), + "userId" => array('type' => 47, 'tag' => -9), + "teamId" => array('type' => 1, 'tag' => -8), + "colorPref" => array('type' => 49, 'tag' => -7), + "racePref" => array('type' => 34, 'tag' => -6), + "difficulty" => array('type' => 2, 'tag' => -5), + "handicap" => array('type' => 0, 'tag' => -4), + "observe" => array('type' => 19, 'tag' => -3), + "rewards" => array('type' => 50, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 52, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +54 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +55 => new StructNode([ + "syncLobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +56 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +57 => new BlobNode(new IntegerNode(6, 0)), +58 => new StructNode([ + "name" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +59 => new StructNode([ + "name" => array('type' => 57, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +60 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 57, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +61 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +62 => new StructNode([ + "signature" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +63 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +64 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +65 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +66 => new IntegerNode(32, -2147483648), +67 => new StructNode([ + "x" => array('type' => 66, 'tag' => -2), + "y" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +68 => new StructNode([ + "point" => array('type' => 67, 'tag' => -4), + "time" => array('type' => 66, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +69 => new StructNode([ + "data" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +70 => new IntegerNode(18, 0), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +73 => new OptionalNode(72), +74 => new NullNode(), +75 => new IntegerNode(20, 0), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 71, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +78 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 76, + 2 => 77, + 3 => 5, +]), +79 => new OptionalNode(5), +80 => new StructNode([ + "cmdFlags" => array('type' => 70, 'tag' => -4), + "abil" => array('type' => 73, 'tag' => -3), + "data" => array('type' => 78, 'tag' => -2), + "otherUnit" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +81 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +82 => new ChoiceNode(new IntegerNode(2), [ + 0 => 74, + 1 => 42, + 2 => 81, + 3 => 81, +]), +83 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +84 => new ArrayNode( + new IntegerNode(8, 0), + 83 +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +86 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 82, 'tag' => -3), + "addSubgroups" => array('type' => 84, 'tag' => -2), + "addUnitTags" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +87 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +88 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 82, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +89 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +91 => new ArrayNode( + new IntegerNode(3, 0), + 66, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +92 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +93 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +94 => new IntegerNode(8, -128), +95 => new StructNode([ + "x" => array('type' => 66, 'tag' => -3), + "y" => array('type' => 66, 'tag' => -2), + "z" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +96 => new StructNode([ + "beacon" => array('type' => 94, 'tag' => -7), + "ally" => array('type' => 94, 'tag' => -6), + "autocast" => array('type' => 94, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +97 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +98 => new StructNode([ + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +100 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +101 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +103 => new StructNode([ + "conversationId" => array('type' => 66, 'tag' => -2), + "replyId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +104 => new StructNode([ + "purchaseItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +105 => new StructNode([ + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +106 => new ChoiceNode(new IntegerNode(3), [ + 0 => 74, + 1 => 26, + 2 => 5, + 3 => 66, + 4 => 24, +]), +107 => new StructNode([ + "controlId" => array('type' => 66, 'tag' => -3), + "eventType" => array('type' => 66, 'tag' => -2), + "eventData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +108 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 85, 'tag' => -2), + "length" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +110 => new StructNode([ + "syncInfo" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +111 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +112 => new StructNode([ + "transmissionId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +113 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new OptionalNode(71), +115 => new StructNode([ + "target" => array('type' => 113, 'tag' => -4), + "distance" => array('type' => 114, 'tag' => -3), + "pitch" => array('type' => 114, 'tag' => -2), + "yaw" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +118 => new IntegerNode(11, 0), +119 => new StructNode([ + "x" => array('type' => 118, 'tag' => -2), + "y" => array('type' => 118, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +121 => new StructNode([ + "posUI" => array('type' => 119, 'tag' => -2), + "posWorld" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +122 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +123 => new StructNode([ + "planetId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +124 => new StructNode([ + "key" => array('type' => 94, 'tag' => -2), + "flags" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +125 => new StructNode([ + "resources" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +126 => new StructNode([ + "fulfillRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +127 => new StructNode([ + "cancelRequestId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +128 => new StructNode([ + "researchItemId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +129 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +130 => new StructNode([ + "mercenaryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +131 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -2), + "difficultyLevel" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +133 => new IntegerNode(19, 0), +134 => new StructNode([ + "decrementMs" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +135 => new StructNode([ + "portraitId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +136 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +137 => new StructNode([ + "result" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +138 => new StructNode([ + "gameMenuItemIndex" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +139 => new StructNode([ + "reason" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +140 => new StructNode([ + "purchaseCategoryId" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +141 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +142 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +144 => new StructNode([ + "progress" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version18574::$GAME_EVENT_MAPPING = [ + 5 => 64, + 7 => 56, + 8 => 58, + 9 => 59, + 10 => 60, + 11 => 62, + 12 => 63, + 22 => 65, + 23 => 64, + 25 => 64, + 26 => 69, + 27 => 80, + 28 => 87, + 29 => 88, + 30 => 90, + 31 => 92, + 32 => 93, + 33 => 96, + 34 => 97, + 35 => 98, + 37 => 99, + 38 => 100, + 39 => 101, + 40 => 102, + 41 => 103, + 44 => 64, + 45 => 108, + 46 => 111, + 47 => 112, + 48 => 112, + 49 => 115, + 50 => 64, + 51 => 104, + 52 => 64, + 53 => 105, + 54 => 64, + 55 => 107, + 56 => 110, + 57 => 117, + 58 => 120, + 59 => 121, + 63 => 64, + 64 => 122, + 65 => 123, + 66 => 124, + 67 => 136, + 68 => 64, + 69 => 64, + 70 => 125, + 71 => 126, + 72 => 127, + 73 => 64, + 74 => 64, + 75 => 128, + 76 => 129, + 77 => 64, + 78 => 64, + 79 => 130, + 80 => 64, + 81 => 64, + 82 => 131, + 83 => 132, + 84 => 132, + 85 => 105, + 86 => 64, + 87 => 64, + 88 => 134, + 89 => 135, + 90 => 137, + 91 => 138, + 92 => 139, + 93 => 104, + 94 => 140, + 95 => 141, + 96 => 64, +]; +Version18574::$MESSAGE_EVENT_MAPPING = [ + 0 => 142, + 1 => 143, + 2 => 144, + 3 => 64, +]; +Version18574::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version19132.php b/src/Version/Version19132.php new file mode 100644 index 0000000..176f148 --- /dev/null +++ b/src/Version/Version19132.php @@ -0,0 +1,925 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version19132::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 47, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 49, 'tag' => -8), + "racePref" => array('type' => 34, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 50, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +63 => new StructNode([ + "signature" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +64 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +65 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +66 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +67 => new IntegerNode(32, -2147483648), +68 => new StructNode([ + "x" => array('type' => 67, 'tag' => -2), + "y" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +69 => new StructNode([ + "point" => array('type' => 68, 'tag' => -4), + "time" => array('type' => 67, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +70 => new StructNode([ + "data" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +71 => new IntegerNode(18, 0), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +74 => new OptionalNode(73), +75 => new NullNode(), +76 => new IntegerNode(20, 0), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -6), + "timer" => array('type' => 10, 'tag' => -5), + "tag" => array('type' => 5, 'tag' => -4), + "snapshotUnitLink" => array('type' => 72, 'tag' => -3), + "snapshotPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +79 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 77, + 2 => 78, + 3 => 5, +]), +80 => new OptionalNode(5), +81 => new StructNode([ + "cmdFlags" => array('type' => 71, 'tag' => -4), + "abil" => array('type' => 74, 'tag' => -3), + "data" => array('type' => 79, 'tag' => -2), + "otherUnit" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +82 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 42, + 2 => 82, + 3 => 82, +]), +84 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 84 +), +86 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +87 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 83, 'tag' => -3), + "addSubgroups" => array('type' => 85, 'tag' => -2), + "addUnitTags" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +88 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +89 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +90 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +91 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +92 => new ArrayNode( + new IntegerNode(3, 0), + 67, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +93 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +94 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +95 => new IntegerNode(8, -128), +96 => new StructNode([ + "x" => array('type' => 67, 'tag' => -3), + "y" => array('type' => 67, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +97 => new StructNode([ + "beacon" => array('type' => 95, 'tag' => -7), + "ally" => array('type' => 95, 'tag' => -6), + "autocast" => array('type' => 95, 'tag' => -5), + "targetUnitTag" => array('type' => 5, 'tag' => -4), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -3), + "targetUnitSnapshotPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +98 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +100 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +101 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +103 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +104 => new StructNode([ + "conversationId" => array('type' => 67, 'tag' => -2), + "replyId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +105 => new StructNode([ + "purchaseItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +106 => new StructNode([ + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +107 => new ChoiceNode(new IntegerNode(3), [ + 0 => 75, + 1 => 26, + 2 => 5, + 3 => 67, + 4 => 24, +]), +108 => new StructNode([ + "controlId" => array('type' => 67, 'tag' => -3), + "eventType" => array('type' => 67, 'tag' => -2), + "eventData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +110 => new StructNode([ + "soundHash" => array('type' => 86, 'tag' => -2), + "length" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +111 => new StructNode([ + "syncInfo" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +112 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +113 => new StructNode([ + "transmissionId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +114 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +115 => new OptionalNode(72), +116 => new StructNode([ + "target" => array('type' => 114, 'tag' => -4), + "distance" => array('type' => 115, 'tag' => -3), + "pitch" => array('type' => 115, 'tag' => -2), + "yaw" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +119 => new IntegerNode(11, 0), +120 => new StructNode([ + "x" => array('type' => 119, 'tag' => -2), + "y" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +121 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +122 => new StructNode([ + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +123 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +124 => new StructNode([ + "planetId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +125 => new StructNode([ + "key" => array('type' => 95, 'tag' => -2), + "flags" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +126 => new StructNode([ + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +127 => new StructNode([ + "fulfillRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +128 => new StructNode([ + "cancelRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +129 => new StructNode([ + "researchItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +130 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +131 => new StructNode([ + "mercenaryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -2), + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +133 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +134 => new IntegerNode(19, 0), +135 => new StructNode([ + "decrementMs" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +136 => new StructNode([ + "portraitId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +137 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +138 => new StructNode([ + "result" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +139 => new StructNode([ + "gameMenuItemIndex" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +140 => new StructNode([ + "reason" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +141 => new StructNode([ + "purchaseCategoryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +142 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +144 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +145 => new StructNode([ + "progress" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version19132::$GAME_EVENT_MAPPING = [ + 5 => 65, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 63, + 12 => 64, + 22 => 66, + 23 => 65, + 25 => 65, + 26 => 70, + 27 => 81, + 28 => 88, + 29 => 89, + 30 => 91, + 31 => 93, + 32 => 94, + 33 => 97, + 34 => 98, + 35 => 99, + 37 => 100, + 38 => 101, + 39 => 102, + 40 => 103, + 41 => 104, + 44 => 65, + 45 => 109, + 46 => 112, + 47 => 113, + 48 => 113, + 49 => 116, + 50 => 65, + 51 => 105, + 52 => 65, + 53 => 106, + 54 => 65, + 55 => 108, + 56 => 111, + 57 => 118, + 58 => 121, + 59 => 122, + 63 => 65, + 64 => 123, + 65 => 124, + 66 => 125, + 67 => 137, + 68 => 65, + 69 => 65, + 70 => 126, + 71 => 127, + 72 => 128, + 73 => 65, + 74 => 65, + 75 => 129, + 76 => 130, + 77 => 65, + 78 => 65, + 79 => 131, + 80 => 65, + 81 => 65, + 82 => 132, + 83 => 133, + 84 => 133, + 85 => 106, + 86 => 65, + 87 => 65, + 88 => 135, + 89 => 136, + 90 => 138, + 91 => 139, + 92 => 140, + 93 => 105, + 94 => 141, + 95 => 142, + 96 => 65, +]; +Version19132::$MESSAGE_EVENT_MAPPING = [ + 0 => 143, + 1 => 144, + 2 => 145, + 3 => 65, +]; +Version19132::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version19458.php b/src/Version/Version19458.php new file mode 100644 index 0000000..95fa4b7 --- /dev/null +++ b/src/Version/Version19458.php @@ -0,0 +1,927 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version19458::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 47, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 49, 'tag' => -8), + "racePref" => array('type' => 34, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 50, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +63 => new StructNode([ + "signature" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +64 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +65 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +66 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +67 => new IntegerNode(32, -2147483648), +68 => new StructNode([ + "x" => array('type' => 67, 'tag' => -2), + "y" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +69 => new StructNode([ + "point" => array('type' => 68, 'tag' => -4), + "time" => array('type' => 67, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +70 => new StructNode([ + "data" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +71 => new IntegerNode(18, 0), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +74 => new OptionalNode(73), +75 => new NullNode(), +76 => new IntegerNode(20, 0), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 72, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 47, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +79 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 77, + 2 => 78, + 3 => 5, +]), +80 => new OptionalNode(5), +81 => new StructNode([ + "cmdFlags" => array('type' => 71, 'tag' => -4), + "abil" => array('type' => 74, 'tag' => -3), + "data" => array('type' => 79, 'tag' => -2), + "otherUnit" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +82 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 42, + 2 => 82, + 3 => 82, +]), +84 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 84 +), +86 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +87 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 83, 'tag' => -3), + "addSubgroups" => array('type' => 85, 'tag' => -2), + "addUnitTags" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +88 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +89 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +90 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +91 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +92 => new ArrayNode( + new IntegerNode(3, 0), + 67, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +93 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +94 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +95 => new IntegerNode(8, -128), +96 => new StructNode([ + "x" => array('type' => 67, 'tag' => -3), + "y" => array('type' => 67, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +97 => new StructNode([ + "beacon" => array('type' => 95, 'tag' => -8), + "ally" => array('type' => 95, 'tag' => -7), + "autocast" => array('type' => 95, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +98 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +100 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +101 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +103 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +104 => new StructNode([ + "conversationId" => array('type' => 67, 'tag' => -2), + "replyId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +105 => new StructNode([ + "purchaseItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +106 => new StructNode([ + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +107 => new ChoiceNode(new IntegerNode(3), [ + 0 => 75, + 1 => 26, + 2 => 5, + 3 => 67, + 4 => 24, +]), +108 => new StructNode([ + "controlId" => array('type' => 67, 'tag' => -3), + "eventType" => array('type' => 67, 'tag' => -2), + "eventData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +110 => new StructNode([ + "soundHash" => array('type' => 86, 'tag' => -2), + "length" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +111 => new StructNode([ + "syncInfo" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +112 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +113 => new StructNode([ + "transmissionId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +114 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +115 => new OptionalNode(72), +116 => new StructNode([ + "target" => array('type' => 114, 'tag' => -4), + "distance" => array('type' => 115, 'tag' => -3), + "pitch" => array('type' => 115, 'tag' => -2), + "yaw" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +119 => new IntegerNode(11, 0), +120 => new StructNode([ + "x" => array('type' => 119, 'tag' => -2), + "y" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +121 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +122 => new StructNode([ + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +123 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +124 => new StructNode([ + "planetId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +125 => new StructNode([ + "key" => array('type' => 95, 'tag' => -2), + "flags" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +126 => new StructNode([ + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +127 => new StructNode([ + "fulfillRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +128 => new StructNode([ + "cancelRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +129 => new StructNode([ + "researchItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +130 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +131 => new StructNode([ + "mercenaryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -2), + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +133 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +134 => new IntegerNode(19, 0), +135 => new StructNode([ + "decrementMs" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +136 => new StructNode([ + "portraitId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +137 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +138 => new StructNode([ + "result" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +139 => new StructNode([ + "gameMenuItemIndex" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +140 => new StructNode([ + "reason" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +141 => new StructNode([ + "purchaseCategoryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +142 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +144 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +145 => new StructNode([ + "progress" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version19458::$GAME_EVENT_MAPPING = [ + 5 => 65, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 63, + 12 => 64, + 22 => 66, + 23 => 65, + 25 => 65, + 26 => 70, + 27 => 81, + 28 => 88, + 29 => 89, + 30 => 91, + 31 => 93, + 32 => 94, + 33 => 97, + 34 => 98, + 35 => 99, + 37 => 100, + 38 => 101, + 39 => 102, + 40 => 103, + 41 => 104, + 44 => 65, + 45 => 109, + 46 => 112, + 47 => 113, + 48 => 113, + 49 => 116, + 50 => 65, + 51 => 105, + 52 => 65, + 53 => 106, + 54 => 65, + 55 => 108, + 56 => 111, + 57 => 118, + 58 => 121, + 59 => 122, + 63 => 65, + 64 => 123, + 65 => 124, + 66 => 125, + 67 => 137, + 68 => 65, + 69 => 65, + 70 => 126, + 71 => 127, + 72 => 128, + 73 => 65, + 74 => 65, + 75 => 129, + 76 => 130, + 77 => 65, + 78 => 65, + 79 => 131, + 80 => 65, + 81 => 65, + 82 => 132, + 83 => 133, + 84 => 133, + 85 => 106, + 86 => 65, + 87 => 65, + 88 => 135, + 89 => 136, + 90 => 138, + 91 => 139, + 92 => 140, + 93 => 105, + 94 => 141, + 95 => 142, + 96 => 65, +]; +Version19458::$MESSAGE_EVENT_MAPPING = [ + 0 => 143, + 1 => 144, + 2 => 145, + 3 => 65, +]; +Version19458::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version19595.php b/src/Version/Version19595.php new file mode 100644 index 0000000..5471b4a --- /dev/null +++ b/src/Version/Version19595.php @@ -0,0 +1,927 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version19595::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 47, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 49, 'tag' => -8), + "racePref" => array('type' => 34, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 50, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +63 => new StructNode([ + "signature" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +64 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +65 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +66 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +67 => new IntegerNode(32, -2147483648), +68 => new StructNode([ + "x" => array('type' => 67, 'tag' => -2), + "y" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +69 => new StructNode([ + "point" => array('type' => 68, 'tag' => -4), + "time" => array('type' => 67, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +70 => new StructNode([ + "data" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +71 => new IntegerNode(18, 0), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +74 => new OptionalNode(73), +75 => new NullNode(), +76 => new IntegerNode(20, 0), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 72, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 47, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +79 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 77, + 2 => 78, + 3 => 5, +]), +80 => new OptionalNode(5), +81 => new StructNode([ + "cmdFlags" => array('type' => 71, 'tag' => -4), + "abil" => array('type' => 74, 'tag' => -3), + "data" => array('type' => 79, 'tag' => -2), + "otherUnit" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +82 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 42, + 2 => 82, + 3 => 82, +]), +84 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 84 +), +86 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +87 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 83, 'tag' => -3), + "addSubgroups" => array('type' => 85, 'tag' => -2), + "addUnitTags" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +88 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +89 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +90 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +91 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +92 => new ArrayNode( + new IntegerNode(3, 0), + 67, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +93 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +94 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +95 => new IntegerNode(8, -128), +96 => new StructNode([ + "x" => array('type' => 67, 'tag' => -3), + "y" => array('type' => 67, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +97 => new StructNode([ + "beacon" => array('type' => 95, 'tag' => -8), + "ally" => array('type' => 95, 'tag' => -7), + "autocast" => array('type' => 95, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +98 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +100 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +101 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +103 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +104 => new StructNode([ + "conversationId" => array('type' => 67, 'tag' => -2), + "replyId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +105 => new StructNode([ + "purchaseItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +106 => new StructNode([ + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +107 => new ChoiceNode(new IntegerNode(3), [ + 0 => 75, + 1 => 26, + 2 => 5, + 3 => 67, + 4 => 24, +]), +108 => new StructNode([ + "controlId" => array('type' => 67, 'tag' => -3), + "eventType" => array('type' => 67, 'tag' => -2), + "eventData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +110 => new StructNode([ + "soundHash" => array('type' => 86, 'tag' => -2), + "length" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +111 => new StructNode([ + "syncInfo" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +112 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +113 => new StructNode([ + "transmissionId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +114 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +115 => new OptionalNode(72), +116 => new StructNode([ + "target" => array('type' => 114, 'tag' => -4), + "distance" => array('type' => 115, 'tag' => -3), + "pitch" => array('type' => 115, 'tag' => -2), + "yaw" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +119 => new IntegerNode(11, 0), +120 => new StructNode([ + "x" => array('type' => 119, 'tag' => -2), + "y" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +121 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +122 => new StructNode([ + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +123 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +124 => new StructNode([ + "planetId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +125 => new StructNode([ + "key" => array('type' => 95, 'tag' => -2), + "flags" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +126 => new StructNode([ + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +127 => new StructNode([ + "fulfillRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +128 => new StructNode([ + "cancelRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +129 => new StructNode([ + "researchItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +130 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +131 => new StructNode([ + "mercenaryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -2), + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +133 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +134 => new IntegerNode(19, 0), +135 => new StructNode([ + "decrementMs" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +136 => new StructNode([ + "portraitId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +137 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +138 => new StructNode([ + "result" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +139 => new StructNode([ + "gameMenuItemIndex" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +140 => new StructNode([ + "reason" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +141 => new StructNode([ + "purchaseCategoryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +142 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +144 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +145 => new StructNode([ + "progress" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version19595::$GAME_EVENT_MAPPING = [ + 5 => 65, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 63, + 12 => 64, + 22 => 66, + 23 => 65, + 25 => 65, + 26 => 70, + 27 => 81, + 28 => 88, + 29 => 89, + 30 => 91, + 31 => 93, + 32 => 94, + 33 => 97, + 34 => 98, + 35 => 99, + 37 => 100, + 38 => 101, + 39 => 102, + 40 => 103, + 41 => 104, + 44 => 65, + 45 => 109, + 46 => 112, + 47 => 113, + 48 => 113, + 49 => 116, + 50 => 65, + 51 => 105, + 52 => 65, + 53 => 106, + 54 => 65, + 55 => 108, + 56 => 111, + 57 => 118, + 58 => 121, + 59 => 122, + 63 => 65, + 64 => 123, + 65 => 124, + 66 => 125, + 67 => 137, + 68 => 65, + 69 => 65, + 70 => 126, + 71 => 127, + 72 => 128, + 73 => 65, + 74 => 65, + 75 => 129, + 76 => 130, + 77 => 65, + 78 => 65, + 79 => 131, + 80 => 65, + 81 => 65, + 82 => 132, + 83 => 133, + 84 => 133, + 85 => 106, + 86 => 65, + 87 => 65, + 88 => 135, + 89 => 136, + 90 => 138, + 91 => 139, + 92 => 140, + 93 => 105, + 94 => 141, + 95 => 142, + 96 => 65, +]; +Version19595::$MESSAGE_EVENT_MAPPING = [ + 0 => 143, + 1 => 144, + 2 => 145, + 3 => 65, +]; +Version19595::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version19679.php b/src/Version/Version19679.php new file mode 100644 index 0000000..44e8581 --- /dev/null +++ b/src/Version/Version19679.php @@ -0,0 +1,927 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version19679::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 47, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 49, 'tag' => -8), + "racePref" => array('type' => 34, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 50, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +63 => new StructNode([ + "signature" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +64 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +65 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +66 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +67 => new IntegerNode(32, -2147483648), +68 => new StructNode([ + "x" => array('type' => 67, 'tag' => -2), + "y" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +69 => new StructNode([ + "point" => array('type' => 68, 'tag' => -4), + "time" => array('type' => 67, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +70 => new StructNode([ + "data" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +71 => new IntegerNode(18, 0), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +74 => new OptionalNode(73), +75 => new NullNode(), +76 => new IntegerNode(20, 0), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 72, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 47, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +79 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 77, + 2 => 78, + 3 => 5, +]), +80 => new OptionalNode(5), +81 => new StructNode([ + "cmdFlags" => array('type' => 71, 'tag' => -4), + "abil" => array('type' => 74, 'tag' => -3), + "data" => array('type' => 79, 'tag' => -2), + "otherUnit" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +82 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 42, + 2 => 82, + 3 => 82, +]), +84 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 84 +), +86 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +87 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 83, 'tag' => -3), + "addSubgroups" => array('type' => 85, 'tag' => -2), + "addUnitTags" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +88 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +89 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +90 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +91 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +92 => new ArrayNode( + new IntegerNode(3, 0), + 67, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +93 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +94 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +95 => new IntegerNode(8, -128), +96 => new StructNode([ + "x" => array('type' => 67, 'tag' => -3), + "y" => array('type' => 67, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +97 => new StructNode([ + "beacon" => array('type' => 95, 'tag' => -8), + "ally" => array('type' => 95, 'tag' => -7), + "autocast" => array('type' => 95, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +98 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +100 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +101 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +103 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +104 => new StructNode([ + "conversationId" => array('type' => 67, 'tag' => -2), + "replyId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +105 => new StructNode([ + "purchaseItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +106 => new StructNode([ + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +107 => new ChoiceNode(new IntegerNode(3), [ + 0 => 75, + 1 => 26, + 2 => 5, + 3 => 67, + 4 => 24, +]), +108 => new StructNode([ + "controlId" => array('type' => 67, 'tag' => -3), + "eventType" => array('type' => 67, 'tag' => -2), + "eventData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +110 => new StructNode([ + "soundHash" => array('type' => 86, 'tag' => -2), + "length" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +111 => new StructNode([ + "syncInfo" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +112 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +113 => new StructNode([ + "transmissionId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +114 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +115 => new OptionalNode(72), +116 => new StructNode([ + "target" => array('type' => 114, 'tag' => -4), + "distance" => array('type' => 115, 'tag' => -3), + "pitch" => array('type' => 115, 'tag' => -2), + "yaw" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +119 => new IntegerNode(11, 0), +120 => new StructNode([ + "x" => array('type' => 119, 'tag' => -2), + "y" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +121 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +122 => new StructNode([ + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +123 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +124 => new StructNode([ + "planetId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +125 => new StructNode([ + "key" => array('type' => 95, 'tag' => -2), + "flags" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +126 => new StructNode([ + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +127 => new StructNode([ + "fulfillRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +128 => new StructNode([ + "cancelRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +129 => new StructNode([ + "researchItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +130 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +131 => new StructNode([ + "mercenaryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -2), + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +133 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +134 => new IntegerNode(19, 0), +135 => new StructNode([ + "decrementMs" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +136 => new StructNode([ + "portraitId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +137 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +138 => new StructNode([ + "result" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +139 => new StructNode([ + "gameMenuItemIndex" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +140 => new StructNode([ + "reason" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +141 => new StructNode([ + "purchaseCategoryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +142 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +144 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +145 => new StructNode([ + "progress" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version19679::$GAME_EVENT_MAPPING = [ + 5 => 65, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 63, + 12 => 64, + 22 => 66, + 23 => 65, + 25 => 65, + 26 => 70, + 27 => 81, + 28 => 88, + 29 => 89, + 30 => 91, + 31 => 93, + 32 => 94, + 33 => 97, + 34 => 98, + 35 => 99, + 37 => 100, + 38 => 101, + 39 => 102, + 40 => 103, + 41 => 104, + 44 => 65, + 45 => 109, + 46 => 112, + 47 => 113, + 48 => 113, + 49 => 116, + 50 => 65, + 51 => 105, + 52 => 65, + 53 => 106, + 54 => 65, + 55 => 108, + 56 => 111, + 57 => 118, + 58 => 121, + 59 => 122, + 63 => 65, + 64 => 123, + 65 => 124, + 66 => 125, + 67 => 137, + 68 => 65, + 69 => 65, + 70 => 126, + 71 => 127, + 72 => 128, + 73 => 65, + 74 => 65, + 75 => 129, + 76 => 130, + 77 => 65, + 78 => 65, + 79 => 131, + 80 => 65, + 81 => 65, + 82 => 132, + 83 => 133, + 84 => 133, + 85 => 106, + 86 => 65, + 87 => 65, + 88 => 135, + 89 => 136, + 90 => 138, + 91 => 139, + 92 => 140, + 93 => 105, + 94 => 141, + 95 => 142, + 96 => 65, +]; +Version19679::$MESSAGE_EVENT_MAPPING = [ + 0 => 143, + 1 => 144, + 2 => 145, + 3 => 65, +]; +Version19679::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version21029.php b/src/Version/Version21029.php new file mode 100644 index 0000000..5a63be7 --- /dev/null +++ b/src/Version/Version21029.php @@ -0,0 +1,927 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(56); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(32); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version21029::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(4, 0), + 29 +), +31 => new OptionalNode(30), +32 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +33 => new OptionalNode(10), +34 => new StructNode([ + "race" => array('type' => 33, 'tag' => -1), +]), +35 => new StructNode([ + "team" => array('type' => 33, 'tag' => -1), +]), +36 => new StructNode([ + "name" => array('type' => 9, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "racePreference" => array('type' => 34, 'tag' => -5), + "teamPreference" => array('type' => 35, 'tag' => -4), + "testMap" => array('type' => 26, 'tag' => -3), + "testAuto" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +37 => new ArrayNode( + new IntegerNode(5, 0), + 36, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +38 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +39 => new IntegerNode(4, 1), +40 => new IntegerNode(8, 1), +41 => new BitArrayNode( + new IntegerNode(6, 0) +), +42 => new BitArrayNode( + new IntegerNode(8, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +43 => new BitArrayNode( + new IntegerNode(2, 0) +), +44 => new StructNode([ + "allowedColors" => array('type' => 41, 'tag' => -5), + "allowedRaces" => array('type' => 42, 'tag' => -4), + "allowedDifficulty" => array('type' => 41, 'tag' => -3), + "allowedControls" => array('type' => 42, 'tag' => -2), + "allowedObserveTypes" => array('type' => 43, 'tag' => -1), +]), +45 => new ArrayNode( + new IntegerNode(5, 0), + 44 +), +46 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 38, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 39, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 40, 'tag' => -13), + "maxControls" => array('type' => 40, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 45, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +47 => new OptionalNode(1), +48 => new OptionalNode(7), +49 => new StructNode([ + "color" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +51 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +52 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 47, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 49, 'tag' => -8), + "racePref" => array('type' => 34, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 50, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 51, 'tag' => -1), +]), +53 => new ArrayNode( + new IntegerNode(5, 0), + 52 +), +54 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 53, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 47, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +55 => new StructNode([ + "userInitialData" => array('type' => 37, 'tag' => -3), + "gameDescription" => array('type' => 46, 'tag' => -2), + "lobbyState" => array('type' => 54, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +56 => new StructNode([ + "syncLobbyState" => array('type' => 55, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +57 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +58 => new BlobNode(new IntegerNode(6, 0)), +59 => new StructNode([ + "name" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +60 => new StructNode([ + "name" => array('type' => 58, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +61 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 58, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +62 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +63 => new StructNode([ + "signature" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +64 => new StructNode([ + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -4), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -3), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -2), + "isMapToMapTransition" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +65 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +66 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +67 => new IntegerNode(32, -2147483648), +68 => new StructNode([ + "x" => array('type' => 67, 'tag' => -2), + "y" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +69 => new StructNode([ + "point" => array('type' => 68, 'tag' => -4), + "time" => array('type' => 67, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +70 => new StructNode([ + "data" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +71 => new IntegerNode(18, 0), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 33, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +74 => new OptionalNode(73), +75 => new NullNode(), +76 => new IntegerNode(20, 0), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 72, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 47, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -2), + "snapshotPoint" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +79 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 77, + 2 => 78, + 3 => 5, +]), +80 => new OptionalNode(5), +81 => new StructNode([ + "cmdFlags" => array('type' => 71, 'tag' => -4), + "abil" => array('type' => 74, 'tag' => -3), + "data" => array('type' => 79, 'tag' => -2), + "otherUnit" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +82 => new ArrayNode( + new IntegerNode(8, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 75, + 1 => 42, + 2 => 82, + 3 => 82, +]), +84 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +85 => new ArrayNode( + new IntegerNode(8, 0), + 84 +), +86 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +87 => new StructNode([ + "subgroupIndex" => array('type' => 10, 'tag' => -4), + "removeMask" => array('type' => 83, 'tag' => -3), + "addSubgroups" => array('type' => 85, 'tag' => -2), + "addUnitTags" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +88 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +89 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +90 => new StructNode([ + "count" => array('type' => 10, 'tag' => -6), + "subgroupCount" => array('type' => 10, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 10, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +91 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +92 => new ArrayNode( + new IntegerNode(3, 0), + 67, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +93 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +94 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +95 => new IntegerNode(8, -128), +96 => new StructNode([ + "x" => array('type' => 67, 'tag' => -3), + "y" => array('type' => 67, 'tag' => -2), + "z" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +97 => new StructNode([ + "beacon" => array('type' => 95, 'tag' => -8), + "ally" => array('type' => 95, 'tag' => -7), + "autocast" => array('type' => 95, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 47, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 47, 'tag' => -2), + "targetPoint" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +98 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +99 => new StructNode([ + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +100 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +101 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +102 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +103 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +104 => new StructNode([ + "conversationId" => array('type' => 67, 'tag' => -2), + "replyId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +105 => new StructNode([ + "purchaseItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +106 => new StructNode([ + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +107 => new ChoiceNode(new IntegerNode(3), [ + 0 => 75, + 1 => 26, + 2 => 5, + 3 => 67, + 4 => 24, +]), +108 => new StructNode([ + "controlId" => array('type' => 67, 'tag' => -3), + "eventType" => array('type' => 67, 'tag' => -2), + "eventData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +109 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +110 => new StructNode([ + "soundHash" => array('type' => 86, 'tag' => -2), + "length" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +111 => new StructNode([ + "syncInfo" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +112 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +113 => new StructNode([ + "transmissionId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +114 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +115 => new OptionalNode(72), +116 => new StructNode([ + "target" => array('type' => 114, 'tag' => -4), + "distance" => array('type' => 115, 'tag' => -3), + "pitch" => array('type' => 115, 'tag' => -2), + "yaw" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +119 => new IntegerNode(11, 0), +120 => new StructNode([ + "x" => array('type' => 119, 'tag' => -2), + "y" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +121 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +122 => new StructNode([ + "posUI" => array('type' => 120, 'tag' => -2), + "posWorld" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +123 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +124 => new StructNode([ + "planetId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +125 => new StructNode([ + "key" => array('type' => 95, 'tag' => -2), + "flags" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +126 => new StructNode([ + "resources" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +127 => new StructNode([ + "fulfillRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +128 => new StructNode([ + "cancelRequestId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +129 => new StructNode([ + "researchItemId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +130 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +131 => new StructNode([ + "mercenaryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +132 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -2), + "difficultyLevel" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +133 => new StructNode([ + "battleReportId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +134 => new IntegerNode(19, 0), +135 => new StructNode([ + "decrementMs" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +136 => new StructNode([ + "portraitId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +137 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +138 => new StructNode([ + "result" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +139 => new StructNode([ + "gameMenuItemIndex" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +140 => new StructNode([ + "reason" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +141 => new StructNode([ + "purchaseCategoryId" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +142 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +143 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +144 => new StructNode([ + "recipient" => array('type' => 19, 'tag' => -2), + "point" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +145 => new StructNode([ + "progress" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version21029::$GAME_EVENT_MAPPING = [ + 5 => 65, + 7 => 57, + 8 => 59, + 9 => 60, + 10 => 61, + 11 => 63, + 12 => 64, + 22 => 66, + 23 => 65, + 25 => 65, + 26 => 70, + 27 => 81, + 28 => 88, + 29 => 89, + 30 => 91, + 31 => 93, + 32 => 94, + 33 => 97, + 34 => 98, + 35 => 99, + 37 => 100, + 38 => 101, + 39 => 102, + 40 => 103, + 41 => 104, + 44 => 65, + 45 => 109, + 46 => 112, + 47 => 113, + 48 => 113, + 49 => 116, + 50 => 65, + 51 => 105, + 52 => 65, + 53 => 106, + 54 => 65, + 55 => 108, + 56 => 111, + 57 => 118, + 58 => 121, + 59 => 122, + 63 => 65, + 64 => 123, + 65 => 124, + 66 => 125, + 67 => 137, + 68 => 65, + 69 => 65, + 70 => 126, + 71 => 127, + 72 => 128, + 73 => 65, + 74 => 65, + 75 => 129, + 76 => 130, + 77 => 65, + 78 => 65, + 79 => 131, + 80 => 65, + 81 => 65, + 82 => 132, + 83 => 133, + 84 => 133, + 85 => 106, + 86 => 65, + 87 => 65, + 88 => 135, + 89 => 136, + 90 => 138, + 91 => 139, + 92 => 140, + 93 => 105, + 94 => 141, + 95 => 142, + 96 => 65, +]; +Version21029::$MESSAGE_EVENT_MAPPING = [ + 0 => 143, + 1 => 144, + 2 => 145, + 3 => 65, +]; +Version21029::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version21995.php b/src/Version/Version21995.php new file mode 100644 index 0000000..6b21b6d --- /dev/null +++ b/src/Version/Version21995.php @@ -0,0 +1,988 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(58); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(34); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version21995::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(6, 0), + 29 +), +31 => new OptionalNode(30), +32 => new ArrayNode( + new IntegerNode(6, 0), + 24 +), +33 => new OptionalNode(32), +34 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), + "modPaths" => array('type' => 33, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +35 => new OptionalNode(10), +36 => new StructNode([ + "race" => array('type' => 35, 'tag' => -1), +]), +37 => new StructNode([ + "team" => array('type' => 35, 'tag' => -1), +]), +38 => new StructNode([ + "name" => array('type' => 9, 'tag' => -8), + "randomSeed" => array('type' => 5, 'tag' => -7), + "racePreference" => array('type' => 36, 'tag' => -6), + "teamPreference" => array('type' => 37, 'tag' => -5), + "testMap" => array('type' => 26, 'tag' => -4), + "testAuto" => array('type' => 26, 'tag' => -3), + "examine" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +39 => new ArrayNode( + new IntegerNode(5, 0), + 38, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +40 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -11), + "teamsTogether" => array('type' => 26, 'tag' => -10), + "advancedSharedControl" => array('type' => 26, 'tag' => -9), + "randomRaces" => array('type' => 26, 'tag' => -8), + "battleNet" => array('type' => 26, 'tag' => -7), + "amm" => array('type' => 26, 'tag' => -6), + "ranked" => array('type' => 26, 'tag' => -5), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -4), + "fog" => array('type' => 19, 'tag' => -3), + "observers" => array('type' => 19, 'tag' => -2), + "userDifficulty" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +41 => new IntegerNode(4, 1), +42 => new IntegerNode(8, 1), +43 => new BitArrayNode( + new IntegerNode(6, 0) +), +44 => new BitArrayNode( + new IntegerNode(8, 0) +), +45 => new BitArrayNode( + new IntegerNode(2, 0) +), +46 => new StructNode([ + "allowedColors" => array('type' => 43, 'tag' => -5), + "allowedRaces" => array('type' => 44, 'tag' => -4), + "allowedDifficulty" => array('type' => 43, 'tag' => -3), + "allowedControls" => array('type' => 44, 'tag' => -2), + "allowedObserveTypes" => array('type' => 45, 'tag' => -1), +]), +47 => new ArrayNode( + new IntegerNode(5, 0), + 46 +), +48 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 40, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 41, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 42, 'tag' => -13), + "maxControls" => array('type' => 42, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 47, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +49 => new OptionalNode(1), +50 => new OptionalNode(7), +51 => new StructNode([ + "color" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +53 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +54 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 49, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 51, 'tag' => -8), + "racePref" => array('type' => 36, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 52, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 53, 'tag' => -1), +]), +55 => new ArrayNode( + new IntegerNode(5, 0), + 54 +), +56 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 55, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 49, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +57 => new StructNode([ + "userInitialData" => array('type' => 39, 'tag' => -3), + "gameDescription" => array('type' => 48, 'tag' => -2), + "lobbyState" => array('type' => 56, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +58 => new StructNode([ + "syncLobbyState" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +59 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +60 => new BlobNode(new IntegerNode(6, 0)), +61 => new StructNode([ + "name" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +62 => new StructNode([ + "name" => array('type' => 60, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +63 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 60, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +64 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +65 => new StructNode([ + "signature" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +66 => new StructNode([ + "gameFullyDownloaded" => array('type' => 26, 'tag' => -6), + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -5), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -4), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -3), + "isMapToMapTransition" => array('type' => 26, 'tag' => -2), + "useAIBeacons" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +67 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +68 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +69 => new IntegerNode(32, -2147483648), +70 => new StructNode([ + "x" => array('type' => 69, 'tag' => -2), + "y" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +71 => new StructNode([ + "point" => array('type' => 70, 'tag' => -4), + "time" => array('type' => 69, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +72 => new StructNode([ + "data" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +73 => new IntegerNode(20, 0), +74 => new IntegerNode(16, 0), +75 => new StructNode([ + "abilLink" => array('type' => 74, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 35, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +76 => new OptionalNode(75), +77 => new NullNode(), +78 => new StructNode([ + "x" => array('type' => 73, 'tag' => -3), + "y" => array('type' => 73, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 74, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 49, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 49, 'tag' => -2), + "snapshotPoint" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +80 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 78, + 2 => 79, + 3 => 5, +]), +81 => new OptionalNode(5), +82 => new StructNode([ + "cmdFlags" => array('type' => 73, 'tag' => -4), + "abil" => array('type' => 76, 'tag' => -3), + "data" => array('type' => 80, 'tag' => -2), + "otherUnit" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +83 => new IntegerNode(9, 0), +84 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +85 => new ArrayNode( + new IntegerNode(9, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +86 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 84, + 2 => 85, + 3 => 85, +]), +87 => new StructNode([ + "unitLink" => array('type' => 74, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +88 => new ArrayNode( + new IntegerNode(9, 0), + 87 +), +89 => new StructNode([ + "subgroupIndex" => array('type' => 83, 'tag' => -4), + "removeMask" => array('type' => 86, 'tag' => -3), + "addSubgroups" => array('type' => 88, 'tag' => -2), + "addUnitTags" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +91 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +92 => new StructNode([ + "count" => array('type' => 83, 'tag' => -6), + "subgroupCount" => array('type' => 83, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 83, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +93 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +94 => new ArrayNode( + new IntegerNode(3, 0), + 69, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +95 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +96 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +97 => new IntegerNode(8, -128), +98 => new StructNode([ + "x" => array('type' => 69, 'tag' => -3), + "y" => array('type' => 69, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +99 => new StructNode([ + "beacon" => array('type' => 97, 'tag' => -9), + "ally" => array('type' => 97, 'tag' => -8), + "flags" => array('type' => 97, 'tag' => -7), + "build" => array('type' => 97, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 74, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 97, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 97, 'tag' => -2), + "targetPoint" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +100 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +101 => new StructNode([ + "delta" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +102 => new StructNode([ + "point" => array('type' => 70, 'tag' => -3), + "unit" => array('type' => 5, 'tag' => -2), + "pingedMinimap" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +103 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +104 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +105 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +106 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +107 => new StructNode([ + "conversationId" => array('type' => 69, 'tag' => -2), + "replyId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +108 => new StructNode([ + "purchaseItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +109 => new StructNode([ + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +110 => new ChoiceNode(new IntegerNode(3), [ + 0 => 77, + 1 => 26, + 2 => 5, + 3 => 69, + 4 => 24, +]), +111 => new StructNode([ + "controlId" => array('type' => 69, 'tag' => -3), + "eventType" => array('type' => 69, 'tag' => -2), + "eventData" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +112 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +113 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +114 => new StructNode([ + "soundHash" => array('type' => 113, 'tag' => -2), + "length" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +115 => new StructNode([ + "syncInfo" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +116 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +117 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -2), + "thread" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +118 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +119 => new StructNode([ + "x" => array('type' => 74, 'tag' => -2), + "y" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new OptionalNode(74), +121 => new StructNode([ + "target" => array('type' => 119, 'tag' => -4), + "distance" => array('type' => 120, 'tag' => -3), + "pitch" => array('type' => 120, 'tag' => -2), + "yaw" => array('type' => 120, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +122 => new IntegerNode(1, 0), +123 => new StructNode([ + "skipType" => array('type' => 122, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +124 => new IntegerNode(11, 0), +125 => new StructNode([ + "x" => array('type' => 124, 'tag' => -2), + "y" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +126 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +127 => new StructNode([ + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +128 => new StructNode([ + "achievementLink" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +129 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +130 => new StructNode([ + "planetId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +131 => new StructNode([ + "key" => array('type' => 97, 'tag' => -2), + "flags" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +132 => new StructNode([ + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +133 => new StructNode([ + "fulfillRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +134 => new StructNode([ + "cancelRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +135 => new StructNode([ + "researchItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +136 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +137 => new StructNode([ + "mercenaryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +138 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -2), + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +139 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +140 => new IntegerNode(19, 0), +141 => new StructNode([ + "decrementMs" => array('type' => 140, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +142 => new StructNode([ + "portraitId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +143 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +144 => new StructNode([ + "result" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +145 => new StructNode([ + "gameMenuItemIndex" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +146 => new StructNode([ + "reason" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +147 => new StructNode([ + "purchaseCategoryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +148 => new StructNode([ + "button" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +149 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "bookmarkName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +150 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +151 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -3), + "conversationLine" => array('type' => 15, 'tag' => -2), + "altConversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +152 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "conversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +153 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +154 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +155 => new StructNode([ + "progress" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version21995::$GAME_EVENT_MAPPING = [ + 5 => 67, + 7 => 59, + 8 => 61, + 9 => 62, + 10 => 63, + 11 => 65, + 12 => 66, + 22 => 68, + 23 => 67, + 25 => 67, + 26 => 72, + 27 => 82, + 28 => 90, + 29 => 91, + 30 => 93, + 31 => 95, + 32 => 96, + 33 => 99, + 34 => 100, + 35 => 101, + 36 => 102, + 37 => 103, + 38 => 104, + 39 => 105, + 40 => 106, + 41 => 107, + 44 => 67, + 45 => 112, + 46 => 116, + 47 => 117, + 48 => 118, + 49 => 121, + 50 => 67, + 51 => 108, + 52 => 67, + 53 => 109, + 54 => 67, + 55 => 111, + 56 => 115, + 57 => 123, + 58 => 126, + 59 => 127, + 60 => 128, + 63 => 67, + 64 => 129, + 65 => 130, + 66 => 131, + 67 => 143, + 68 => 67, + 69 => 67, + 70 => 132, + 71 => 133, + 72 => 134, + 73 => 67, + 74 => 67, + 75 => 135, + 76 => 136, + 77 => 67, + 78 => 67, + 79 => 137, + 80 => 67, + 81 => 67, + 82 => 138, + 83 => 139, + 84 => 139, + 85 => 109, + 86 => 67, + 87 => 67, + 88 => 141, + 89 => 142, + 90 => 144, + 91 => 145, + 92 => 146, + 93 => 108, + 94 => 147, + 95 => 148, + 96 => 67, + 97 => 149, + 98 => 150, + 99 => 151, + 100 => 152, +]; +Version21995::$MESSAGE_EVENT_MAPPING = [ + 0 => 153, + 1 => 154, + 2 => 155, + 3 => 67, +]; +Version21995::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version22612.php b/src/Version/Version22612.php new file mode 100644 index 0000000..741edbc --- /dev/null +++ b/src/Version/Version22612.php @@ -0,0 +1,989 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(58); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(34); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version22612::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(6, 0), + 29 +), +31 => new OptionalNode(30), +32 => new ArrayNode( + new IntegerNode(6, 0), + 24 +), +33 => new OptionalNode(32), +34 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), + "modPaths" => array('type' => 33, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +35 => new OptionalNode(10), +36 => new StructNode([ + "race" => array('type' => 35, 'tag' => -1), +]), +37 => new StructNode([ + "team" => array('type' => 35, 'tag' => -1), +]), +38 => new StructNode([ + "name" => array('type' => 9, 'tag' => -8), + "randomSeed" => array('type' => 5, 'tag' => -7), + "racePreference" => array('type' => 36, 'tag' => -6), + "teamPreference" => array('type' => 37, 'tag' => -5), + "testMap" => array('type' => 26, 'tag' => -4), + "testAuto" => array('type' => 26, 'tag' => -3), + "examine" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +39 => new ArrayNode( + new IntegerNode(5, 0), + 38, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +40 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -12), + "teamsTogether" => array('type' => 26, 'tag' => -11), + "advancedSharedControl" => array('type' => 26, 'tag' => -10), + "randomRaces" => array('type' => 26, 'tag' => -9), + "battleNet" => array('type' => 26, 'tag' => -8), + "amm" => array('type' => 26, 'tag' => -7), + "ranked" => array('type' => 26, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -5), + "fog" => array('type' => 19, 'tag' => -4), + "observers" => array('type' => 19, 'tag' => -3), + "userDifficulty" => array('type' => 19, 'tag' => -2), + "clientDebugFlags" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +41 => new IntegerNode(4, 1), +42 => new IntegerNode(8, 1), +43 => new BitArrayNode( + new IntegerNode(6, 0) +), +44 => new BitArrayNode( + new IntegerNode(8, 0) +), +45 => new BitArrayNode( + new IntegerNode(2, 0) +), +46 => new StructNode([ + "allowedColors" => array('type' => 43, 'tag' => -5), + "allowedRaces" => array('type' => 44, 'tag' => -4), + "allowedDifficulty" => array('type' => 43, 'tag' => -3), + "allowedControls" => array('type' => 44, 'tag' => -2), + "allowedObserveTypes" => array('type' => 45, 'tag' => -1), +]), +47 => new ArrayNode( + new IntegerNode(5, 0), + 46 +), +48 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 40, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 41, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 42, 'tag' => -13), + "maxControls" => array('type' => 42, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 47, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +49 => new OptionalNode(1), +50 => new OptionalNode(7), +51 => new StructNode([ + "color" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +53 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +54 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 49, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 51, 'tag' => -8), + "racePref" => array('type' => 36, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 52, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 53, 'tag' => -1), +]), +55 => new ArrayNode( + new IntegerNode(5, 0), + 54 +), +56 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 55, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 49, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +57 => new StructNode([ + "userInitialData" => array('type' => 39, 'tag' => -3), + "gameDescription" => array('type' => 48, 'tag' => -2), + "lobbyState" => array('type' => 56, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +58 => new StructNode([ + "syncLobbyState" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +59 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +60 => new BlobNode(new IntegerNode(6, 0)), +61 => new StructNode([ + "name" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +62 => new StructNode([ + "name" => array('type' => 60, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +63 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 60, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +64 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +65 => new StructNode([ + "signature" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +66 => new StructNode([ + "gameFullyDownloaded" => array('type' => 26, 'tag' => -6), + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -5), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -4), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -3), + "isMapToMapTransition" => array('type' => 26, 'tag' => -2), + "useAIBeacons" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +67 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +68 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +69 => new IntegerNode(32, -2147483648), +70 => new StructNode([ + "x" => array('type' => 69, 'tag' => -2), + "y" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +71 => new StructNode([ + "point" => array('type' => 70, 'tag' => -4), + "time" => array('type' => 69, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +72 => new StructNode([ + "data" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +73 => new IntegerNode(20, 0), +74 => new IntegerNode(16, 0), +75 => new StructNode([ + "abilLink" => array('type' => 74, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 35, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +76 => new OptionalNode(75), +77 => new NullNode(), +78 => new StructNode([ + "x" => array('type' => 73, 'tag' => -3), + "y" => array('type' => 73, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 74, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 49, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 49, 'tag' => -2), + "snapshotPoint" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +80 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 78, + 2 => 79, + 3 => 5, +]), +81 => new OptionalNode(5), +82 => new StructNode([ + "cmdFlags" => array('type' => 73, 'tag' => -4), + "abil" => array('type' => 76, 'tag' => -3), + "data" => array('type' => 80, 'tag' => -2), + "otherUnit" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +83 => new IntegerNode(9, 0), +84 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +85 => new ArrayNode( + new IntegerNode(9, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +86 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 84, + 2 => 85, + 3 => 85, +]), +87 => new StructNode([ + "unitLink" => array('type' => 74, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +88 => new ArrayNode( + new IntegerNode(9, 0), + 87 +), +89 => new StructNode([ + "subgroupIndex" => array('type' => 83, 'tag' => -4), + "removeMask" => array('type' => 86, 'tag' => -3), + "addSubgroups" => array('type' => 88, 'tag' => -2), + "addUnitTags" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +91 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +92 => new StructNode([ + "count" => array('type' => 83, 'tag' => -6), + "subgroupCount" => array('type' => 83, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 83, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +93 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +94 => new ArrayNode( + new IntegerNode(3, 0), + 69, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +95 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +96 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +97 => new IntegerNode(8, -128), +98 => new StructNode([ + "x" => array('type' => 69, 'tag' => -3), + "y" => array('type' => 69, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +99 => new StructNode([ + "beacon" => array('type' => 97, 'tag' => -9), + "ally" => array('type' => 97, 'tag' => -8), + "flags" => array('type' => 97, 'tag' => -7), + "build" => array('type' => 97, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 74, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 97, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 97, 'tag' => -2), + "targetPoint" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +100 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +101 => new StructNode([ + "delta" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +102 => new StructNode([ + "point" => array('type' => 70, 'tag' => -3), + "unit" => array('type' => 5, 'tag' => -2), + "pingedMinimap" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +103 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +104 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +105 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +106 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +107 => new StructNode([ + "conversationId" => array('type' => 69, 'tag' => -2), + "replyId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +108 => new StructNode([ + "purchaseItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +109 => new StructNode([ + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +110 => new ChoiceNode(new IntegerNode(3), [ + 0 => 77, + 1 => 26, + 2 => 5, + 3 => 69, + 4 => 24, +]), +111 => new StructNode([ + "controlId" => array('type' => 69, 'tag' => -3), + "eventType" => array('type' => 69, 'tag' => -2), + "eventData" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +112 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +113 => new ArrayNode( + new IntegerNode(8, 0), + 5 +), +114 => new StructNode([ + "soundHash" => array('type' => 113, 'tag' => -2), + "length" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +115 => new StructNode([ + "syncInfo" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +116 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +117 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -2), + "thread" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +118 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +119 => new StructNode([ + "x" => array('type' => 74, 'tag' => -2), + "y" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new OptionalNode(74), +121 => new StructNode([ + "target" => array('type' => 119, 'tag' => -4), + "distance" => array('type' => 120, 'tag' => -3), + "pitch" => array('type' => 120, 'tag' => -2), + "yaw" => array('type' => 120, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +122 => new IntegerNode(1, 0), +123 => new StructNode([ + "skipType" => array('type' => 122, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +124 => new IntegerNode(11, 0), +125 => new StructNode([ + "x" => array('type' => 124, 'tag' => -2), + "y" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +126 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +127 => new StructNode([ + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +128 => new StructNode([ + "achievementLink" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +129 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +130 => new StructNode([ + "planetId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +131 => new StructNode([ + "key" => array('type' => 97, 'tag' => -2), + "flags" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +132 => new StructNode([ + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +133 => new StructNode([ + "fulfillRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +134 => new StructNode([ + "cancelRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +135 => new StructNode([ + "researchItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +136 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +137 => new StructNode([ + "mercenaryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +138 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -2), + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +139 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +140 => new IntegerNode(19, 0), +141 => new StructNode([ + "decrementMs" => array('type' => 140, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +142 => new StructNode([ + "portraitId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +143 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +144 => new StructNode([ + "result" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +145 => new StructNode([ + "gameMenuItemIndex" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +146 => new StructNode([ + "reason" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +147 => new StructNode([ + "purchaseCategoryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +148 => new StructNode([ + "button" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +149 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "bookmarkName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +150 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +151 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -3), + "conversationLine" => array('type' => 15, 'tag' => -2), + "altConversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +152 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "conversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +153 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +154 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +155 => new StructNode([ + "progress" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version22612::$GAME_EVENT_MAPPING = [ + 5 => 67, + 7 => 59, + 8 => 61, + 9 => 62, + 10 => 63, + 11 => 65, + 12 => 66, + 22 => 68, + 23 => 67, + 25 => 67, + 26 => 72, + 27 => 82, + 28 => 90, + 29 => 91, + 30 => 93, + 31 => 95, + 32 => 96, + 33 => 99, + 34 => 100, + 35 => 101, + 36 => 102, + 37 => 103, + 38 => 104, + 39 => 105, + 40 => 106, + 41 => 107, + 44 => 67, + 45 => 112, + 46 => 116, + 47 => 117, + 48 => 118, + 49 => 121, + 50 => 67, + 51 => 108, + 52 => 67, + 53 => 109, + 54 => 67, + 55 => 111, + 56 => 115, + 57 => 123, + 58 => 126, + 59 => 127, + 60 => 128, + 63 => 67, + 64 => 129, + 65 => 130, + 66 => 131, + 67 => 143, + 68 => 67, + 69 => 67, + 70 => 132, + 71 => 133, + 72 => 134, + 73 => 67, + 74 => 67, + 75 => 135, + 76 => 136, + 77 => 67, + 78 => 67, + 79 => 137, + 80 => 67, + 81 => 67, + 82 => 138, + 83 => 139, + 84 => 139, + 85 => 109, + 86 => 67, + 87 => 67, + 88 => 141, + 89 => 142, + 90 => 144, + 91 => 145, + 92 => 146, + 93 => 108, + 94 => 147, + 95 => 148, + 96 => 67, + 97 => 149, + 98 => 150, + 99 => 151, + 100 => 152, +]; +Version22612::$MESSAGE_EVENT_MAPPING = [ + 0 => 153, + 1 => 154, + 2 => 155, + 3 => 67, +]; +Version22612::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version23260.php b/src/Version/Version23260.php new file mode 100644 index 0000000..aeaf815 --- /dev/null +++ b/src/Version/Version23260.php @@ -0,0 +1,989 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(58); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(34); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version23260::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "playerId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), +], + 'Rogiel\StarReplay\Entity\Player' +), +21 => new ArrayNode( + new IntegerNode(5, 0), + 20, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +22 => new OptionalNode(21), +23 => new BlobNode(new IntegerNode(10, 0)), +24 => new BlobNode(new IntegerNode(11, 0)), +25 => new StructNode([ + "file" => array('type' => 24, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +26 => new BooleanNode(), +27 => new IntegerNode(64, -9223372036854775808), +28 => new BlobNode(new IntegerNode(12, 0)), +29 => new BlobNode(new IntegerNode(0, 40)), +30 => new ArrayNode( + new IntegerNode(6, 0), + 29 +), +31 => new OptionalNode(30), +32 => new ArrayNode( + new IntegerNode(6, 0), + 24 +), +33 => new OptionalNode(32), +34 => new StructNode([ + "playerList" => array('type' => 22, 'tag' => 0), + "title" => array('type' => 23, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 25, 'tag' => 3), + "isBlizzardMap" => array('type' => 26, 'tag' => 4), + "timeUTC" => array('type' => 27, 'tag' => 5), + "timeLocalOffset" => array('type' => 27, 'tag' => 6), + "description" => array('type' => 28, 'tag' => 7), + "imageFilePath" => array('type' => 24, 'tag' => 8), + "mapFileName" => array('type' => 24, 'tag' => 9), + "cacheHandles" => array('type' => 31, 'tag' => 10), + "miniSave" => array('type' => 26, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), + "modPaths" => array('type' => 33, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +35 => new OptionalNode(10), +36 => new StructNode([ + "race" => array('type' => 35, 'tag' => -1), +]), +37 => new StructNode([ + "team" => array('type' => 35, 'tag' => -1), +]), +38 => new StructNode([ + "name" => array('type' => 9, 'tag' => -8), + "randomSeed" => array('type' => 5, 'tag' => -7), + "racePreference" => array('type' => 36, 'tag' => -6), + "teamPreference" => array('type' => 37, 'tag' => -5), + "testMap" => array('type' => 26, 'tag' => -4), + "testAuto" => array('type' => 26, 'tag' => -3), + "examine" => array('type' => 26, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +39 => new ArrayNode( + new IntegerNode(5, 0), + 38, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +40 => new StructNode([ + "lockTeams" => array('type' => 26, 'tag' => -12), + "teamsTogether" => array('type' => 26, 'tag' => -11), + "advancedSharedControl" => array('type' => 26, 'tag' => -10), + "randomRaces" => array('type' => 26, 'tag' => -9), + "battleNet" => array('type' => 26, 'tag' => -8), + "amm" => array('type' => 26, 'tag' => -7), + "ranked" => array('type' => 26, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 26, 'tag' => -5), + "fog" => array('type' => 19, 'tag' => -4), + "observers" => array('type' => 19, 'tag' => -3), + "userDifficulty" => array('type' => 19, 'tag' => -2), + "clientDebugFlags" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +41 => new IntegerNode(4, 1), +42 => new IntegerNode(8, 1), +43 => new BitArrayNode( + new IntegerNode(6, 0) +), +44 => new BitArrayNode( + new IntegerNode(8, 0) +), +45 => new BitArrayNode( + new IntegerNode(2, 0) +), +46 => new StructNode([ + "allowedColors" => array('type' => 43, 'tag' => -5), + "allowedRaces" => array('type' => 44, 'tag' => -4), + "allowedDifficulty" => array('type' => 43, 'tag' => -3), + "allowedControls" => array('type' => 44, 'tag' => -2), + "allowedObserveTypes" => array('type' => 45, 'tag' => -1), +]), +47 => new ArrayNode( + new IntegerNode(5, 0), + 46 +), +48 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -23), + "gameCacheName" => array('type' => 23, 'tag' => -22), + "gameOptions" => array('type' => 40, 'tag' => -21), + "gameSpeed" => array('type' => 12, 'tag' => -20), + "gameType" => array('type' => 12, 'tag' => -19), + "maxUsers" => array('type' => 7, 'tag' => -18), + "maxObservers" => array('type' => 7, 'tag' => -17), + "maxPlayers" => array('type' => 7, 'tag' => -16), + "maxTeams" => array('type' => 41, 'tag' => -15), + "maxColors" => array('type' => 2, 'tag' => -14), + "maxRaces" => array('type' => 42, 'tag' => -13), + "maxControls" => array('type' => 42, 'tag' => -12), + "mapSizeX" => array('type' => 10, 'tag' => -11), + "mapSizeY" => array('type' => 10, 'tag' => -10), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -9), + "mapFileName" => array('type' => 24, 'tag' => -8), + "mapAuthorName" => array('type' => 9, 'tag' => -7), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -6), + "slotDescriptions" => array('type' => 47, 'tag' => -5), + "defaultDifficulty" => array('type' => 2, 'tag' => -4), + "cacheHandles" => array('type' => 30, 'tag' => -3), + "isBlizzardMap" => array('type' => 26, 'tag' => -2), + "isPremadeFFA" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +49 => new OptionalNode(1), +50 => new OptionalNode(7), +51 => new StructNode([ + "color" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 5 +), +53 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +54 => new StructNode([ + "control" => array('type' => 10, 'tag' => -11), + "userId" => array('type' => 49, 'tag' => -10), + "teamId" => array('type' => 1, 'tag' => -9), + "colorPref" => array('type' => 51, 'tag' => -8), + "racePref" => array('type' => 36, 'tag' => -7), + "difficulty" => array('type' => 2, 'tag' => -6), + "handicap" => array('type' => 0, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "rewards" => array('type' => 52, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 53, 'tag' => -1), +]), +55 => new ArrayNode( + new IntegerNode(5, 0), + 54 +), +56 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -9), + "maxUsers" => array('type' => 7, 'tag' => -8), + "maxObservers" => array('type' => 7, 'tag' => -7), + "slots" => array('type' => 55, 'tag' => -6), + "randomSeed" => array('type' => 5, 'tag' => -5), + "hostUserId" => array('type' => 49, 'tag' => -4), + "isSinglePlayer" => array('type' => 26, 'tag' => -3), + "gameDuration" => array('type' => 5, 'tag' => -2), + "defaultDifficulty" => array('type' => 2, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +57 => new StructNode([ + "userInitialData" => array('type' => 39, 'tag' => -3), + "gameDescription" => array('type' => 48, 'tag' => -2), + "lobbyState" => array('type' => 56, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +58 => new StructNode([ + "syncLobbyState" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +59 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +60 => new BlobNode(new IntegerNode(6, 0)), +61 => new StructNode([ + "name" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +62 => new StructNode([ + "name" => array('type' => 60, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +63 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 60, 'tag' => -2), + "data" => array('type' => 28, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +64 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +65 => new StructNode([ + "signature" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +66 => new StructNode([ + "gameFullyDownloaded" => array('type' => 26, 'tag' => -6), + "developmentCheatsEnabled" => array('type' => 26, 'tag' => -5), + "multiplayerCheatsEnabled" => array('type' => 26, 'tag' => -4), + "syncChecksummingEnabled" => array('type' => 26, 'tag' => -3), + "isMapToMapTransition" => array('type' => 26, 'tag' => -2), + "useAIBeacons" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +67 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +68 => new StructNode([ + "fileName" => array('type' => 24, 'tag' => -5), + "automatic" => array('type' => 26, 'tag' => -4), + "overwrite" => array('type' => 26, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +69 => new IntegerNode(32, -2147483648), +70 => new StructNode([ + "x" => array('type' => 69, 'tag' => -2), + "y" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +71 => new StructNode([ + "point" => array('type' => 70, 'tag' => -4), + "time" => array('type' => 69, 'tag' => -3), + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +]), +72 => new StructNode([ + "data" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +73 => new IntegerNode(20, 0), +74 => new IntegerNode(16, 0), +75 => new StructNode([ + "abilLink" => array('type' => 74, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 35, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +76 => new OptionalNode(75), +77 => new NullNode(), +78 => new StructNode([ + "x" => array('type' => 73, 'tag' => -3), + "y" => array('type' => 73, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 74, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 49, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 49, 'tag' => -2), + "snapshotPoint" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +80 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 78, + 2 => 79, + 3 => 5, +]), +81 => new OptionalNode(5), +82 => new StructNode([ + "cmdFlags" => array('type' => 73, 'tag' => -4), + "abil" => array('type' => 76, 'tag' => -3), + "data" => array('type' => 80, 'tag' => -2), + "otherUnit" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +83 => new IntegerNode(9, 0), +84 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +85 => new ArrayNode( + new IntegerNode(9, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +86 => new ChoiceNode(new IntegerNode(2), [ + 0 => 77, + 1 => 84, + 2 => 85, + 3 => 85, +]), +87 => new StructNode([ + "unitLink" => array('type' => 74, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +88 => new ArrayNode( + new IntegerNode(9, 0), + 87 +), +89 => new StructNode([ + "subgroupIndex" => array('type' => 83, 'tag' => -4), + "removeMask" => array('type' => 86, 'tag' => -3), + "addSubgroups" => array('type' => 88, 'tag' => -2), + "addUnitTags" => array('type' => 53, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +90 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +91 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +92 => new StructNode([ + "count" => array('type' => 83, 'tag' => -6), + "subgroupCount" => array('type' => 83, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 83, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +93 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +94 => new ArrayNode( + new IntegerNode(3, 0), + 69, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +95 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +96 => new StructNode([ + "chatMessage" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +97 => new IntegerNode(8, -128), +98 => new StructNode([ + "x" => array('type' => 69, 'tag' => -3), + "y" => array('type' => 69, 'tag' => -2), + "z" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +99 => new StructNode([ + "beacon" => array('type' => 97, 'tag' => -9), + "ally" => array('type' => 97, 'tag' => -8), + "flags" => array('type' => 97, 'tag' => -7), + "build" => array('type' => 97, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 74, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 97, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 97, 'tag' => -2), + "targetPoint" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +100 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +101 => new StructNode([ + "delta" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +102 => new StructNode([ + "point" => array('type' => 70, 'tag' => -3), + "unit" => array('type' => 5, 'tag' => -2), + "pingedMinimap" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +103 => new StructNode([ + "verb" => array('type' => 23, 'tag' => -2), + "arguments" => array('type' => 23, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +104 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +105 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +106 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +107 => new StructNode([ + "conversationId" => array('type' => 69, 'tag' => -2), + "replyId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +108 => new StructNode([ + "purchaseItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +109 => new StructNode([ + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +110 => new ChoiceNode(new IntegerNode(3), [ + 0 => 77, + 1 => 26, + 2 => 5, + 3 => 69, + 4 => 24, +]), +111 => new StructNode([ + "controlId" => array('type' => 69, 'tag' => -3), + "eventType" => array('type' => 69, 'tag' => -2), + "eventData" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +112 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +113 => new ArrayNode( + new IntegerNode(7, 0), + 5 +), +114 => new StructNode([ + "soundHash" => array('type' => 113, 'tag' => -2), + "length" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +115 => new StructNode([ + "syncInfo" => array('type' => 114, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +116 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +117 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -2), + "thread" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +118 => new StructNode([ + "transmissionId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +119 => new StructNode([ + "x" => array('type' => 74, 'tag' => -2), + "y" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +120 => new OptionalNode(74), +121 => new StructNode([ + "target" => array('type' => 119, 'tag' => -4), + "distance" => array('type' => 120, 'tag' => -3), + "pitch" => array('type' => 120, 'tag' => -2), + "yaw" => array('type' => 120, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +122 => new IntegerNode(1, 0), +123 => new StructNode([ + "skipType" => array('type' => 122, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +124 => new IntegerNode(11, 0), +125 => new StructNode([ + "x" => array('type' => 124, 'tag' => -2), + "y" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +126 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 26, 'tag' => -3), + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +127 => new StructNode([ + "posUI" => array('type' => 125, 'tag' => -2), + "posWorld" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +128 => new StructNode([ + "achievementLink" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +129 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +130 => new StructNode([ + "planetId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +131 => new StructNode([ + "key" => array('type' => 97, 'tag' => -2), + "flags" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +132 => new StructNode([ + "resources" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +133 => new StructNode([ + "fulfillRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +134 => new StructNode([ + "cancelRequestId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +135 => new StructNode([ + "researchItemId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +136 => new StructNode([ + "laggingPlayerId" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\LagMessageEvent' +), +137 => new StructNode([ + "mercenaryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +138 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -2), + "difficultyLevel" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +139 => new StructNode([ + "battleReportId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +140 => new IntegerNode(19, 0), +141 => new StructNode([ + "decrementMs" => array('type' => 140, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +142 => new StructNode([ + "portraitId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +143 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +144 => new StructNode([ + "result" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +145 => new StructNode([ + "gameMenuItemIndex" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +146 => new StructNode([ + "reason" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +147 => new StructNode([ + "purchaseCategoryId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +148 => new StructNode([ + "button" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +149 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "bookmarkName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +150 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +151 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -3), + "conversationLine" => array('type' => 15, 'tag' => -2), + "altConversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +152 => new StructNode([ + "cutsceneId" => array('type' => 69, 'tag' => -2), + "conversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +153 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +154 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +155 => new StructNode([ + "progress" => array('type' => 69, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version23260::$GAME_EVENT_MAPPING = [ + 5 => 67, + 7 => 59, + 8 => 61, + 9 => 62, + 10 => 63, + 11 => 65, + 12 => 66, + 22 => 68, + 23 => 67, + 25 => 67, + 26 => 72, + 27 => 82, + 28 => 90, + 29 => 91, + 30 => 93, + 31 => 95, + 32 => 96, + 33 => 99, + 34 => 100, + 35 => 101, + 36 => 102, + 37 => 103, + 38 => 104, + 39 => 105, + 40 => 106, + 41 => 107, + 44 => 67, + 45 => 112, + 46 => 116, + 47 => 117, + 48 => 118, + 49 => 121, + 50 => 67, + 51 => 108, + 52 => 67, + 53 => 109, + 54 => 67, + 55 => 111, + 56 => 115, + 57 => 123, + 58 => 126, + 59 => 127, + 60 => 128, + 63 => 67, + 64 => 129, + 65 => 130, + 66 => 131, + 67 => 143, + 68 => 67, + 69 => 67, + 70 => 132, + 71 => 133, + 72 => 134, + 73 => 67, + 74 => 67, + 75 => 135, + 76 => 136, + 77 => 67, + 78 => 67, + 79 => 137, + 80 => 67, + 81 => 67, + 82 => 138, + 83 => 139, + 84 => 139, + 85 => 109, + 86 => 67, + 87 => 67, + 88 => 141, + 89 => 142, + 90 => 144, + 91 => 145, + 92 => 146, + 93 => 108, + 94 => 147, + 95 => 148, + 96 => 67, + 97 => 149, + 98 => 150, + 99 => 151, + 100 => 152, +]; +Version23260::$MESSAGE_EVENT_MAPPING = [ + 0 => 153, + 1 => 154, + 2 => 155, + 3 => 67, +]; +Version23260::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version24764.php b/src/Version/Version24764.php new file mode 100644 index 0000000..b14d23f --- /dev/null +++ b/src/Version/Version24764.php @@ -0,0 +1,1038 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(61); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(35); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 6], + 'event' => ['type' => NULL] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version24764::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(6, 0), +3 => new IntegerNode(14, 0), +4 => new IntegerNode(22, 0), +5 => new IntegerNode(32, 0), +6 => new ChoiceNode(new IntegerNode(2), [ + 0 => 2, + 1 => 3, + 2 => 4, + 3 => 5, +]), +7 => new IntegerNode(5, 0), +8 => new StructNode([ + "userId" => array('type' => 7, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 5, 'tag' => 4), + "baseBuild" => array('type' => 5, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 5, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 5, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new OptionalNode(10), +21 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), + "workingSetSlotId" => array('type' => 20, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +22 => new ArrayNode( + new IntegerNode(5, 0), + 21, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +23 => new OptionalNode(22), +24 => new BlobNode(new IntegerNode(10, 0)), +25 => new BlobNode(new IntegerNode(11, 0)), +26 => new StructNode([ + "file" => array('type' => 25, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +27 => new BooleanNode(), +28 => new IntegerNode(64, -9223372036854775808), +29 => new BlobNode(new IntegerNode(12, 0)), +30 => new BlobNode(new IntegerNode(0, 40)), +31 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +32 => new OptionalNode(31), +33 => new ArrayNode( + new IntegerNode(6, 0), + 25 +), +34 => new OptionalNode(33), +35 => new StructNode([ + "playerList" => array('type' => 23, 'tag' => 0), + "title" => array('type' => 24, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 26, 'tag' => 3), + "isBlizzardMap" => array('type' => 27, 'tag' => 4), + "timeUTC" => array('type' => 28, 'tag' => 5), + "timeLocalOffset" => array('type' => 28, 'tag' => 6), + "description" => array('type' => 29, 'tag' => 7), + "imageFilePath" => array('type' => 25, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 25, 'tag' => 9), + "cacheHandles" => array('type' => 32, 'tag' => 10), + "miniSave" => array('type' => 27, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 2, 'tag' => 13), + "modPaths" => array('type' => 34, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +36 => new OptionalNode(9), +37 => new OptionalNode(5), +38 => new StructNode([ + "race" => array('type' => 20, 'tag' => -1), +]), +39 => new StructNode([ + "team" => array('type' => 20, 'tag' => -1), +]), +40 => new StructNode([ + "name" => array('type' => 9, 'tag' => -12), + "clanTag" => array('type' => 36, 'tag' => -11), + "highestLeague" => array('type' => 20, 'tag' => -10), + "combinedRaceLevels" => array('type' => 37, 'tag' => -9), + "randomSeed" => array('type' => 5, 'tag' => -8), + "racePreference" => array('type' => 38, 'tag' => -7), + "teamPreference" => array('type' => 39, 'tag' => -6), + "testMap" => array('type' => 27, 'tag' => -5), + "testAuto" => array('type' => 27, 'tag' => -4), + "examine" => array('type' => 27, 'tag' => -3), + "customInterface" => array('type' => 27, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +41 => new ArrayNode( + new IntegerNode(5, 0), + 40, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +42 => new StructNode([ + "lockTeams" => array('type' => 27, 'tag' => -12), + "teamsTogether" => array('type' => 27, 'tag' => -11), + "advancedSharedControl" => array('type' => 27, 'tag' => -10), + "randomRaces" => array('type' => 27, 'tag' => -9), + "battleNet" => array('type' => 27, 'tag' => -8), + "amm" => array('type' => 27, 'tag' => -7), + "competitive" => array('type' => 27, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 27, 'tag' => -5), + "fog" => array('type' => 19, 'tag' => -4), + "observers" => array('type' => 19, 'tag' => -3), + "userDifficulty" => array('type' => 19, 'tag' => -2), + "clientDebugFlags" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +43 => new IntegerNode(4, 1), +44 => new IntegerNode(8, 1), +45 => new BitArrayNode( + new IntegerNode(6, 0) +), +46 => new BitArrayNode( + new IntegerNode(8, 0) +), +47 => new BitArrayNode( + new IntegerNode(2, 0) +), +48 => new BitArrayNode( + new IntegerNode(7, 0) +), +49 => new StructNode([ + "allowedColors" => array('type' => 45, 'tag' => -6), + "allowedRaces" => array('type' => 46, 'tag' => -5), + "allowedDifficulty" => array('type' => 45, 'tag' => -4), + "allowedControls" => array('type' => 46, 'tag' => -3), + "allowedObserveTypes" => array('type' => 47, 'tag' => -2), + "allowedAIBuilds" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 49 +), +51 => new StructNode([ + "randomValue" => array('type' => 5, 'tag' => -25), + "gameCacheName" => array('type' => 24, 'tag' => -24), + "gameOptions" => array('type' => 42, 'tag' => -23), + "gameSpeed" => array('type' => 12, 'tag' => -22), + "gameType" => array('type' => 12, 'tag' => -21), + "maxUsers" => array('type' => 7, 'tag' => -20), + "maxObservers" => array('type' => 7, 'tag' => -19), + "maxPlayers" => array('type' => 7, 'tag' => -18), + "maxTeams" => array('type' => 43, 'tag' => -17), + "maxColors" => array('type' => 2, 'tag' => -16), + "maxRaces" => array('type' => 44, 'tag' => -15), + "maxControls" => array('type' => 44, 'tag' => -14), + "mapSizeX" => array('type' => 10, 'tag' => -13), + "mapSizeY" => array('type' => 10, 'tag' => -12), + "mapFileSyncChecksum" => array('type' => 5, 'tag' => -11), + "mapFileName" => array('type' => 25, 'tag' => -10), + "mapAuthorName" => array('type' => 9, 'tag' => -9), + "modFileSyncChecksum" => array('type' => 5, 'tag' => -8), + "slotDescriptions" => array('type' => 50, 'tag' => -7), + "defaultDifficulty" => array('type' => 2, 'tag' => -6), + "defaultAIBuild" => array('type' => 0, 'tag' => -5), + "cacheHandles" => array('type' => 31, 'tag' => -4), + "isBlizzardMap" => array('type' => 27, 'tag' => -3), + "isPremadeFFA" => array('type' => 27, 'tag' => -2), + "isCoopMode" => array('type' => 27, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +52 => new OptionalNode(1), +53 => new OptionalNode(7), +54 => new StructNode([ + "color" => array('type' => 53, 'tag' => -1), +]), +55 => new ArrayNode( + new IntegerNode(6, 0), + 5 +), +56 => new ArrayNode( + new IntegerNode(9, 0), + 5 +), +57 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 52, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 54, 'tag' => -10), + "racePref" => array('type' => 38, 'tag' => -9), + "difficulty" => array('type' => 2, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 19, 'tag' => -5), + "workingSetSlotId" => array('type' => 20, 'tag' => -4), + "rewards" => array('type' => 55, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 56, 'tag' => -1), +]), +58 => new ArrayNode( + new IntegerNode(5, 0), + 57 +), +59 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 7, 'tag' => -9), + "maxObservers" => array('type' => 7, 'tag' => -8), + "slots" => array('type' => 58, 'tag' => -7), + "randomSeed" => array('type' => 5, 'tag' => -6), + "hostUserId" => array('type' => 52, 'tag' => -5), + "isSinglePlayer" => array('type' => 27, 'tag' => -4), + "gameDuration" => array('type' => 5, 'tag' => -3), + "defaultDifficulty" => array('type' => 2, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +60 => new StructNode([ + "userInitialData" => array('type' => 41, 'tag' => -3), + "gameDescription" => array('type' => 51, 'tag' => -2), + "lobbyState" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +61 => new StructNode([ + "syncLobbyState" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +62 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +63 => new BlobNode(new IntegerNode(6, 0)), +64 => new StructNode([ + "name" => array('type' => 63, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +65 => new StructNode([ + "name" => array('type' => 63, 'tag' => -3), + "type" => array('type' => 5, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +66 => new StructNode([ + "type" => array('type' => 5, 'tag' => -3), + "name" => array('type' => 63, 'tag' => -2), + "data" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +67 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +68 => new StructNode([ + "signature" => array('type' => 67, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +69 => new StructNode([ + "gameFullyDownloaded" => array('type' => 27, 'tag' => -7), + "developmentCheatsEnabled" => array('type' => 27, 'tag' => -6), + "multiplayerCheatsEnabled" => array('type' => 27, 'tag' => -5), + "syncChecksummingEnabled" => array('type' => 27, 'tag' => -4), + "isMapToMapTransition" => array('type' => 27, 'tag' => -3), + "startingRally" => array('type' => 27, 'tag' => -2), + "baseBuildNum" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +70 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +71 => new StructNode([ + "fileName" => array('type' => 25, 'tag' => -5), + "automatic" => array('type' => 27, 'tag' => -4), + "overwrite" => array('type' => 27, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +72 => new IntegerNode(32, -2147483648), +73 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +74 => new StructNode([ + "point" => array('type' => 73, 'tag' => -4), + "time" => array('type' => 72, 'tag' => -3), + "verb" => array('type' => 24, 'tag' => -2), + "arguments" => array('type' => 24, 'tag' => -1), +]), +75 => new StructNode([ + "data" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +76 => new IntegerNode(20, 0), +77 => new IntegerNode(16, 0), +78 => new StructNode([ + "abilLink" => array('type' => 77, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "abilCmdData" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +79 => new OptionalNode(78), +80 => new NullNode(), +81 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +82 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 5, 'tag' => -5), + "snapshotUnitLink" => array('type' => 77, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 52, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 52, 'tag' => -2), + "snapshotPoint" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +83 => new ChoiceNode(new IntegerNode(2), [ + 0 => 80, + 1 => 81, + 2 => 82, + 3 => 5, +]), +84 => new StructNode([ + "cmdFlags" => array('type' => 76, 'tag' => -4), + "abil" => array('type' => 79, 'tag' => -3), + "data" => array('type' => 83, 'tag' => -2), + "otherUnit" => array('type' => 37, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +85 => new IntegerNode(9, 0), +86 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +87 => new ArrayNode( + new IntegerNode(9, 0), + 85, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +88 => new ChoiceNode(new IntegerNode(2), [ + 0 => 80, + 1 => 86, + 2 => 87, + 3 => 87, +]), +89 => new StructNode([ + "unitLink" => array('type' => 77, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +90 => new ArrayNode( + new IntegerNode(9, 0), + 89 +), +91 => new StructNode([ + "subgroupIndex" => array('type' => 85, 'tag' => -4), + "removeMask" => array('type' => 88, 'tag' => -3), + "addSubgroups" => array('type' => 90, 'tag' => -2), + "addUnitTags" => array('type' => 56, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +92 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +93 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +94 => new StructNode([ + "count" => array('type' => 85, 'tag' => -6), + "subgroupCount" => array('type' => 85, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 85, 'tag' => -4), + "unitTagsChecksum" => array('type' => 5, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 5, 'tag' => -2), + "subgroupsChecksum" => array('type' => 5, 'tag' => -1), +]), +95 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +96 => new ArrayNode( + new IntegerNode(3, 0), + 72, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +97 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +98 => new StructNode([ + "chatMessage" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +99 => new IntegerNode(8, -128), +100 => new StructNode([ + "x" => array('type' => 72, 'tag' => -3), + "y" => array('type' => 72, 'tag' => -2), + "z" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +101 => new StructNode([ + "beacon" => array('type' => 99, 'tag' => -9), + "ally" => array('type' => 99, 'tag' => -8), + "flags" => array('type' => 99, 'tag' => -7), + "build" => array('type' => 99, 'tag' => -6), + "targetUnitTag" => array('type' => 5, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 77, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 99, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 99, 'tag' => -2), + "targetPoint" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +102 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +103 => new StructNode([ + "delta" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +104 => new StructNode([ + "point" => array('type' => 73, 'tag' => -3), + "unit" => array('type' => 5, 'tag' => -2), + "pingedMinimap" => array('type' => 27, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +105 => new StructNode([ + "verb" => array('type' => 24, 'tag' => -2), + "arguments" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +106 => new StructNode([ + "alliance" => array('type' => 5, 'tag' => -2), + "control" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +107 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +108 => new StructNode([ + "unitTag" => array('type' => 5, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +109 => new StructNode([ + "conversationId" => array('type' => 72, 'tag' => -2), + "replyId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +110 => new OptionalNode(15), +111 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -4), + "name" => array('type' => 9, 'tag' => -3), + "toonHandle" => array('type' => 110, 'tag' => -2), + "clanTag" => array('type' => 36, 'tag' => -1), +]), +112 => new ArrayNode( + new IntegerNode(5, 0), + 111 +), +113 => new StructNode([ + "userInfos" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +114 => new StructNode([ + "purchaseItemId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +115 => new StructNode([ + "difficultyLevel" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +116 => new ChoiceNode(new IntegerNode(3), [ + 0 => 80, + 1 => 27, + 2 => 5, + 3 => 72, + 4 => 25, + 5 => 5, +]), +117 => new StructNode([ + "controlId" => array('type' => 72, 'tag' => -3), + "eventType" => array('type' => 72, 'tag' => -2), + "eventData" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +118 => new StructNode([ + "soundHash" => array('type' => 5, 'tag' => -2), + "length" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +119 => new ArrayNode( + new IntegerNode(7, 0), + 5 +), +120 => new StructNode([ + "soundHash" => array('type' => 119, 'tag' => -2), + "length" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +121 => new StructNode([ + "syncInfo" => array('type' => 120, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +122 => new StructNode([ + "sound" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +123 => new StructNode([ + "transmissionId" => array('type' => 72, 'tag' => -2), + "thread" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +124 => new StructNode([ + "transmissionId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +125 => new StructNode([ + "x" => array('type' => 77, 'tag' => -2), + "y" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +126 => new OptionalNode(125), +127 => new OptionalNode(77), +128 => new StructNode([ + "target" => array('type' => 126, 'tag' => -4), + "distance" => array('type' => 127, 'tag' => -3), + "pitch" => array('type' => 127, 'tag' => -2), + "yaw" => array('type' => 127, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +129 => new IntegerNode(1, 0), +130 => new StructNode([ + "skipType" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +131 => new IntegerNode(11, 0), +132 => new StructNode([ + "x" => array('type' => 131, 'tag' => -2), + "y" => array('type' => 131, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +133 => new StructNode([ + "button" => array('type' => 5, 'tag' => -4), + "down" => array('type' => 27, 'tag' => -3), + "posUI" => array('type' => 132, 'tag' => -2), + "posWorld" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +134 => new StructNode([ + "posUI" => array('type' => 132, 'tag' => -2), + "posWorld" => array('type' => 81, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +135 => new StructNode([ + "achievementLink" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +136 => new StructNode([ + "abilLink" => array('type' => 77, 'tag' => -3), + "abilCmdIndex" => array('type' => 7, 'tag' => -2), + "state" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +137 => new StructNode([ + "soundtrack" => array('type' => 5, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +138 => new StructNode([ + "planetId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +139 => new StructNode([ + "key" => array('type' => 99, 'tag' => -2), + "flags" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +140 => new StructNode([ + "resources" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +141 => new StructNode([ + "fulfillRequestId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +142 => new StructNode([ + "cancelRequestId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +143 => new StructNode([ + "researchItemId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +144 => new StructNode([ + "mercenaryId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +145 => new StructNode([ + "battleReportId" => array('type' => 72, 'tag' => -2), + "difficultyLevel" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +146 => new StructNode([ + "battleReportId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +147 => new IntegerNode(19, 0), +148 => new StructNode([ + "decrementMs" => array('type' => 147, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +149 => new StructNode([ + "portraitId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +150 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +151 => new StructNode([ + "result" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +152 => new StructNode([ + "gameMenuItemIndex" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +153 => new StructNode([ + "reason" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +154 => new StructNode([ + "purchaseCategoryId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +155 => new StructNode([ + "button" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +156 => new StructNode([ + "cutsceneId" => array('type' => 72, 'tag' => -2), + "bookmarkName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +157 => new StructNode([ + "cutsceneId" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +158 => new StructNode([ + "cutsceneId" => array('type' => 72, 'tag' => -3), + "conversationLine" => array('type' => 15, 'tag' => -2), + "altConversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 72, 'tag' => -2), + "conversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +160 => new StructNode([ + "observe" => array('type' => 19, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "toonHandle" => array('type' => 110, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +161 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +162 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +163 => new StructNode([ + "progress" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +] +); +Version24764::$GAME_EVENT_MAPPING = [ + 5 => 70, + 7 => 69, + 9 => 62, + 10 => 64, + 11 => 65, + 12 => 66, + 13 => 68, + 21 => 71, + 22 => 70, + 23 => 70, + 26 => 75, + 27 => 84, + 28 => 92, + 29 => 93, + 30 => 95, + 31 => 97, + 32 => 98, + 33 => 101, + 34 => 102, + 35 => 103, + 36 => 104, + 37 => 105, + 38 => 106, + 39 => 107, + 40 => 108, + 41 => 109, + 43 => 113, + 44 => 70, + 45 => 118, + 46 => 122, + 47 => 123, + 48 => 124, + 49 => 128, + 50 => 70, + 51 => 114, + 52 => 70, + 53 => 115, + 54 => 70, + 55 => 117, + 56 => 121, + 57 => 130, + 58 => 133, + 59 => 134, + 60 => 135, + 62 => 136, + 63 => 70, + 64 => 137, + 65 => 138, + 66 => 139, + 67 => 150, + 68 => 70, + 69 => 70, + 70 => 140, + 71 => 141, + 72 => 142, + 73 => 70, + 74 => 70, + 75 => 143, + 77 => 70, + 78 => 70, + 79 => 144, + 80 => 70, + 81 => 70, + 82 => 145, + 83 => 146, + 84 => 146, + 85 => 115, + 86 => 70, + 87 => 70, + 88 => 148, + 89 => 149, + 90 => 151, + 91 => 152, + 92 => 153, + 93 => 114, + 94 => 154, + 95 => 155, + 96 => 70, + 97 => 156, + 98 => 157, + 99 => 158, + 100 => 159, + 101 => 70, + 102 => 160, +]; +Version24764::$MESSAGE_EVENT_MAPPING = [ + 0 => 161, + 1 => 162, + 2 => 163, + 3 => 70, +]; +Version24764::$TRACKER_EVENT_MAPPING = NULL; diff --git a/src/Version/Version24944.php b/src/Version/Version24944.php new file mode 100644 index 0000000..21c2f0b --- /dev/null +++ b/src/Version/Version24944.php @@ -0,0 +1,1161 @@ +getNode(13); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(61); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(35); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version24944::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +14 => new FourCCNode(), +15 => new BlobNode(new IntegerNode(7, 0)), +16 => new IntegerNode(64, 0), +17 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 14, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 15, 'tag' => 3), + "id" => array('type' => 16, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +18 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +19 => new IntegerNode(2, 0), +20 => new OptionalNode(10), +21 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 17, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 18, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 19, 'tag' => 7), + "result" => array('type' => 19, 'tag' => 8), + "workingSetSlotId" => array('type' => 20, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +22 => new ArrayNode( + new IntegerNode(5, 0), + 21, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +23 => new OptionalNode(22), +24 => new BlobNode(new IntegerNode(10, 0)), +25 => new BlobNode(new IntegerNode(11, 0)), +26 => new StructNode([ + "file" => array('type' => 25, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +27 => new BooleanNode(), +28 => new IntegerNode(64, -9223372036854775808), +29 => new BlobNode(new IntegerNode(12, 0)), +30 => new BlobNode(new IntegerNode(0, 40)), +31 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +32 => new OptionalNode(31), +33 => new ArrayNode( + new IntegerNode(6, 0), + 25 +), +34 => new OptionalNode(33), +35 => new StructNode([ + "playerList" => array('type' => 23, 'tag' => 0), + "title" => array('type' => 24, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 26, 'tag' => 3), + "isBlizzardMap" => array('type' => 27, 'tag' => 4), + "timeUTC" => array('type' => 28, 'tag' => 5), + "timeLocalOffset" => array('type' => 28, 'tag' => 6), + "description" => array('type' => 29, 'tag' => 7), + "imageFilePath" => array('type' => 25, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 25, 'tag' => 9), + "cacheHandles" => array('type' => 32, 'tag' => 10), + "miniSave" => array('type' => 27, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 34, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +36 => new OptionalNode(9), +37 => new OptionalNode(6), +38 => new StructNode([ + "race" => array('type' => 20, 'tag' => -1), +]), +39 => new StructNode([ + "team" => array('type' => 20, 'tag' => -1), +]), +40 => new StructNode([ + "name" => array('type' => 9, 'tag' => -12), + "clanTag" => array('type' => 36, 'tag' => -11), + "highestLeague" => array('type' => 20, 'tag' => -10), + "combinedRaceLevels" => array('type' => 37, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 38, 'tag' => -7), + "teamPreference" => array('type' => 39, 'tag' => -6), + "testMap" => array('type' => 27, 'tag' => -5), + "testAuto" => array('type' => 27, 'tag' => -4), + "examine" => array('type' => 27, 'tag' => -3), + "customInterface" => array('type' => 27, 'tag' => -2), + "observe" => array('type' => 19, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +41 => new ArrayNode( + new IntegerNode(5, 0), + 40, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +42 => new StructNode([ + "lockTeams" => array('type' => 27, 'tag' => -12), + "teamsTogether" => array('type' => 27, 'tag' => -11), + "advancedSharedControl" => array('type' => 27, 'tag' => -10), + "randomRaces" => array('type' => 27, 'tag' => -9), + "battleNet" => array('type' => 27, 'tag' => -8), + "amm" => array('type' => 27, 'tag' => -7), + "competitive" => array('type' => 27, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 27, 'tag' => -5), + "fog" => array('type' => 19, 'tag' => -4), + "observers" => array('type' => 19, 'tag' => -3), + "userDifficulty" => array('type' => 19, 'tag' => -2), + "clientDebugFlags" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +43 => new IntegerNode(4, 1), +44 => new IntegerNode(8, 1), +45 => new BitArrayNode( + new IntegerNode(6, 0) +), +46 => new BitArrayNode( + new IntegerNode(8, 0) +), +47 => new BitArrayNode( + new IntegerNode(2, 0) +), +48 => new BitArrayNode( + new IntegerNode(7, 0) +), +49 => new StructNode([ + "allowedColors" => array('type' => 45, 'tag' => -6), + "allowedRaces" => array('type' => 46, 'tag' => -5), + "allowedDifficulty" => array('type' => 45, 'tag' => -4), + "allowedControls" => array('type' => 46, 'tag' => -3), + "allowedObserveTypes" => array('type' => 47, 'tag' => -2), + "allowedAIBuilds" => array('type' => 48, 'tag' => -1), +]), +50 => new ArrayNode( + new IntegerNode(5, 0), + 49 +), +51 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -25), + "gameCacheName" => array('type' => 24, 'tag' => -24), + "gameOptions" => array('type' => 42, 'tag' => -23), + "gameSpeed" => array('type' => 12, 'tag' => -22), + "gameType" => array('type' => 12, 'tag' => -21), + "maxUsers" => array('type' => 2, 'tag' => -20), + "maxObservers" => array('type' => 2, 'tag' => -19), + "maxPlayers" => array('type' => 2, 'tag' => -18), + "maxTeams" => array('type' => 43, 'tag' => -17), + "maxColors" => array('type' => 3, 'tag' => -16), + "maxRaces" => array('type' => 44, 'tag' => -15), + "maxControls" => array('type' => 44, 'tag' => -14), + "mapSizeX" => array('type' => 10, 'tag' => -13), + "mapSizeY" => array('type' => 10, 'tag' => -12), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -11), + "mapFileName" => array('type' => 25, 'tag' => -10), + "mapAuthorName" => array('type' => 9, 'tag' => -9), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -8), + "slotDescriptions" => array('type' => 50, 'tag' => -7), + "defaultDifficulty" => array('type' => 3, 'tag' => -6), + "defaultAIBuild" => array('type' => 0, 'tag' => -5), + "cacheHandles" => array('type' => 31, 'tag' => -4), + "isBlizzardMap" => array('type' => 27, 'tag' => -3), + "isPremadeFFA" => array('type' => 27, 'tag' => -2), + "isCoopMode" => array('type' => 27, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +52 => new OptionalNode(1), +53 => new OptionalNode(2), +54 => new StructNode([ + "color" => array('type' => 53, 'tag' => -1), +]), +55 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +56 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +57 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 52, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 54, 'tag' => -10), + "racePref" => array('type' => 38, 'tag' => -9), + "difficulty" => array('type' => 3, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 19, 'tag' => -5), + "workingSetSlotId" => array('type' => 20, 'tag' => -4), + "rewards" => array('type' => 55, 'tag' => -3), + "toonHandle" => array('type' => 15, 'tag' => -2), + "licenses" => array('type' => 56, 'tag' => -1), +]), +58 => new ArrayNode( + new IntegerNode(5, 0), + 57 +), +59 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 58, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 52, 'tag' => -5), + "isSinglePlayer" => array('type' => 27, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +60 => new StructNode([ + "userInitialData" => array('type' => 41, 'tag' => -3), + "gameDescription" => array('type' => 51, 'tag' => -2), + "lobbyState" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +61 => new StructNode([ + "syncLobbyState" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +62 => new StructNode([ + "name" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +63 => new BlobNode(new IntegerNode(6, 0)), +64 => new StructNode([ + "name" => array('type' => 63, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +65 => new StructNode([ + "name" => array('type' => 63, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +66 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 63, 'tag' => -2), + "data" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +67 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +68 => new StructNode([ + "signature" => array('type' => 67, 'tag' => -2), + "toonHandle" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +69 => new StructNode([ + "gameFullyDownloaded" => array('type' => 27, 'tag' => -7), + "developmentCheatsEnabled" => array('type' => 27, 'tag' => -6), + "multiplayerCheatsEnabled" => array('type' => 27, 'tag' => -5), + "syncChecksummingEnabled" => array('type' => 27, 'tag' => -4), + "isMapToMapTransition" => array('type' => 27, 'tag' => -3), + "startingRally" => array('type' => 27, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +70 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +71 => new IntegerNode(16, 0), +72 => new StructNode([ + "x" => array('type' => 71, 'tag' => -2), + "y" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +73 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +74 => new StructNode([ + "fileName" => array('type' => 25, 'tag' => -5), + "automatic" => array('type' => 27, 'tag' => -4), + "overwrite" => array('type' => 27, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +75 => new IntegerNode(32, -2147483648), +76 => new StructNode([ + "x" => array('type' => 75, 'tag' => -2), + "y" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +77 => new StructNode([ + "point" => array('type' => 76, 'tag' => -4), + "time" => array('type' => 75, 'tag' => -3), + "verb" => array('type' => 24, 'tag' => -2), + "arguments" => array('type' => 24, 'tag' => -1), +]), +78 => new StructNode([ + "data" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +79 => new IntegerNode(20, 0), +80 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +81 => new OptionalNode(80), +82 => new NullNode(), +83 => new StructNode([ + "x" => array('type' => 79, 'tag' => -3), + "y" => array('type' => 79, 'tag' => -2), + "z" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +84 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 71, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 52, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 52, 'tag' => -2), + "snapshotPoint" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +85 => new ChoiceNode(new IntegerNode(2), [ + 0 => 82, + 1 => 83, + 2 => 84, + 3 => 6, +]), +86 => new StructNode([ + "cmdFlags" => array('type' => 79, 'tag' => -4), + "abil" => array('type' => 81, 'tag' => -3), + "data" => array('type' => 85, 'tag' => -2), + "otherUnit" => array('type' => 37, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +87 => new IntegerNode(9, 0), +88 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +89 => new ArrayNode( + new IntegerNode(9, 0), + 87, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +90 => new ChoiceNode(new IntegerNode(2), [ + 0 => 82, + 1 => 88, + 2 => 89, + 3 => 89, +]), +91 => new StructNode([ + "unitLink" => array('type' => 71, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 87, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +92 => new ArrayNode( + new IntegerNode(9, 0), + 91 +), +93 => new StructNode([ + "subgroupIndex" => array('type' => 87, 'tag' => -4), + "removeMask" => array('type' => 90, 'tag' => -3), + "addSubgroups" => array('type' => 92, 'tag' => -2), + "addUnitTags" => array('type' => 56, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +94 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +95 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 19, 'tag' => -2), + "mask" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +96 => new StructNode([ + "count" => array('type' => 87, 'tag' => -6), + "subgroupCount" => array('type' => 87, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 87, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +97 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 96, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +98 => new ArrayNode( + new IntegerNode(3, 0), + 75, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +99 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +100 => new StructNode([ + "chatMessage" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +101 => new IntegerNode(8, -128), +102 => new StructNode([ + "x" => array('type' => 75, 'tag' => -3), + "y" => array('type' => 75, 'tag' => -2), + "z" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +103 => new StructNode([ + "beacon" => array('type' => 101, 'tag' => -9), + "ally" => array('type' => 101, 'tag' => -8), + "flags" => array('type' => 101, 'tag' => -7), + "build" => array('type' => 101, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 71, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 101, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 101, 'tag' => -2), + "targetPoint" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +104 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +105 => new StructNode([ + "delta" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +106 => new StructNode([ + "point" => array('type' => 76, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 27, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +107 => new StructNode([ + "verb" => array('type' => 24, 'tag' => -2), + "arguments" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +108 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +109 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +110 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +111 => new StructNode([ + "conversationId" => array('type' => 75, 'tag' => -2), + "replyId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +112 => new OptionalNode(15), +113 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -5), + "observe" => array('type' => 19, 'tag' => -4), + "name" => array('type' => 9, 'tag' => -3), + "toonHandle" => array('type' => 112, 'tag' => -2), + "clanTag" => array('type' => 36, 'tag' => -1), +]), +114 => new ArrayNode( + new IntegerNode(5, 0), + 113 +), +115 => new IntegerNode(1, 0), +116 => new StructNode([ + "userInfos" => array('type' => 114, 'tag' => -2), + "method" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +117 => new StructNode([ + "purchaseItemId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +118 => new StructNode([ + "difficultyLevel" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +119 => new ChoiceNode(new IntegerNode(3), [ + 0 => 82, + 1 => 27, + 2 => 6, + 3 => 75, + 4 => 25, + 5 => 6, +]), +120 => new StructNode([ + "controlId" => array('type' => 75, 'tag' => -3), + "eventType" => array('type' => 75, 'tag' => -2), + "eventData" => array('type' => 119, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +121 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +122 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +123 => new StructNode([ + "soundHash" => array('type' => 122, 'tag' => -2), + "length" => array('type' => 122, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +124 => new StructNode([ + "syncInfo" => array('type' => 123, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +125 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +126 => new StructNode([ + "transmissionId" => array('type' => 75, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +127 => new StructNode([ + "transmissionId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +128 => new OptionalNode(72), +129 => new OptionalNode(71), +130 => new StructNode([ + "target" => array('type' => 128, 'tag' => -4), + "distance" => array('type' => 129, 'tag' => -3), + "pitch" => array('type' => 129, 'tag' => -2), + "yaw" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +131 => new StructNode([ + "skipType" => array('type' => 115, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +132 => new IntegerNode(11, 0), +133 => new StructNode([ + "x" => array('type' => 132, 'tag' => -2), + "y" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +134 => new StructNode([ + "button" => array('type' => 6, 'tag' => -4), + "down" => array('type' => 27, 'tag' => -3), + "posUI" => array('type' => 133, 'tag' => -2), + "posWorld" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +135 => new StructNode([ + "posUI" => array('type' => 133, 'tag' => -2), + "posWorld" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +136 => new StructNode([ + "achievementLink" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +137 => new StructNode([ + "abilLink" => array('type' => 71, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +138 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +139 => new StructNode([ + "planetId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +140 => new StructNode([ + "key" => array('type' => 101, 'tag' => -2), + "flags" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +141 => new StructNode([ + "resources" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +142 => new StructNode([ + "fulfillRequestId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +143 => new StructNode([ + "cancelRequestId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +144 => new StructNode([ + "researchItemId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +145 => new StructNode([ + "mercenaryId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +146 => new StructNode([ + "battleReportId" => array('type' => 75, 'tag' => -2), + "difficultyLevel" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +147 => new StructNode([ + "battleReportId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +148 => new IntegerNode(19, 0), +149 => new StructNode([ + "decrementMs" => array('type' => 148, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +150 => new StructNode([ + "portraitId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +151 => new StructNode([ + "functionName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +152 => new StructNode([ + "result" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +153 => new StructNode([ + "gameMenuItemIndex" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +154 => new StructNode([ + "reason" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +155 => new StructNode([ + "purchaseCategoryId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +156 => new StructNode([ + "button" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +157 => new StructNode([ + "cutsceneId" => array('type' => 75, 'tag' => -2), + "bookmarkName" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +158 => new StructNode([ + "cutsceneId" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 75, 'tag' => -3), + "conversationLine" => array('type' => 15, 'tag' => -2), + "altConversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 75, 'tag' => -2), + "conversationLine" => array('type' => 15, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +161 => new StructNode([ + "observe" => array('type' => 19, 'tag' => -4), + "name" => array('type' => 9, 'tag' => -3), + "toonHandle" => array('type' => 112, 'tag' => -2), + "clanTag" => array('type' => 36, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +162 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +163 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +164 => new StructNode([ + "progress" => array('type' => 75, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +165 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 75, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 75, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 75, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 75, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 75, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 75, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 75, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 75, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 75, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 75, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 75, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 75, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 75, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 75, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 75, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 75, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 75, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 75, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 75, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 75, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 75, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 75, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 75, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 75, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 75, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 75, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 75, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 75, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 75, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 75, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 75, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 75, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 75, 'tag' => 32), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +166 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 165, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +167 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 24, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +168 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 52, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 24, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +171 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 24, 'tag' => 1), + "count" => array('type' => 75, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +172 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +173 => new ArrayNode( + new IntegerNode(10, 0), + 75, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +174 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 173, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +] +); +Version24944::$GAME_EVENT_MAPPING = [ + 5 => 70, + 7 => 69, + 9 => 62, + 10 => 64, + 11 => 65, + 12 => 66, + 13 => 68, + 14 => 73, + 21 => 74, + 22 => 70, + 23 => 70, + 26 => 78, + 27 => 86, + 28 => 94, + 29 => 95, + 30 => 97, + 31 => 99, + 32 => 100, + 33 => 103, + 34 => 104, + 35 => 105, + 36 => 106, + 37 => 107, + 38 => 108, + 39 => 109, + 40 => 110, + 41 => 111, + 43 => 116, + 44 => 70, + 45 => 121, + 46 => 125, + 47 => 126, + 48 => 127, + 49 => 130, + 50 => 70, + 51 => 117, + 52 => 70, + 53 => 118, + 54 => 70, + 55 => 120, + 56 => 124, + 57 => 131, + 58 => 134, + 59 => 135, + 60 => 136, + 62 => 137, + 63 => 70, + 64 => 138, + 65 => 139, + 66 => 140, + 67 => 151, + 68 => 70, + 69 => 70, + 70 => 141, + 71 => 142, + 72 => 143, + 73 => 70, + 74 => 70, + 75 => 144, + 77 => 70, + 78 => 70, + 79 => 145, + 80 => 70, + 81 => 70, + 82 => 146, + 83 => 147, + 84 => 147, + 85 => 118, + 86 => 70, + 87 => 70, + 88 => 149, + 89 => 150, + 90 => 152, + 91 => 153, + 92 => 154, + 93 => 117, + 94 => 155, + 95 => 156, + 96 => 70, + 97 => 157, + 98 => 158, + 99 => 159, + 100 => 160, + 101 => 70, + 102 => 161, +]; +Version24944::$MESSAGE_EVENT_MAPPING = [ + 0 => 162, + 1 => 163, + 2 => 164, + 3 => 70, +]; +Version24944::$TRACKER_EVENT_MAPPING = [ + 0 => 166, + 1 => 167, + 2 => 168, + 3 => 169, + 4 => 170, + 5 => 171, + 6 => 167, + 7 => 172, + 8 => 174, +]; diff --git a/src/Version/Version26490.php b/src/Version/Version26490.php new file mode 100644 index 0000000..dbb6453 --- /dev/null +++ b/src/Version/Version26490.php @@ -0,0 +1,1173 @@ +getNode(14); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(62); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(36); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version26490::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +15 => new FourCCNode(), +16 => new BlobNode(new IntegerNode(7, 0)), +17 => new IntegerNode(64, 0), +18 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 15, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 16, 'tag' => 3), + "id" => array('type' => 17, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +19 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +20 => new IntegerNode(2, 0), +21 => new OptionalNode(10), +22 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 18, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 19, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 20, 'tag' => 7), + "result" => array('type' => 20, 'tag' => 8), + "workingSetSlotId" => array('type' => 21, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +23 => new ArrayNode( + new IntegerNode(5, 0), + 22, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +24 => new OptionalNode(23), +25 => new BlobNode(new IntegerNode(10, 0)), +26 => new BlobNode(new IntegerNode(11, 0)), +27 => new StructNode([ + "file" => array('type' => 26, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +28 => new OptionalNode(13), +29 => new IntegerNode(64, -9223372036854775808), +30 => new BlobNode(new IntegerNode(12, 0)), +31 => new BlobNode(new IntegerNode(0, 40)), +32 => new ArrayNode( + new IntegerNode(6, 0), + 31 +), +33 => new OptionalNode(32), +34 => new ArrayNode( + new IntegerNode(6, 0), + 26 +), +35 => new OptionalNode(34), +36 => new StructNode([ + "playerList" => array('type' => 24, 'tag' => 0), + "title" => array('type' => 25, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 27, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 28, 'tag' => 16), + "timeUTC" => array('type' => 29, 'tag' => 5), + "timeLocalOffset" => array('type' => 29, 'tag' => 6), + "description" => array('type' => 30, 'tag' => 7), + "imageFilePath" => array('type' => 26, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 26, 'tag' => 9), + "cacheHandles" => array('type' => 33, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 35, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +37 => new OptionalNode(9), +38 => new OptionalNode(6), +39 => new StructNode([ + "race" => array('type' => 21, 'tag' => -1), +]), +40 => new StructNode([ + "team" => array('type' => 21, 'tag' => -1), +]), +41 => new StructNode([ + "name" => array('type' => 9, 'tag' => -12), + "clanTag" => array('type' => 37, 'tag' => -11), + "highestLeague" => array('type' => 21, 'tag' => -10), + "combinedRaceLevels" => array('type' => 38, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 39, 'tag' => -7), + "teamPreference" => array('type' => 40, 'tag' => -6), + "testMap" => array('type' => 13, 'tag' => -5), + "testAuto" => array('type' => 13, 'tag' => -4), + "examine" => array('type' => 13, 'tag' => -3), + "customInterface" => array('type' => 13, 'tag' => -2), + "observe" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +42 => new ArrayNode( + new IntegerNode(5, 0), + 41, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +43 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -12), + "teamsTogether" => array('type' => 13, 'tag' => -11), + "advancedSharedControl" => array('type' => 13, 'tag' => -10), + "randomRaces" => array('type' => 13, 'tag' => -9), + "battleNet" => array('type' => 13, 'tag' => -8), + "amm" => array('type' => 13, 'tag' => -7), + "competitive" => array('type' => 13, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 20, 'tag' => -4), + "observers" => array('type' => 20, 'tag' => -3), + "userDifficulty" => array('type' => 20, 'tag' => -2), + "clientDebugFlags" => array('type' => 17, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +44 => new IntegerNode(4, 1), +45 => new IntegerNode(8, 1), +46 => new BitArrayNode( + new IntegerNode(6, 0) +), +47 => new BitArrayNode( + new IntegerNode(8, 0) +), +48 => new BitArrayNode( + new IntegerNode(2, 0) +), +49 => new BitArrayNode( + new IntegerNode(7, 0) +), +50 => new StructNode([ + "allowedColors" => array('type' => 46, 'tag' => -6), + "allowedRaces" => array('type' => 47, 'tag' => -5), + "allowedDifficulty" => array('type' => 46, 'tag' => -4), + "allowedControls" => array('type' => 47, 'tag' => -3), + "allowedObserveTypes" => array('type' => 48, 'tag' => -2), + "allowedAIBuilds" => array('type' => 49, 'tag' => -1), +]), +51 => new ArrayNode( + new IntegerNode(5, 0), + 50 +), +52 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -25), + "gameCacheName" => array('type' => 25, 'tag' => -24), + "gameOptions" => array('type' => 43, 'tag' => -23), + "gameSpeed" => array('type' => 12, 'tag' => -22), + "gameType" => array('type' => 12, 'tag' => -21), + "maxUsers" => array('type' => 2, 'tag' => -20), + "maxObservers" => array('type' => 2, 'tag' => -19), + "maxPlayers" => array('type' => 2, 'tag' => -18), + "maxTeams" => array('type' => 44, 'tag' => -17), + "maxColors" => array('type' => 3, 'tag' => -16), + "maxRaces" => array('type' => 45, 'tag' => -15), + "maxControls" => array('type' => 10, 'tag' => -14), + "mapSizeX" => array('type' => 10, 'tag' => -13), + "mapSizeY" => array('type' => 10, 'tag' => -12), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -11), + "mapFileName" => array('type' => 26, 'tag' => -10), + "mapAuthorName" => array('type' => 9, 'tag' => -9), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -8), + "slotDescriptions" => array('type' => 51, 'tag' => -7), + "defaultDifficulty" => array('type' => 3, 'tag' => -6), + "defaultAIBuild" => array('type' => 0, 'tag' => -5), + "cacheHandles" => array('type' => 32, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +53 => new OptionalNode(1), +54 => new OptionalNode(2), +55 => new StructNode([ + "color" => array('type' => 54, 'tag' => -1), +]), +56 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +57 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +58 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 53, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 55, 'tag' => -10), + "racePref" => array('type' => 39, 'tag' => -9), + "difficulty" => array('type' => 3, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "workingSetSlotId" => array('type' => 21, 'tag' => -4), + "rewards" => array('type' => 56, 'tag' => -3), + "toonHandle" => array('type' => 16, 'tag' => -2), + "licenses" => array('type' => 57, 'tag' => -1), +]), +59 => new ArrayNode( + new IntegerNode(5, 0), + 58 +), +60 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 59, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 53, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +61 => new StructNode([ + "userInitialData" => array('type' => 42, 'tag' => -3), + "gameDescription" => array('type' => 52, 'tag' => -2), + "lobbyState" => array('type' => 60, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +62 => new StructNode([ + "syncLobbyState" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +63 => new StructNode([ + "name" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +64 => new BlobNode(new IntegerNode(6, 0)), +65 => new StructNode([ + "name" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +66 => new StructNode([ + "name" => array('type' => 64, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +67 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 64, 'tag' => -2), + "data" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +68 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +69 => new StructNode([ + "signature" => array('type' => 68, 'tag' => -2), + "toonHandle" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +70 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -8), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -7), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -6), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -5), + "isMapToMapTransition" => array('type' => 13, 'tag' => -4), + "startingRally" => array('type' => 13, 'tag' => -3), + "debugPauseEnabled" => array('type' => 13, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +71 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +72 => new IntegerNode(16, 0), +73 => new StructNode([ + "x" => array('type' => 72, 'tag' => -2), + "y" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +74 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +75 => new StructNode([ + "fileName" => array('type' => 26, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +76 => new IntegerNode(32, -2147483648), +77 => new StructNode([ + "x" => array('type' => 76, 'tag' => -2), + "y" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +78 => new StructNode([ + "point" => array('type' => 77, 'tag' => -4), + "time" => array('type' => 76, 'tag' => -3), + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +]), +79 => new StructNode([ + "data" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +80 => new IntegerNode(20, 0), +81 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +82 => new OptionalNode(81), +83 => new NullNode(), +84 => new StructNode([ + "x" => array('type' => 80, 'tag' => -3), + "y" => array('type' => 80, 'tag' => -2), + "z" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +85 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 72, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 53, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 53, 'tag' => -2), + "snapshotPoint" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +86 => new ChoiceNode(new IntegerNode(2), [ + 0 => 83, + 1 => 84, + 2 => 85, + 3 => 6, +]), +87 => new StructNode([ + "cmdFlags" => array('type' => 80, 'tag' => -4), + "abil" => array('type' => 82, 'tag' => -3), + "data" => array('type' => 86, 'tag' => -2), + "otherUnit" => array('type' => 38, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +88 => new IntegerNode(9, 0), +89 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +90 => new ArrayNode( + new IntegerNode(9, 0), + 88, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +91 => new ChoiceNode(new IntegerNode(2), [ + 0 => 83, + 1 => 89, + 2 => 90, + 3 => 90, +]), +92 => new StructNode([ + "unitLink" => array('type' => 72, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 88, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +93 => new ArrayNode( + new IntegerNode(9, 0), + 92 +), +94 => new StructNode([ + "subgroupIndex" => array('type' => 88, 'tag' => -4), + "removeMask" => array('type' => 91, 'tag' => -3), + "addSubgroups" => array('type' => 93, 'tag' => -2), + "addUnitTags" => array('type' => 57, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +95 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +96 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 20, 'tag' => -2), + "mask" => array('type' => 91, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +97 => new StructNode([ + "count" => array('type' => 88, 'tag' => -6), + "subgroupCount" => array('type' => 88, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 88, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +98 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +99 => new ArrayNode( + new IntegerNode(3, 0), + 76, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +100 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +101 => new StructNode([ + "chatMessage" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +102 => new IntegerNode(8, -128), +103 => new StructNode([ + "x" => array('type' => 76, 'tag' => -3), + "y" => array('type' => 76, 'tag' => -2), + "z" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +104 => new StructNode([ + "beacon" => array('type' => 102, 'tag' => -9), + "ally" => array('type' => 102, 'tag' => -8), + "flags" => array('type' => 102, 'tag' => -7), + "build" => array('type' => 102, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 72, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 102, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 102, 'tag' => -2), + "targetPoint" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +105 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +106 => new StructNode([ + "delta" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +107 => new StructNode([ + "point" => array('type' => 77, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +108 => new StructNode([ + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +109 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +110 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +111 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +112 => new StructNode([ + "conversationId" => array('type' => 76, 'tag' => -2), + "replyId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +113 => new OptionalNode(16), +114 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -5), + "observe" => array('type' => 20, 'tag' => -4), + "name" => array('type' => 9, 'tag' => -3), + "toonHandle" => array('type' => 113, 'tag' => -2), + "clanTag" => array('type' => 37, 'tag' => -1), +]), +115 => new ArrayNode( + new IntegerNode(5, 0), + 114 +), +116 => new IntegerNode(1, 0), +117 => new StructNode([ + "userInfos" => array('type' => 115, 'tag' => -2), + "method" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +118 => new StructNode([ + "purchaseItemId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +119 => new StructNode([ + "difficultyLevel" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +120 => new ChoiceNode(new IntegerNode(3), [ + 0 => 83, + 1 => 13, + 2 => 6, + 3 => 76, + 4 => 26, + 5 => 6, +]), +121 => new StructNode([ + "controlId" => array('type' => 76, 'tag' => -3), + "eventType" => array('type' => 76, 'tag' => -2), + "eventData" => array('type' => 120, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +122 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +123 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +124 => new StructNode([ + "soundHash" => array('type' => 123, 'tag' => -2), + "length" => array('type' => 123, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +125 => new StructNode([ + "syncInfo" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +126 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +127 => new StructNode([ + "transmissionId" => array('type' => 76, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +128 => new StructNode([ + "transmissionId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +129 => new OptionalNode(73), +130 => new OptionalNode(72), +131 => new StructNode([ + "target" => array('type' => 129, 'tag' => -4), + "distance" => array('type' => 130, 'tag' => -3), + "pitch" => array('type' => 130, 'tag' => -2), + "yaw" => array('type' => 130, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +132 => new StructNode([ + "skipType" => array('type' => 116, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +133 => new IntegerNode(11, 0), +134 => new StructNode([ + "x" => array('type' => 133, 'tag' => -2), + "y" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +135 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 134, 'tag' => -3), + "posWorld" => array('type' => 84, 'tag' => -2), + "flags" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +136 => new StructNode([ + "posUI" => array('type' => 134, 'tag' => -3), + "posWorld" => array('type' => 84, 'tag' => -2), + "flags" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +137 => new StructNode([ + "achievementLink" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +138 => new StructNode([ + "abilLink" => array('type' => 72, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +139 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +140 => new StructNode([ + "planetId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +141 => new StructNode([ + "key" => array('type' => 102, 'tag' => -2), + "flags" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +142 => new StructNode([ + "resources" => array('type' => 99, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +143 => new StructNode([ + "fulfillRequestId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +144 => new StructNode([ + "cancelRequestId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +145 => new StructNode([ + "researchItemId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +146 => new StructNode([ + "mercenaryId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +147 => new StructNode([ + "battleReportId" => array('type' => 76, 'tag' => -2), + "difficultyLevel" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +148 => new StructNode([ + "battleReportId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +149 => new IntegerNode(19, 0), +150 => new StructNode([ + "decrementMs" => array('type' => 149, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +151 => new StructNode([ + "portraitId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +152 => new StructNode([ + "functionName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +153 => new StructNode([ + "result" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +154 => new StructNode([ + "gameMenuItemIndex" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +155 => new StructNode([ + "reason" => array('type' => 102, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCameraMoveEvent' +), +156 => new StructNode([ + "purchaseCategoryId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +157 => new StructNode([ + "button" => array('type' => 72, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +158 => new StructNode([ + "cutsceneId" => array('type' => 76, 'tag' => -2), + "bookmarkName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 76, 'tag' => -3), + "conversationLine" => array('type' => 16, 'tag' => -2), + "altConversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +161 => new StructNode([ + "cutsceneId" => array('type' => 76, 'tag' => -2), + "conversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +162 => new StructNode([ + "observe" => array('type' => 20, 'tag' => -4), + "name" => array('type' => 9, 'tag' => -3), + "toonHandle" => array('type' => 113, 'tag' => -2), + "clanTag" => array('type' => 37, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +163 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +164 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +165 => new StructNode([ + "progress" => array('type' => 76, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +166 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 76, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 76, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 76, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 76, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 76, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 76, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 76, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 76, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 76, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 76, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 76, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 76, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 76, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 76, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 76, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 76, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 76, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 76, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 76, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 76, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 76, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 76, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 76, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 76, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 76, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 76, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 76, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 76, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 76, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 76, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 76, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 76, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 76, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 76, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 76, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 76, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 76, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 76, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 76, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +167 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 166, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +168 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 53, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +171 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +172 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 25, 'tag' => 1), + "count" => array('type' => 76, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +173 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +174 => new ArrayNode( + new IntegerNode(10, 0), + 76, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +175 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 174, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +] +); +Version26490::$GAME_EVENT_MAPPING = [ + 5 => 71, + 7 => 70, + 9 => 63, + 10 => 65, + 11 => 66, + 12 => 67, + 13 => 69, + 14 => 74, + 21 => 75, + 22 => 71, + 23 => 71, + 26 => 79, + 27 => 87, + 28 => 95, + 29 => 96, + 30 => 98, + 31 => 100, + 32 => 101, + 33 => 104, + 34 => 105, + 35 => 106, + 36 => 107, + 37 => 108, + 38 => 109, + 39 => 110, + 40 => 111, + 41 => 112, + 43 => 117, + 44 => 71, + 45 => 122, + 46 => 126, + 47 => 127, + 48 => 128, + 49 => 131, + 50 => 71, + 51 => 118, + 52 => 71, + 53 => 119, + 54 => 71, + 55 => 121, + 56 => 125, + 57 => 132, + 58 => 135, + 59 => 136, + 60 => 137, + 62 => 138, + 63 => 71, + 64 => 139, + 65 => 140, + 66 => 141, + 67 => 152, + 68 => 71, + 69 => 71, + 70 => 142, + 71 => 143, + 72 => 144, + 73 => 71, + 74 => 71, + 75 => 145, + 77 => 71, + 78 => 71, + 79 => 146, + 80 => 71, + 81 => 71, + 82 => 147, + 83 => 148, + 84 => 148, + 85 => 119, + 86 => 71, + 87 => 71, + 88 => 150, + 89 => 151, + 90 => 153, + 91 => 154, + 92 => 155, + 93 => 118, + 94 => 156, + 95 => 157, + 96 => 71, + 97 => 158, + 98 => 159, + 99 => 160, + 100 => 161, + 101 => 71, + 102 => 162, +]; +Version26490::$MESSAGE_EVENT_MAPPING = [ + 0 => 163, + 1 => 164, + 2 => 165, + 3 => 71, +]; +Version26490::$TRACKER_EVENT_MAPPING = [ + 0 => 167, + 1 => 168, + 2 => 169, + 3 => 170, + 4 => 171, + 5 => 172, + 6 => 168, + 7 => 173, + 8 => 175, +]; diff --git a/src/Version/Version27950.php b/src/Version/Version27950.php new file mode 100644 index 0000000..ea7eb4d --- /dev/null +++ b/src/Version/Version27950.php @@ -0,0 +1,1185 @@ +getNode(14); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(63); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(36); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version27950::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +15 => new FourCCNode(), +16 => new BlobNode(new IntegerNode(7, 0)), +17 => new IntegerNode(64, 0), +18 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 15, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 16, 'tag' => 3), + "id" => array('type' => 17, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +19 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +20 => new IntegerNode(2, 0), +21 => new OptionalNode(10), +22 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 18, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 19, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 20, 'tag' => 7), + "result" => array('type' => 20, 'tag' => 8), + "workingSetSlotId" => array('type' => 21, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +23 => new ArrayNode( + new IntegerNode(5, 0), + 22, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +24 => new OptionalNode(23), +25 => new BlobNode(new IntegerNode(10, 0)), +26 => new BlobNode(new IntegerNode(11, 0)), +27 => new StructNode([ + "file" => array('type' => 26, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +28 => new OptionalNode(13), +29 => new IntegerNode(64, -9223372036854775808), +30 => new BlobNode(new IntegerNode(12, 0)), +31 => new BlobNode(new IntegerNode(0, 40)), +32 => new ArrayNode( + new IntegerNode(6, 0), + 31 +), +33 => new OptionalNode(32), +34 => new ArrayNode( + new IntegerNode(6, 0), + 26 +), +35 => new OptionalNode(34), +36 => new StructNode([ + "playerList" => array('type' => 24, 'tag' => 0), + "title" => array('type' => 25, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 27, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 28, 'tag' => 16), + "timeUTC" => array('type' => 29, 'tag' => 5), + "timeLocalOffset" => array('type' => 29, 'tag' => 6), + "description" => array('type' => 30, 'tag' => 7), + "imageFilePath" => array('type' => 26, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 26, 'tag' => 9), + "cacheHandles" => array('type' => 33, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 35, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +37 => new OptionalNode(9), +38 => new OptionalNode(31), +39 => new OptionalNode(6), +40 => new StructNode([ + "race" => array('type' => 21, 'tag' => -1), +]), +41 => new StructNode([ + "team" => array('type' => 21, 'tag' => -1), +]), +42 => new StructNode([ + "name" => array('type' => 9, 'tag' => -13), + "clanTag" => array('type' => 37, 'tag' => -12), + "clanLogo" => array('type' => 38, 'tag' => -11), + "highestLeague" => array('type' => 21, 'tag' => -10), + "combinedRaceLevels" => array('type' => 39, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 40, 'tag' => -7), + "teamPreference" => array('type' => 41, 'tag' => -6), + "testMap" => array('type' => 13, 'tag' => -5), + "testAuto" => array('type' => 13, 'tag' => -4), + "examine" => array('type' => 13, 'tag' => -3), + "customInterface" => array('type' => 13, 'tag' => -2), + "observe" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +43 => new ArrayNode( + new IntegerNode(5, 0), + 42, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +44 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -12), + "teamsTogether" => array('type' => 13, 'tag' => -11), + "advancedSharedControl" => array('type' => 13, 'tag' => -10), + "randomRaces" => array('type' => 13, 'tag' => -9), + "battleNet" => array('type' => 13, 'tag' => -8), + "amm" => array('type' => 13, 'tag' => -7), + "competitive" => array('type' => 13, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 20, 'tag' => -4), + "observers" => array('type' => 20, 'tag' => -3), + "userDifficulty" => array('type' => 20, 'tag' => -2), + "clientDebugFlags" => array('type' => 17, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +45 => new IntegerNode(4, 1), +46 => new IntegerNode(8, 1), +47 => new BitArrayNode( + new IntegerNode(6, 0) +), +48 => new BitArrayNode( + new IntegerNode(8, 0) +), +49 => new BitArrayNode( + new IntegerNode(2, 0) +), +50 => new BitArrayNode( + new IntegerNode(7, 0) +), +51 => new StructNode([ + "allowedColors" => array('type' => 47, 'tag' => -6), + "allowedRaces" => array('type' => 48, 'tag' => -5), + "allowedDifficulty" => array('type' => 47, 'tag' => -4), + "allowedControls" => array('type' => 48, 'tag' => -3), + "allowedObserveTypes" => array('type' => 49, 'tag' => -2), + "allowedAIBuilds" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 25, 'tag' => -25), + "gameOptions" => array('type' => 44, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 45, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 46, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 26, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 52, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 32, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +54 => new OptionalNode(1), +55 => new OptionalNode(2), +56 => new StructNode([ + "color" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +58 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +59 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 54, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 56, 'tag' => -10), + "racePref" => array('type' => 40, 'tag' => -9), + "difficulty" => array('type' => 3, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "workingSetSlotId" => array('type' => 21, 'tag' => -4), + "rewards" => array('type' => 57, 'tag' => -3), + "toonHandle" => array('type' => 16, 'tag' => -2), + "licenses" => array('type' => 58, 'tag' => -1), +]), +60 => new ArrayNode( + new IntegerNode(5, 0), + 59 +), +61 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 60, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 54, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +62 => new StructNode([ + "userInitialData" => array('type' => 43, 'tag' => -3), + "gameDescription" => array('type' => 53, 'tag' => -2), + "lobbyState" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +63 => new StructNode([ + "syncLobbyState" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +64 => new StructNode([ + "name" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +65 => new BlobNode(new IntegerNode(6, 0)), +66 => new StructNode([ + "name" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +67 => new StructNode([ + "name" => array('type' => 65, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +68 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 65, 'tag' => -2), + "data" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +69 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +70 => new StructNode([ + "signature" => array('type' => 69, 'tag' => -2), + "toonHandle" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +71 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -8), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -7), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -6), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -5), + "isMapToMapTransition" => array('type' => 13, 'tag' => -4), + "startingRally" => array('type' => 13, 'tag' => -3), + "debugPauseEnabled" => array('type' => 13, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +72 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +73 => new IntegerNode(16, 0), +74 => new StructNode([ + "x" => array('type' => 73, 'tag' => -2), + "y" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +75 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +76 => new StructNode([ + "fileName" => array('type' => 26, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +77 => new IntegerNode(32, -2147483648), +78 => new StructNode([ + "x" => array('type' => 77, 'tag' => -2), + "y" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "point" => array('type' => 78, 'tag' => -4), + "time" => array('type' => 77, 'tag' => -3), + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +]), +80 => new StructNode([ + "data" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +81 => new IntegerNode(20, 0), +82 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +83 => new OptionalNode(82), +84 => new NullNode(), +85 => new StructNode([ + "x" => array('type' => 81, 'tag' => -3), + "y" => array('type' => 81, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 73, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 54, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 54, 'tag' => -2), + "snapshotPoint" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +87 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 85, + 2 => 86, + 3 => 6, +]), +88 => new StructNode([ + "cmdFlags" => array('type' => 81, 'tag' => -4), + "abil" => array('type' => 83, 'tag' => -3), + "data" => array('type' => 87, 'tag' => -2), + "otherUnit" => array('type' => 39, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +89 => new IntegerNode(9, 0), +90 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +91 => new ArrayNode( + new IntegerNode(9, 0), + 89, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +92 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 90, + 2 => 91, + 3 => 91, +]), +93 => new StructNode([ + "unitLink" => array('type' => 73, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +94 => new ArrayNode( + new IntegerNode(9, 0), + 93 +), +95 => new StructNode([ + "subgroupIndex" => array('type' => 89, 'tag' => -4), + "removeMask" => array('type' => 92, 'tag' => -3), + "addSubgroups" => array('type' => 94, 'tag' => -2), + "addUnitTags" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +96 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +97 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 20, 'tag' => -2), + "mask" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +98 => new StructNode([ + "count" => array('type' => 89, 'tag' => -6), + "subgroupCount" => array('type' => 89, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 89, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +99 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +100 => new ArrayNode( + new IntegerNode(3, 0), + 77, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +101 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +102 => new StructNode([ + "chatMessage" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +103 => new IntegerNode(8, -128), +104 => new StructNode([ + "x" => array('type' => 77, 'tag' => -3), + "y" => array('type' => 77, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +105 => new StructNode([ + "beacon" => array('type' => 103, 'tag' => -9), + "ally" => array('type' => 103, 'tag' => -8), + "flags" => array('type' => 103, 'tag' => -7), + "build" => array('type' => 103, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 73, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 103, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 103, 'tag' => -2), + "targetPoint" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +106 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +107 => new StructNode([ + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +108 => new StructNode([ + "point" => array('type' => 78, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +109 => new StructNode([ + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +110 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +111 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +112 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +113 => new StructNode([ + "conversationId" => array('type' => 77, 'tag' => -2), + "replyId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +114 => new OptionalNode(16), +115 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +]), +116 => new ArrayNode( + new IntegerNode(5, 0), + 115 +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "userInfos" => array('type' => 116, 'tag' => -2), + "method" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +119 => new StructNode([ + "purchaseItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +120 => new StructNode([ + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +121 => new ChoiceNode(new IntegerNode(3), [ + 0 => 84, + 1 => 13, + 2 => 6, + 3 => 77, + 4 => 26, + 5 => 6, +]), +122 => new StructNode([ + "controlId" => array('type' => 77, 'tag' => -3), + "eventType" => array('type' => 77, 'tag' => -2), + "eventData" => array('type' => 121, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +123 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +124 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +125 => new StructNode([ + "soundHash" => array('type' => 124, 'tag' => -2), + "length" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +126 => new StructNode([ + "syncInfo" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +127 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +128 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +129 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +130 => new OptionalNode(74), +131 => new OptionalNode(73), +132 => new OptionalNode(103), +133 => new StructNode([ + "target" => array('type' => 130, 'tag' => -5), + "distance" => array('type' => 131, 'tag' => -4), + "pitch" => array('type' => 131, 'tag' => -3), + "yaw" => array('type' => 131, 'tag' => -2), + "reason" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +134 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +135 => new IntegerNode(11, 0), +136 => new StructNode([ + "x" => array('type' => 135, 'tag' => -2), + "y" => array('type' => 135, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +137 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +138 => new StructNode([ + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +139 => new StructNode([ + "achievementLink" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +140 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +141 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +142 => new StructNode([ + "planetId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +143 => new StructNode([ + "key" => array('type' => 103, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +144 => new StructNode([ + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +145 => new StructNode([ + "fulfillRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +146 => new StructNode([ + "cancelRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +147 => new StructNode([ + "researchItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +148 => new StructNode([ + "mercenaryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +149 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -2), + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +150 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +151 => new IntegerNode(19, 0), +152 => new StructNode([ + "decrementMs" => array('type' => 151, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +153 => new StructNode([ + "portraitId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +154 => new StructNode([ + "functionName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +155 => new StructNode([ + "result" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +156 => new StructNode([ + "gameMenuItemIndex" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +157 => new StructNode([ + "purchaseCategoryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +158 => new StructNode([ + "button" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "bookmarkName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +161 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -3), + "conversationLine" => array('type' => 16, 'tag' => -2), + "altConversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +162 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "conversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +163 => new StructNode([ + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +164 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +165 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +166 => new StructNode([ + "progress" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +167 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 77, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 77, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 77, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 77, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 77, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 77, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 77, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 77, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 77, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 77, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 77, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 77, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 77, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 77, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 77, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 77, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 77, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 77, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 77, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 77, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 77, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 77, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 77, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 77, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 77, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 77, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 77, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 77, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 77, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 77, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 77, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 77, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 77, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 77, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 77, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 77, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 77, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 77, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 77, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +168 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 167, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 54, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 39, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 39, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +171 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +172 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +173 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 25, 'tag' => 1), + "count" => array('type' => 77, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +174 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +175 => new ArrayNode( + new IntegerNode(10, 0), + 77, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +176 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 175, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +177 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 39, 'tag' => 2), + "slotId" => array('type' => 39, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version27950::$GAME_EVENT_MAPPING = [ + 5 => 72, + 7 => 71, + 9 => 64, + 10 => 66, + 11 => 67, + 12 => 68, + 13 => 70, + 14 => 75, + 21 => 76, + 22 => 72, + 23 => 72, + 26 => 80, + 27 => 88, + 28 => 96, + 29 => 97, + 30 => 99, + 31 => 101, + 32 => 102, + 33 => 105, + 34 => 106, + 35 => 107, + 36 => 108, + 37 => 109, + 38 => 110, + 39 => 111, + 40 => 112, + 41 => 113, + 43 => 118, + 44 => 72, + 45 => 123, + 46 => 127, + 47 => 128, + 48 => 129, + 49 => 133, + 50 => 72, + 51 => 119, + 52 => 72, + 53 => 120, + 54 => 72, + 55 => 122, + 56 => 126, + 57 => 134, + 58 => 137, + 59 => 138, + 60 => 139, + 62 => 140, + 63 => 72, + 64 => 141, + 65 => 142, + 66 => 143, + 67 => 154, + 68 => 72, + 69 => 72, + 70 => 144, + 71 => 145, + 72 => 146, + 73 => 72, + 74 => 72, + 75 => 147, + 77 => 72, + 78 => 72, + 79 => 148, + 80 => 72, + 81 => 72, + 82 => 149, + 83 => 150, + 84 => 150, + 85 => 120, + 86 => 72, + 87 => 72, + 88 => 152, + 89 => 153, + 90 => 155, + 91 => 156, + 93 => 119, + 94 => 157, + 95 => 158, + 96 => 72, + 97 => 159, + 98 => 160, + 99 => 161, + 100 => 162, + 101 => 72, + 102 => 163, +]; +Version27950::$MESSAGE_EVENT_MAPPING = [ + 0 => 164, + 1 => 165, + 2 => 166, + 3 => 72, +]; +Version27950::$TRACKER_EVENT_MAPPING = [ + 0 => 168, + 1 => 169, + 2 => 170, + 3 => 171, + 4 => 172, + 5 => 173, + 6 => 169, + 7 => 174, + 8 => 176, + 9 => 177, +]; diff --git a/src/Version/Version28272.php b/src/Version/Version28272.php new file mode 100644 index 0000000..249a6a5 --- /dev/null +++ b/src/Version/Version28272.php @@ -0,0 +1,1185 @@ +getNode(14); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(63); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(36); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version28272::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +15 => new FourCCNode(), +16 => new BlobNode(new IntegerNode(7, 0)), +17 => new IntegerNode(64, 0), +18 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 15, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 16, 'tag' => 3), + "id" => array('type' => 17, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +19 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +20 => new IntegerNode(2, 0), +21 => new OptionalNode(10), +22 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 18, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 19, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 20, 'tag' => 7), + "result" => array('type' => 20, 'tag' => 8), + "workingSetSlotId" => array('type' => 21, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +23 => new ArrayNode( + new IntegerNode(5, 0), + 22, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +24 => new OptionalNode(23), +25 => new BlobNode(new IntegerNode(10, 0)), +26 => new BlobNode(new IntegerNode(11, 0)), +27 => new StructNode([ + "file" => array('type' => 26, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +28 => new OptionalNode(13), +29 => new IntegerNode(64, -9223372036854775808), +30 => new BlobNode(new IntegerNode(12, 0)), +31 => new BlobNode(new IntegerNode(0, 40)), +32 => new ArrayNode( + new IntegerNode(6, 0), + 31 +), +33 => new OptionalNode(32), +34 => new ArrayNode( + new IntegerNode(6, 0), + 26 +), +35 => new OptionalNode(34), +36 => new StructNode([ + "playerList" => array('type' => 24, 'tag' => 0), + "title" => array('type' => 25, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 27, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 28, 'tag' => 16), + "timeUTC" => array('type' => 29, 'tag' => 5), + "timeLocalOffset" => array('type' => 29, 'tag' => 6), + "description" => array('type' => 30, 'tag' => 7), + "imageFilePath" => array('type' => 26, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 26, 'tag' => 9), + "cacheHandles" => array('type' => 33, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 35, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +37 => new OptionalNode(9), +38 => new OptionalNode(31), +39 => new OptionalNode(6), +40 => new StructNode([ + "race" => array('type' => 21, 'tag' => -1), +]), +41 => new StructNode([ + "team" => array('type' => 21, 'tag' => -1), +]), +42 => new StructNode([ + "name" => array('type' => 9, 'tag' => -13), + "clanTag" => array('type' => 37, 'tag' => -12), + "clanLogo" => array('type' => 38, 'tag' => -11), + "highestLeague" => array('type' => 21, 'tag' => -10), + "combinedRaceLevels" => array('type' => 39, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 40, 'tag' => -7), + "teamPreference" => array('type' => 41, 'tag' => -6), + "testMap" => array('type' => 13, 'tag' => -5), + "testAuto" => array('type' => 13, 'tag' => -4), + "examine" => array('type' => 13, 'tag' => -3), + "customInterface" => array('type' => 13, 'tag' => -2), + "observe" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +43 => new ArrayNode( + new IntegerNode(5, 0), + 42, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +44 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -12), + "teamsTogether" => array('type' => 13, 'tag' => -11), + "advancedSharedControl" => array('type' => 13, 'tag' => -10), + "randomRaces" => array('type' => 13, 'tag' => -9), + "battleNet" => array('type' => 13, 'tag' => -8), + "amm" => array('type' => 13, 'tag' => -7), + "competitive" => array('type' => 13, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 20, 'tag' => -4), + "observers" => array('type' => 20, 'tag' => -3), + "userDifficulty" => array('type' => 20, 'tag' => -2), + "clientDebugFlags" => array('type' => 17, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +45 => new IntegerNode(4, 1), +46 => new IntegerNode(8, 1), +47 => new BitArrayNode( + new IntegerNode(6, 0) +), +48 => new BitArrayNode( + new IntegerNode(8, 0) +), +49 => new BitArrayNode( + new IntegerNode(2, 0) +), +50 => new BitArrayNode( + new IntegerNode(7, 0) +), +51 => new StructNode([ + "allowedColors" => array('type' => 47, 'tag' => -6), + "allowedRaces" => array('type' => 48, 'tag' => -5), + "allowedDifficulty" => array('type' => 47, 'tag' => -4), + "allowedControls" => array('type' => 48, 'tag' => -3), + "allowedObserveTypes" => array('type' => 49, 'tag' => -2), + "allowedAIBuilds" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 25, 'tag' => -25), + "gameOptions" => array('type' => 44, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 45, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 46, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 26, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 52, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 32, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +54 => new OptionalNode(1), +55 => new OptionalNode(2), +56 => new StructNode([ + "color" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +58 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +59 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 54, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 56, 'tag' => -10), + "racePref" => array('type' => 40, 'tag' => -9), + "difficulty" => array('type' => 3, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "workingSetSlotId" => array('type' => 21, 'tag' => -4), + "rewards" => array('type' => 57, 'tag' => -3), + "toonHandle" => array('type' => 16, 'tag' => -2), + "licenses" => array('type' => 58, 'tag' => -1), +]), +60 => new ArrayNode( + new IntegerNode(5, 0), + 59 +), +61 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 60, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 54, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +62 => new StructNode([ + "userInitialData" => array('type' => 43, 'tag' => -3), + "gameDescription" => array('type' => 53, 'tag' => -2), + "lobbyState" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +63 => new StructNode([ + "syncLobbyState" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +64 => new StructNode([ + "name" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +65 => new BlobNode(new IntegerNode(6, 0)), +66 => new StructNode([ + "name" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +67 => new StructNode([ + "name" => array('type' => 65, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +68 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 65, 'tag' => -2), + "data" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +69 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +70 => new StructNode([ + "signature" => array('type' => 69, 'tag' => -2), + "toonHandle" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +71 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -8), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -7), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -6), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -5), + "isMapToMapTransition" => array('type' => 13, 'tag' => -4), + "startingRally" => array('type' => 13, 'tag' => -3), + "debugPauseEnabled" => array('type' => 13, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +72 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +73 => new IntegerNode(16, 0), +74 => new StructNode([ + "x" => array('type' => 73, 'tag' => -2), + "y" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +75 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +76 => new StructNode([ + "fileName" => array('type' => 26, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +77 => new IntegerNode(32, -2147483648), +78 => new StructNode([ + "x" => array('type' => 77, 'tag' => -2), + "y" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "point" => array('type' => 78, 'tag' => -4), + "time" => array('type' => 77, 'tag' => -3), + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +]), +80 => new StructNode([ + "data" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +81 => new IntegerNode(20, 0), +82 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +83 => new OptionalNode(82), +84 => new NullNode(), +85 => new StructNode([ + "x" => array('type' => 81, 'tag' => -3), + "y" => array('type' => 81, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 73, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 54, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 54, 'tag' => -2), + "snapshotPoint" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +87 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 85, + 2 => 86, + 3 => 6, +]), +88 => new StructNode([ + "cmdFlags" => array('type' => 81, 'tag' => -4), + "abil" => array('type' => 83, 'tag' => -3), + "data" => array('type' => 87, 'tag' => -2), + "otherUnit" => array('type' => 39, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +89 => new IntegerNode(9, 0), +90 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +91 => new ArrayNode( + new IntegerNode(9, 0), + 89, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +92 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 90, + 2 => 91, + 3 => 91, +]), +93 => new StructNode([ + "unitLink" => array('type' => 73, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +94 => new ArrayNode( + new IntegerNode(9, 0), + 93 +), +95 => new StructNode([ + "subgroupIndex" => array('type' => 89, 'tag' => -4), + "removeMask" => array('type' => 92, 'tag' => -3), + "addSubgroups" => array('type' => 94, 'tag' => -2), + "addUnitTags" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +96 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +97 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 20, 'tag' => -2), + "mask" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +98 => new StructNode([ + "count" => array('type' => 89, 'tag' => -6), + "subgroupCount" => array('type' => 89, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 89, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +99 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +100 => new ArrayNode( + new IntegerNode(3, 0), + 77, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +101 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +102 => new StructNode([ + "chatMessage" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +103 => new IntegerNode(8, -128), +104 => new StructNode([ + "x" => array('type' => 77, 'tag' => -3), + "y" => array('type' => 77, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +105 => new StructNode([ + "beacon" => array('type' => 103, 'tag' => -9), + "ally" => array('type' => 103, 'tag' => -8), + "flags" => array('type' => 103, 'tag' => -7), + "build" => array('type' => 103, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 73, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 103, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 103, 'tag' => -2), + "targetPoint" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +106 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +107 => new StructNode([ + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +108 => new StructNode([ + "point" => array('type' => 78, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +109 => new StructNode([ + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +110 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +111 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +112 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +113 => new StructNode([ + "conversationId" => array('type' => 77, 'tag' => -2), + "replyId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +114 => new OptionalNode(16), +115 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +]), +116 => new ArrayNode( + new IntegerNode(5, 0), + 115 +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "userInfos" => array('type' => 116, 'tag' => -2), + "method" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +119 => new StructNode([ + "purchaseItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +120 => new StructNode([ + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +121 => new ChoiceNode(new IntegerNode(3), [ + 0 => 84, + 1 => 13, + 2 => 6, + 3 => 77, + 4 => 26, + 5 => 6, +]), +122 => new StructNode([ + "controlId" => array('type' => 77, 'tag' => -3), + "eventType" => array('type' => 77, 'tag' => -2), + "eventData" => array('type' => 121, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +123 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +124 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +125 => new StructNode([ + "soundHash" => array('type' => 124, 'tag' => -2), + "length" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +126 => new StructNode([ + "syncInfo" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +127 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +128 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +129 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +130 => new OptionalNode(74), +131 => new OptionalNode(73), +132 => new OptionalNode(103), +133 => new StructNode([ + "target" => array('type' => 130, 'tag' => -5), + "distance" => array('type' => 131, 'tag' => -4), + "pitch" => array('type' => 131, 'tag' => -3), + "yaw" => array('type' => 131, 'tag' => -2), + "reason" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +134 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +135 => new IntegerNode(11, 0), +136 => new StructNode([ + "x" => array('type' => 135, 'tag' => -2), + "y" => array('type' => 135, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +137 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +138 => new StructNode([ + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +139 => new StructNode([ + "achievementLink" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +140 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +141 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +142 => new StructNode([ + "planetId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +143 => new StructNode([ + "key" => array('type' => 103, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +144 => new StructNode([ + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +145 => new StructNode([ + "fulfillRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +146 => new StructNode([ + "cancelRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +147 => new StructNode([ + "researchItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +148 => new StructNode([ + "mercenaryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +149 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -2), + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +150 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +151 => new IntegerNode(19, 0), +152 => new StructNode([ + "decrementMs" => array('type' => 151, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +153 => new StructNode([ + "portraitId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +154 => new StructNode([ + "functionName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +155 => new StructNode([ + "result" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +156 => new StructNode([ + "gameMenuItemIndex" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +157 => new StructNode([ + "purchaseCategoryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +158 => new StructNode([ + "button" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "bookmarkName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +161 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -3), + "conversationLine" => array('type' => 16, 'tag' => -2), + "altConversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +162 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "conversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +163 => new StructNode([ + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +164 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +165 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +166 => new StructNode([ + "progress" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +167 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 77, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 77, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 77, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 77, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 77, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 77, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 77, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 77, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 77, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 77, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 77, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 77, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 77, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 77, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 77, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 77, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 77, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 77, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 77, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 77, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 77, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 77, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 77, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 77, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 77, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 77, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 77, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 77, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 77, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 77, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 77, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 77, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 77, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 77, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 77, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 77, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 77, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 77, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 77, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +168 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 167, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 54, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 39, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 39, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +171 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +172 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +173 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 25, 'tag' => 1), + "count" => array('type' => 77, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +174 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +175 => new ArrayNode( + new IntegerNode(10, 0), + 77, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +176 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 175, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +177 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 39, 'tag' => 2), + "slotId" => array('type' => 39, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version28272::$GAME_EVENT_MAPPING = [ + 5 => 72, + 7 => 71, + 9 => 64, + 10 => 66, + 11 => 67, + 12 => 68, + 13 => 70, + 14 => 75, + 21 => 76, + 22 => 72, + 23 => 72, + 26 => 80, + 27 => 88, + 28 => 96, + 29 => 97, + 30 => 99, + 31 => 101, + 32 => 102, + 33 => 105, + 34 => 106, + 35 => 107, + 36 => 108, + 37 => 109, + 38 => 110, + 39 => 111, + 40 => 112, + 41 => 113, + 43 => 118, + 44 => 72, + 45 => 123, + 46 => 127, + 47 => 128, + 48 => 129, + 49 => 133, + 50 => 72, + 51 => 119, + 52 => 72, + 53 => 120, + 54 => 72, + 55 => 122, + 56 => 126, + 57 => 134, + 58 => 137, + 59 => 138, + 60 => 139, + 62 => 140, + 63 => 72, + 64 => 141, + 65 => 142, + 66 => 143, + 67 => 154, + 68 => 72, + 69 => 72, + 70 => 144, + 71 => 145, + 72 => 146, + 73 => 72, + 74 => 72, + 75 => 147, + 77 => 72, + 78 => 72, + 79 => 148, + 80 => 72, + 81 => 72, + 82 => 149, + 83 => 150, + 84 => 150, + 85 => 120, + 86 => 72, + 87 => 72, + 88 => 152, + 89 => 153, + 90 => 155, + 91 => 156, + 93 => 119, + 94 => 157, + 95 => 158, + 96 => 72, + 97 => 159, + 98 => 160, + 99 => 161, + 100 => 162, + 101 => 72, + 102 => 163, +]; +Version28272::$MESSAGE_EVENT_MAPPING = [ + 0 => 164, + 1 => 165, + 2 => 166, + 3 => 72, +]; +Version28272::$TRACKER_EVENT_MAPPING = [ + 0 => 168, + 1 => 169, + 2 => 170, + 3 => 171, + 4 => 172, + 5 => 173, + 6 => 169, + 7 => 174, + 8 => 176, + 9 => 177, +]; diff --git a/src/Version/Version28667.php b/src/Version/Version28667.php new file mode 100644 index 0000000..a889f5c --- /dev/null +++ b/src/Version/Version28667.php @@ -0,0 +1,1185 @@ +getNode(14); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(63); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(36); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version28667::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +15 => new FourCCNode(), +16 => new BlobNode(new IntegerNode(7, 0)), +17 => new IntegerNode(64, 0), +18 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 15, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 16, 'tag' => 3), + "id" => array('type' => 17, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +19 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +20 => new IntegerNode(2, 0), +21 => new OptionalNode(10), +22 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 18, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 19, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 20, 'tag' => 7), + "result" => array('type' => 20, 'tag' => 8), + "workingSetSlotId" => array('type' => 21, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +23 => new ArrayNode( + new IntegerNode(5, 0), + 22, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +24 => new OptionalNode(23), +25 => new BlobNode(new IntegerNode(10, 0)), +26 => new BlobNode(new IntegerNode(11, 0)), +27 => new StructNode([ + "file" => array('type' => 26, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +28 => new OptionalNode(13), +29 => new IntegerNode(64, -9223372036854775808), +30 => new BlobNode(new IntegerNode(12, 0)), +31 => new BlobNode(new IntegerNode(0, 40)), +32 => new ArrayNode( + new IntegerNode(6, 0), + 31 +), +33 => new OptionalNode(32), +34 => new ArrayNode( + new IntegerNode(6, 0), + 26 +), +35 => new OptionalNode(34), +36 => new StructNode([ + "playerList" => array('type' => 24, 'tag' => 0), + "title" => array('type' => 25, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 27, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 28, 'tag' => 16), + "timeUTC" => array('type' => 29, 'tag' => 5), + "timeLocalOffset" => array('type' => 29, 'tag' => 6), + "description" => array('type' => 30, 'tag' => 7), + "imageFilePath" => array('type' => 26, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 26, 'tag' => 9), + "cacheHandles" => array('type' => 33, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 35, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +37 => new OptionalNode(9), +38 => new OptionalNode(31), +39 => new OptionalNode(6), +40 => new StructNode([ + "race" => array('type' => 21, 'tag' => -1), +]), +41 => new StructNode([ + "team" => array('type' => 21, 'tag' => -1), +]), +42 => new StructNode([ + "name" => array('type' => 9, 'tag' => -13), + "clanTag" => array('type' => 37, 'tag' => -12), + "clanLogo" => array('type' => 38, 'tag' => -11), + "highestLeague" => array('type' => 21, 'tag' => -10), + "combinedRaceLevels" => array('type' => 39, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 40, 'tag' => -7), + "teamPreference" => array('type' => 41, 'tag' => -6), + "testMap" => array('type' => 13, 'tag' => -5), + "testAuto" => array('type' => 13, 'tag' => -4), + "examine" => array('type' => 13, 'tag' => -3), + "customInterface" => array('type' => 13, 'tag' => -2), + "observe" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +43 => new ArrayNode( + new IntegerNode(5, 0), + 42, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +44 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -12), + "teamsTogether" => array('type' => 13, 'tag' => -11), + "advancedSharedControl" => array('type' => 13, 'tag' => -10), + "randomRaces" => array('type' => 13, 'tag' => -9), + "battleNet" => array('type' => 13, 'tag' => -8), + "amm" => array('type' => 13, 'tag' => -7), + "competitive" => array('type' => 13, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 20, 'tag' => -4), + "observers" => array('type' => 20, 'tag' => -3), + "userDifficulty" => array('type' => 20, 'tag' => -2), + "clientDebugFlags" => array('type' => 17, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +45 => new IntegerNode(4, 1), +46 => new IntegerNode(8, 1), +47 => new BitArrayNode( + new IntegerNode(6, 0) +), +48 => new BitArrayNode( + new IntegerNode(8, 0) +), +49 => new BitArrayNode( + new IntegerNode(2, 0) +), +50 => new BitArrayNode( + new IntegerNode(7, 0) +), +51 => new StructNode([ + "allowedColors" => array('type' => 47, 'tag' => -6), + "allowedRaces" => array('type' => 48, 'tag' => -5), + "allowedDifficulty" => array('type' => 47, 'tag' => -4), + "allowedControls" => array('type' => 48, 'tag' => -3), + "allowedObserveTypes" => array('type' => 49, 'tag' => -2), + "allowedAIBuilds" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 25, 'tag' => -25), + "gameOptions" => array('type' => 44, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 45, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 46, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 26, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 52, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 32, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +54 => new OptionalNode(1), +55 => new OptionalNode(2), +56 => new StructNode([ + "color" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +58 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +59 => new StructNode([ + "control" => array('type' => 10, 'tag' => -13), + "userId" => array('type' => 54, 'tag' => -12), + "teamId" => array('type' => 1, 'tag' => -11), + "colorPref" => array('type' => 56, 'tag' => -10), + "racePref" => array('type' => 40, 'tag' => -9), + "difficulty" => array('type' => 3, 'tag' => -8), + "aiBuild" => array('type' => 0, 'tag' => -7), + "handicap" => array('type' => 0, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "workingSetSlotId" => array('type' => 21, 'tag' => -4), + "rewards" => array('type' => 57, 'tag' => -3), + "toonHandle" => array('type' => 16, 'tag' => -2), + "licenses" => array('type' => 58, 'tag' => -1), +]), +60 => new ArrayNode( + new IntegerNode(5, 0), + 59 +), +61 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 60, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 54, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +62 => new StructNode([ + "userInitialData" => array('type' => 43, 'tag' => -3), + "gameDescription" => array('type' => 53, 'tag' => -2), + "lobbyState" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +63 => new StructNode([ + "syncLobbyState" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +64 => new StructNode([ + "name" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +65 => new BlobNode(new IntegerNode(6, 0)), +66 => new StructNode([ + "name" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +67 => new StructNode([ + "name" => array('type' => 65, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +68 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 65, 'tag' => -2), + "data" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +69 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +70 => new StructNode([ + "signature" => array('type' => 69, 'tag' => -2), + "toonHandle" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +71 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -8), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -7), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -6), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -5), + "isMapToMapTransition" => array('type' => 13, 'tag' => -4), + "startingRally" => array('type' => 13, 'tag' => -3), + "debugPauseEnabled" => array('type' => 13, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +72 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +73 => new IntegerNode(16, 0), +74 => new StructNode([ + "x" => array('type' => 73, 'tag' => -2), + "y" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +75 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +76 => new StructNode([ + "fileName" => array('type' => 26, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +77 => new IntegerNode(32, -2147483648), +78 => new StructNode([ + "x" => array('type' => 77, 'tag' => -2), + "y" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "point" => array('type' => 78, 'tag' => -4), + "time" => array('type' => 77, 'tag' => -3), + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +]), +80 => new StructNode([ + "data" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +81 => new IntegerNode(20, 0), +82 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +83 => new OptionalNode(82), +84 => new NullNode(), +85 => new StructNode([ + "x" => array('type' => 81, 'tag' => -3), + "y" => array('type' => 81, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 73, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 54, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 54, 'tag' => -2), + "snapshotPoint" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +87 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 85, + 2 => 86, + 3 => 6, +]), +88 => new StructNode([ + "cmdFlags" => array('type' => 81, 'tag' => -4), + "abil" => array('type' => 83, 'tag' => -3), + "data" => array('type' => 87, 'tag' => -2), + "otherUnit" => array('type' => 39, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +89 => new IntegerNode(9, 0), +90 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +91 => new ArrayNode( + new IntegerNode(9, 0), + 89, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +92 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 90, + 2 => 91, + 3 => 91, +]), +93 => new StructNode([ + "unitLink" => array('type' => 73, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +94 => new ArrayNode( + new IntegerNode(9, 0), + 93 +), +95 => new StructNode([ + "subgroupIndex" => array('type' => 89, 'tag' => -4), + "removeMask" => array('type' => 92, 'tag' => -3), + "addSubgroups" => array('type' => 94, 'tag' => -2), + "addUnitTags" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +96 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +97 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 20, 'tag' => -2), + "mask" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +98 => new StructNode([ + "count" => array('type' => 89, 'tag' => -6), + "subgroupCount" => array('type' => 89, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 89, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +99 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +100 => new ArrayNode( + new IntegerNode(3, 0), + 77, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +101 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +102 => new StructNode([ + "chatMessage" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +103 => new IntegerNode(8, -128), +104 => new StructNode([ + "x" => array('type' => 77, 'tag' => -3), + "y" => array('type' => 77, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +105 => new StructNode([ + "beacon" => array('type' => 103, 'tag' => -9), + "ally" => array('type' => 103, 'tag' => -8), + "flags" => array('type' => 103, 'tag' => -7), + "build" => array('type' => 103, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 73, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 103, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 103, 'tag' => -2), + "targetPoint" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +106 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +107 => new StructNode([ + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +108 => new StructNode([ + "point" => array('type' => 78, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +109 => new StructNode([ + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +110 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +111 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +112 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +113 => new StructNode([ + "conversationId" => array('type' => 77, 'tag' => -2), + "replyId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +114 => new OptionalNode(16), +115 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +]), +116 => new ArrayNode( + new IntegerNode(5, 0), + 115 +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "userInfos" => array('type' => 116, 'tag' => -2), + "method" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +119 => new StructNode([ + "purchaseItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +120 => new StructNode([ + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +121 => new ChoiceNode(new IntegerNode(3), [ + 0 => 84, + 1 => 13, + 2 => 6, + 3 => 77, + 4 => 26, + 5 => 6, +]), +122 => new StructNode([ + "controlId" => array('type' => 77, 'tag' => -3), + "eventType" => array('type' => 77, 'tag' => -2), + "eventData" => array('type' => 121, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +123 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +124 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +125 => new StructNode([ + "soundHash" => array('type' => 124, 'tag' => -2), + "length" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +126 => new StructNode([ + "syncInfo" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +127 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +128 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +129 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +130 => new OptionalNode(74), +131 => new OptionalNode(73), +132 => new OptionalNode(103), +133 => new StructNode([ + "target" => array('type' => 130, 'tag' => -5), + "distance" => array('type' => 131, 'tag' => -4), + "pitch" => array('type' => 131, 'tag' => -3), + "yaw" => array('type' => 131, 'tag' => -2), + "reason" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +134 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +135 => new IntegerNode(11, 0), +136 => new StructNode([ + "x" => array('type' => 135, 'tag' => -2), + "y" => array('type' => 135, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +137 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +138 => new StructNode([ + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +139 => new StructNode([ + "achievementLink" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +140 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +141 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +142 => new StructNode([ + "planetId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +143 => new StructNode([ + "key" => array('type' => 103, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +144 => new StructNode([ + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +145 => new StructNode([ + "fulfillRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +146 => new StructNode([ + "cancelRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +147 => new StructNode([ + "researchItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +148 => new StructNode([ + "mercenaryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +149 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -2), + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +150 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +151 => new IntegerNode(19, 0), +152 => new StructNode([ + "decrementMs" => array('type' => 151, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +153 => new StructNode([ + "portraitId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +154 => new StructNode([ + "functionName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +155 => new StructNode([ + "result" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +156 => new StructNode([ + "gameMenuItemIndex" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +157 => new StructNode([ + "purchaseCategoryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +158 => new StructNode([ + "button" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "bookmarkName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +161 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -3), + "conversationLine" => array('type' => 16, 'tag' => -2), + "altConversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +162 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "conversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +163 => new StructNode([ + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +164 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +165 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +166 => new StructNode([ + "progress" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +167 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 77, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 77, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 77, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 77, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 77, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 77, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 77, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 77, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 77, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 77, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 77, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 77, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 77, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 77, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 77, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 77, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 77, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 77, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 77, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 77, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 77, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 77, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 77, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 77, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 77, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 77, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 77, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 77, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 77, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 77, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 77, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 77, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 77, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 77, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 77, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 77, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 77, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 77, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 77, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +168 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 167, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 54, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 39, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 39, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +171 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +172 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +173 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 25, 'tag' => 1), + "count" => array('type' => 77, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +174 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +175 => new ArrayNode( + new IntegerNode(10, 0), + 77, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +176 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 175, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +177 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 39, 'tag' => 2), + "slotId" => array('type' => 39, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version28667::$GAME_EVENT_MAPPING = [ + 5 => 72, + 7 => 71, + 9 => 64, + 10 => 66, + 11 => 67, + 12 => 68, + 13 => 70, + 14 => 75, + 21 => 76, + 22 => 72, + 23 => 72, + 26 => 80, + 27 => 88, + 28 => 96, + 29 => 97, + 30 => 99, + 31 => 101, + 32 => 102, + 33 => 105, + 34 => 106, + 35 => 107, + 36 => 108, + 37 => 109, + 38 => 110, + 39 => 111, + 40 => 112, + 41 => 113, + 43 => 118, + 44 => 72, + 45 => 123, + 46 => 127, + 47 => 128, + 48 => 129, + 49 => 133, + 50 => 72, + 51 => 119, + 52 => 72, + 53 => 120, + 54 => 72, + 55 => 122, + 56 => 126, + 57 => 134, + 58 => 137, + 59 => 138, + 60 => 139, + 62 => 140, + 63 => 72, + 64 => 141, + 65 => 142, + 66 => 143, + 67 => 154, + 68 => 72, + 69 => 72, + 70 => 144, + 71 => 145, + 72 => 146, + 73 => 72, + 74 => 72, + 75 => 147, + 77 => 72, + 78 => 72, + 79 => 148, + 80 => 72, + 81 => 72, + 82 => 149, + 83 => 150, + 84 => 150, + 85 => 120, + 86 => 72, + 87 => 72, + 88 => 152, + 89 => 153, + 90 => 155, + 91 => 156, + 93 => 119, + 94 => 157, + 95 => 158, + 96 => 72, + 97 => 159, + 98 => 160, + 99 => 161, + 100 => 162, + 101 => 72, + 102 => 163, +]; +Version28667::$MESSAGE_EVENT_MAPPING = [ + 0 => 164, + 1 => 165, + 2 => 166, + 3 => 72, +]; +Version28667::$TRACKER_EVENT_MAPPING = [ + 0 => 168, + 1 => 169, + 2 => 170, + 3 => 171, + 4 => 172, + 5 => 173, + 6 => 169, + 7 => 174, + 8 => 176, + 9 => 177, +]; diff --git a/src/Version/Version32283.php b/src/Version/Version32283.php new file mode 100644 index 0000000..2604eb0 --- /dev/null +++ b/src/Version/Version32283.php @@ -0,0 +1,1186 @@ +getNode(14); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(63); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(36); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version32283::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +15 => new FourCCNode(), +16 => new BlobNode(new IntegerNode(7, 0)), +17 => new IntegerNode(64, 0), +18 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 15, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 16, 'tag' => 3), + "id" => array('type' => 17, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +19 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +20 => new IntegerNode(2, 0), +21 => new OptionalNode(10), +22 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 18, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 19, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 20, 'tag' => 7), + "result" => array('type' => 20, 'tag' => 8), + "workingSetSlotId" => array('type' => 21, 'tag' => 9), +], + 'Rogiel\StarReplay\Entity\Player' +), +23 => new ArrayNode( + new IntegerNode(5, 0), + 22, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +24 => new OptionalNode(23), +25 => new BlobNode(new IntegerNode(10, 0)), +26 => new BlobNode(new IntegerNode(11, 0)), +27 => new StructNode([ + "file" => array('type' => 26, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +28 => new OptionalNode(13), +29 => new IntegerNode(64, -9223372036854775808), +30 => new BlobNode(new IntegerNode(12, 0)), +31 => new BlobNode(new IntegerNode(0, 40)), +32 => new ArrayNode( + new IntegerNode(6, 0), + 31 +), +33 => new OptionalNode(32), +34 => new ArrayNode( + new IntegerNode(6, 0), + 26 +), +35 => new OptionalNode(34), +36 => new StructNode([ + "playerList" => array('type' => 24, 'tag' => 0), + "title" => array('type' => 25, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 27, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 28, 'tag' => 16), + "timeUTC" => array('type' => 29, 'tag' => 5), + "timeLocalOffset" => array('type' => 29, 'tag' => 6), + "description" => array('type' => 30, 'tag' => 7), + "imageFilePath" => array('type' => 26, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 26, 'tag' => 9), + "cacheHandles" => array('type' => 33, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 35, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +37 => new OptionalNode(9), +38 => new OptionalNode(31), +39 => new OptionalNode(6), +40 => new StructNode([ + "race" => array('type' => 21, 'tag' => -1), +]), +41 => new StructNode([ + "team" => array('type' => 21, 'tag' => -1), +]), +42 => new StructNode([ + "name" => array('type' => 9, 'tag' => -13), + "clanTag" => array('type' => 37, 'tag' => -12), + "clanLogo" => array('type' => 38, 'tag' => -11), + "highestLeague" => array('type' => 21, 'tag' => -10), + "combinedRaceLevels" => array('type' => 39, 'tag' => -9), + "randomSeed" => array('type' => 6, 'tag' => -8), + "racePreference" => array('type' => 40, 'tag' => -7), + "teamPreference" => array('type' => 41, 'tag' => -6), + "testMap" => array('type' => 13, 'tag' => -5), + "testAuto" => array('type' => 13, 'tag' => -4), + "examine" => array('type' => 13, 'tag' => -3), + "customInterface" => array('type' => 13, 'tag' => -2), + "observe" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +43 => new ArrayNode( + new IntegerNode(5, 0), + 42, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +44 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -12), + "teamsTogether" => array('type' => 13, 'tag' => -11), + "advancedSharedControl" => array('type' => 13, 'tag' => -10), + "randomRaces" => array('type' => 13, 'tag' => -9), + "battleNet" => array('type' => 13, 'tag' => -8), + "amm" => array('type' => 13, 'tag' => -7), + "competitive" => array('type' => 13, 'tag' => -6), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 20, 'tag' => -4), + "observers" => array('type' => 20, 'tag' => -3), + "userDifficulty" => array('type' => 20, 'tag' => -2), + "clientDebugFlags" => array('type' => 17, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +45 => new IntegerNode(4, 1), +46 => new IntegerNode(8, 1), +47 => new BitArrayNode( + new IntegerNode(6, 0) +), +48 => new BitArrayNode( + new IntegerNode(8, 0) +), +49 => new BitArrayNode( + new IntegerNode(2, 0) +), +50 => new BitArrayNode( + new IntegerNode(7, 0) +), +51 => new StructNode([ + "allowedColors" => array('type' => 47, 'tag' => -6), + "allowedRaces" => array('type' => 48, 'tag' => -5), + "allowedDifficulty" => array('type' => 47, 'tag' => -4), + "allowedControls" => array('type' => 48, 'tag' => -3), + "allowedObserveTypes" => array('type' => 49, 'tag' => -2), + "allowedAIBuilds" => array('type' => 50, 'tag' => -1), +]), +52 => new ArrayNode( + new IntegerNode(5, 0), + 51 +), +53 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 25, 'tag' => -25), + "gameOptions" => array('type' => 44, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 45, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 46, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 26, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 52, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 32, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +54 => new OptionalNode(1), +55 => new OptionalNode(2), +56 => new StructNode([ + "color" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(6, 0), + 6 +), +58 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +59 => new StructNode([ + "control" => array('type' => 10, 'tag' => -14), + "userId" => array('type' => 54, 'tag' => -13), + "teamId" => array('type' => 1, 'tag' => -12), + "colorPref" => array('type' => 56, 'tag' => -11), + "racePref" => array('type' => 40, 'tag' => -10), + "difficulty" => array('type' => 3, 'tag' => -9), + "aiBuild" => array('type' => 0, 'tag' => -8), + "handicap" => array('type' => 0, 'tag' => -7), + "observe" => array('type' => 20, 'tag' => -6), + "logoIndex" => array('type' => 6, 'tag' => -5), + "workingSetSlotId" => array('type' => 21, 'tag' => -4), + "rewards" => array('type' => 57, 'tag' => -3), + "toonHandle" => array('type' => 16, 'tag' => -2), + "licenses" => array('type' => 58, 'tag' => -1), +]), +60 => new ArrayNode( + new IntegerNode(5, 0), + 59 +), +61 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 60, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 54, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +62 => new StructNode([ + "userInitialData" => array('type' => 43, 'tag' => -3), + "gameDescription" => array('type' => 53, 'tag' => -2), + "lobbyState" => array('type' => 61, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +63 => new StructNode([ + "syncLobbyState" => array('type' => 62, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +64 => new StructNode([ + "name" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +65 => new BlobNode(new IntegerNode(6, 0)), +66 => new StructNode([ + "name" => array('type' => 65, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +67 => new StructNode([ + "name" => array('type' => 65, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +68 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 65, 'tag' => -2), + "data" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +69 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +70 => new StructNode([ + "signature" => array('type' => 69, 'tag' => -2), + "toonHandle" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +71 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -8), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -7), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -6), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -5), + "isMapToMapTransition" => array('type' => 13, 'tag' => -4), + "startingRally" => array('type' => 13, 'tag' => -3), + "debugPauseEnabled" => array('type' => 13, 'tag' => -2), + "baseBuildNum" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +72 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +73 => new IntegerNode(16, 0), +74 => new StructNode([ + "x" => array('type' => 73, 'tag' => -2), + "y" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +75 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 74, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +76 => new StructNode([ + "fileName" => array('type' => 26, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +77 => new IntegerNode(32, -2147483648), +78 => new StructNode([ + "x" => array('type' => 77, 'tag' => -2), + "y" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +79 => new StructNode([ + "point" => array('type' => 78, 'tag' => -4), + "time" => array('type' => 77, 'tag' => -3), + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +]), +80 => new StructNode([ + "data" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +81 => new IntegerNode(20, 0), +82 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +83 => new OptionalNode(82), +84 => new NullNode(), +85 => new StructNode([ + "x" => array('type' => 81, 'tag' => -3), + "y" => array('type' => 81, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "targetUnitFlags" => array('type' => 10, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 73, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 54, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 54, 'tag' => -2), + "snapshotPoint" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +87 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 85, + 2 => 86, + 3 => 6, +]), +88 => new StructNode([ + "cmdFlags" => array('type' => 81, 'tag' => -4), + "abil" => array('type' => 83, 'tag' => -3), + "data" => array('type' => 87, 'tag' => -2), + "otherUnit" => array('type' => 39, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +89 => new IntegerNode(9, 0), +90 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +91 => new ArrayNode( + new IntegerNode(9, 0), + 89, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +92 => new ChoiceNode(new IntegerNode(2), [ + 0 => 84, + 1 => 90, + 2 => 91, + 3 => 91, +]), +93 => new StructNode([ + "unitLink" => array('type' => 73, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +94 => new ArrayNode( + new IntegerNode(9, 0), + 93 +), +95 => new StructNode([ + "subgroupIndex" => array('type' => 89, 'tag' => -4), + "removeMask" => array('type' => 92, 'tag' => -3), + "addSubgroups" => array('type' => 94, 'tag' => -2), + "addUnitTags" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +96 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 95, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +97 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 20, 'tag' => -2), + "mask" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +98 => new StructNode([ + "count" => array('type' => 89, 'tag' => -6), + "subgroupCount" => array('type' => 89, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 89, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +99 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +100 => new ArrayNode( + new IntegerNode(3, 0), + 77, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +101 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +102 => new StructNode([ + "chatMessage" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +103 => new IntegerNode(8, -128), +104 => new StructNode([ + "x" => array('type' => 77, 'tag' => -3), + "y" => array('type' => 77, 'tag' => -2), + "z" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +105 => new StructNode([ + "beacon" => array('type' => 103, 'tag' => -9), + "ally" => array('type' => 103, 'tag' => -8), + "flags" => array('type' => 103, 'tag' => -7), + "build" => array('type' => 103, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 73, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 103, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 103, 'tag' => -2), + "targetPoint" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +106 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +107 => new StructNode([ + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +108 => new StructNode([ + "point" => array('type' => 78, 'tag' => -3), + "unit" => array('type' => 6, 'tag' => -2), + "pingedMinimap" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +109 => new StructNode([ + "verb" => array('type' => 25, 'tag' => -2), + "arguments" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +110 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +111 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +112 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +113 => new StructNode([ + "conversationId" => array('type' => 77, 'tag' => -2), + "replyId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +114 => new OptionalNode(16), +115 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +]), +116 => new ArrayNode( + new IntegerNode(5, 0), + 115 +), +117 => new IntegerNode(1, 0), +118 => new StructNode([ + "userInfos" => array('type' => 116, 'tag' => -2), + "method" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +119 => new StructNode([ + "purchaseItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +120 => new StructNode([ + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +121 => new ChoiceNode(new IntegerNode(3), [ + 0 => 84, + 1 => 13, + 2 => 6, + 3 => 77, + 4 => 26, + 5 => 6, +]), +122 => new StructNode([ + "controlId" => array('type' => 77, 'tag' => -3), + "eventType" => array('type' => 77, 'tag' => -2), + "eventData" => array('type' => 121, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +123 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +124 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +125 => new StructNode([ + "soundHash" => array('type' => 124, 'tag' => -2), + "length" => array('type' => 124, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +126 => new StructNode([ + "syncInfo" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +127 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +128 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +129 => new StructNode([ + "transmissionId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +130 => new OptionalNode(74), +131 => new OptionalNode(73), +132 => new OptionalNode(103), +133 => new StructNode([ + "target" => array('type' => 130, 'tag' => -5), + "distance" => array('type' => 131, 'tag' => -4), + "pitch" => array('type' => 131, 'tag' => -3), + "yaw" => array('type' => 131, 'tag' => -2), + "reason" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +134 => new StructNode([ + "skipType" => array('type' => 117, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +135 => new IntegerNode(11, 0), +136 => new StructNode([ + "x" => array('type' => 135, 'tag' => -2), + "y" => array('type' => 135, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +137 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +138 => new StructNode([ + "posUI" => array('type' => 136, 'tag' => -3), + "posWorld" => array('type' => 85, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +139 => new StructNode([ + "achievementLink" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +140 => new StructNode([ + "abilLink" => array('type' => 73, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +141 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +142 => new StructNode([ + "planetId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +143 => new StructNode([ + "key" => array('type' => 103, 'tag' => -2), + "flags" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +144 => new StructNode([ + "resources" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +145 => new StructNode([ + "fulfillRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +146 => new StructNode([ + "cancelRequestId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +147 => new StructNode([ + "researchItemId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +148 => new StructNode([ + "mercenaryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +149 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -2), + "difficultyLevel" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +150 => new StructNode([ + "battleReportId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +151 => new IntegerNode(19, 0), +152 => new StructNode([ + "decrementMs" => array('type' => 151, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +153 => new StructNode([ + "portraitId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +154 => new StructNode([ + "functionName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +155 => new StructNode([ + "result" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +156 => new StructNode([ + "gameMenuItemIndex" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +157 => new StructNode([ + "purchaseCategoryId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +158 => new StructNode([ + "button" => array('type' => 73, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +159 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "bookmarkName" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +160 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +161 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -3), + "conversationLine" => array('type' => 16, 'tag' => -2), + "altConversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +162 => new StructNode([ + "cutsceneId" => array('type' => 77, 'tag' => -2), + "conversationLine" => array('type' => 16, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +163 => new StructNode([ + "observe" => array('type' => 20, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 114, 'tag' => -3), + "clanTag" => array('type' => 37, 'tag' => -2), + "clanLogo" => array('type' => 38, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +164 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 26, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +165 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +166 => new StructNode([ + "progress" => array('type' => 77, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +167 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 77, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 77, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 77, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 77, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 77, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 77, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 77, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 77, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 77, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 77, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 77, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 77, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 77, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 77, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 77, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 77, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 77, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 77, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 77, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 77, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 77, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 77, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 77, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 77, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 77, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 77, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 77, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 77, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 77, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 77, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 77, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 77, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 77, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 77, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 77, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 77, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 77, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 77, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 77, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +168 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 167, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +169 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +170 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 54, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 39, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 39, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +171 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +172 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 25, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +173 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 25, 'tag' => 1), + "count" => array('type' => 77, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +174 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +175 => new ArrayNode( + new IntegerNode(10, 0), + 77, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +176 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 175, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +177 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 39, 'tag' => 2), + "slotId" => array('type' => 39, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version32283::$GAME_EVENT_MAPPING = [ + 5 => 72, + 7 => 71, + 9 => 64, + 10 => 66, + 11 => 67, + 12 => 68, + 13 => 70, + 14 => 75, + 21 => 76, + 22 => 72, + 23 => 72, + 26 => 80, + 27 => 88, + 28 => 96, + 29 => 97, + 30 => 99, + 31 => 101, + 32 => 102, + 33 => 105, + 34 => 106, + 35 => 107, + 36 => 108, + 37 => 109, + 38 => 110, + 39 => 111, + 40 => 112, + 41 => 113, + 43 => 118, + 44 => 72, + 45 => 123, + 46 => 127, + 47 => 128, + 48 => 129, + 49 => 133, + 50 => 72, + 51 => 119, + 52 => 72, + 53 => 120, + 54 => 72, + 55 => 122, + 56 => 126, + 57 => 134, + 58 => 137, + 59 => 138, + 60 => 139, + 62 => 140, + 63 => 72, + 64 => 141, + 65 => 142, + 66 => 143, + 67 => 154, + 68 => 72, + 69 => 72, + 70 => 144, + 71 => 145, + 72 => 146, + 73 => 72, + 74 => 72, + 75 => 147, + 77 => 72, + 78 => 72, + 79 => 148, + 80 => 72, + 81 => 72, + 82 => 149, + 83 => 150, + 84 => 150, + 85 => 120, + 86 => 72, + 87 => 72, + 88 => 152, + 89 => 153, + 90 => 155, + 91 => 156, + 93 => 119, + 94 => 157, + 95 => 158, + 96 => 72, + 97 => 159, + 98 => 160, + 99 => 161, + 100 => 162, + 101 => 72, + 102 => 163, +]; +Version32283::$MESSAGE_EVENT_MAPPING = [ + 0 => 164, + 1 => 165, + 2 => 166, + 3 => 72, +]; +Version32283::$TRACKER_EVENT_MAPPING = [ + 0 => 168, + 1 => 169, + 2 => 170, + 3 => 171, + 4 => 172, + 5 => 173, + 6 => 169, + 7 => 174, + 8 => 176, + 9 => 177, +]; diff --git a/src/Version/Version34784.php b/src/Version/Version34784.php new file mode 100644 index 0000000..9703ac0 --- /dev/null +++ b/src/Version/Version34784.php @@ -0,0 +1,1323 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(69); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version34784::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -16), + "teamsTogether" => array('type' => 13, 'tag' => -15), + "advancedSharedControl" => array('type' => 13, 'tag' => -14), + "randomRaces" => array('type' => 13, 'tag' => -13), + "battleNet" => array('type' => 13, 'tag' => -12), + "amm" => array('type' => 13, 'tag' => -11), + "ranked" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new BitArrayNode( + new IntegerNode(7, 0) +), +56 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(5, 0), + 56 +), +58 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 57, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +59 => new OptionalNode(1), +60 => new OptionalNode(2), +61 => new StructNode([ + "color" => array('type' => 60, 'tag' => -1), +]), +62 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +63 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +64 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +65 => new StructNode([ + "control" => array('type' => 10, 'tag' => -20), + "userId" => array('type' => 59, 'tag' => -19), + "teamId" => array('type' => 1, 'tag' => -18), + "colorPref" => array('type' => 61, 'tag' => -17), + "racePref" => array('type' => 44, 'tag' => -16), + "difficulty" => array('type' => 3, 'tag' => -15), + "aiBuild" => array('type' => 0, 'tag' => -14), + "handicap" => array('type' => 0, 'tag' => -13), + "observe" => array('type' => 24, 'tag' => -12), + "logoIndex" => array('type' => 6, 'tag' => -11), + "hero" => array('type' => 46, 'tag' => -10), + "skin" => array('type' => 46, 'tag' => -9), + "mount" => array('type' => 46, 'tag' => -8), + "artifacts" => array('type' => 62, 'tag' => -7), + "workingSetSlotId" => array('type' => 25, 'tag' => -6), + "rewards" => array('type' => 63, 'tag' => -5), + "toonHandle" => array('type' => 20, 'tag' => -4), + "licenses" => array('type' => 64, 'tag' => -3), + "tandemLeaderUserId" => array('type' => 59, 'tag' => -2), + "commander" => array('type' => 46, 'tag' => -1), +]), +66 => new ArrayNode( + new IntegerNode(5, 0), + 65 +), +67 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 66, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 59, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +68 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 58, 'tag' => -2), + "lobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +69 => new StructNode([ + "syncLobbyState" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +70 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +71 => new BlobNode(new IntegerNode(6, 0)), +72 => new StructNode([ + "name" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +73 => new StructNode([ + "name" => array('type' => 71, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +74 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 71, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +75 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +76 => new StructNode([ + "signature" => array('type' => 75, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +77 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -15), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -14), + "testCheatsEnabled" => array('type' => 13, 'tag' => -13), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -12), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -11), + "isMapToMapTransition" => array('type' => 13, 'tag' => -10), + "startingRally" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +78 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +79 => new IntegerNode(16, 0), +80 => new StructNode([ + "x" => array('type' => 79, 'tag' => -2), + "y" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +81 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +82 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +83 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +84 => new IntegerNode(32, -2147483648), +85 => new StructNode([ + "x" => array('type' => 84, 'tag' => -2), + "y" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "time" => array('type' => 84, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +87 => new StructNode([ + "data" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +88 => new IntegerNode(23, 0), +89 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +90 => new OptionalNode(89), +91 => new NullNode(), +92 => new IntegerNode(20, 0), +93 => new StructNode([ + "x" => array('type' => 92, 'tag' => -3), + "y" => array('type' => 92, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +94 => new StructNode([ + "targetUnitFlags" => array('type' => 79, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 79, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 59, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 59, 'tag' => -2), + "snapshotPoint" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +95 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 93, + 2 => 94, + 3 => 6, +]), +96 => new IntegerNode(32, 1), +97 => new StructNode([ + "cmdFlags" => array('type' => 88, 'tag' => -6), + "abil" => array('type' => 90, 'tag' => -5), + "data" => array('type' => 95, 'tag' => -4), + "sequence" => array('type' => 96, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +98 => new IntegerNode(9, 0), +99 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +100 => new ArrayNode( + new IntegerNode(9, 0), + 98, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +101 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 99, + 2 => 100, + 3 => 100, +]), +102 => new StructNode([ + "unitLink" => array('type' => 79, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +103 => new ArrayNode( + new IntegerNode(9, 0), + 102 +), +104 => new StructNode([ + "subgroupIndex" => array('type' => 98, 'tag' => -4), + "removeMask" => array('type' => 101, 'tag' => -3), + "addSubgroups" => array('type' => 103, 'tag' => -2), + "addUnitTags" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +105 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +106 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 24, 'tag' => -2), + "mask" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +107 => new StructNode([ + "count" => array('type' => 98, 'tag' => -6), + "subgroupCount" => array('type' => 98, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 98, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +108 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +109 => new ArrayNode( + new IntegerNode(3, 0), + 84, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +110 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +111 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +112 => new IntegerNode(8, -128), +113 => new StructNode([ + "x" => array('type' => 84, 'tag' => -3), + "y" => array('type' => 84, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new StructNode([ + "beacon" => array('type' => 112, 'tag' => -9), + "ally" => array('type' => 112, 'tag' => -8), + "flags" => array('type' => 112, 'tag' => -7), + "build" => array('type' => 112, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 79, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 112, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 112, 'tag' => -2), + "targetPoint" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +115 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "delta" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +117 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "unit" => array('type' => 6, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +118 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +119 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +121 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +122 => new StructNode([ + "conversationId" => array('type' => 84, 'tag' => -2), + "replyId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +123 => new OptionalNode(20), +124 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 123, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +125 => new ArrayNode( + new IntegerNode(5, 0), + 124 +), +126 => new IntegerNode(1, 0), +127 => new StructNode([ + "userInfos" => array('type' => 125, 'tag' => -2), + "method" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +128 => new StructNode([ + "purchaseItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +129 => new StructNode([ + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +130 => new ChoiceNode(new IntegerNode(3), [ + 0 => 91, + 1 => 13, + 2 => 6, + 3 => 84, + 4 => 30, + 5 => 6, +]), +131 => new StructNode([ + "controlId" => array('type' => 84, 'tag' => -3), + "eventType" => array('type' => 84, 'tag' => -2), + "eventData" => array('type' => 130, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +132 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +133 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +134 => new StructNode([ + "soundHash" => array('type' => 133, 'tag' => -2), + "length" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +135 => new StructNode([ + "syncInfo" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +137 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +138 => new StructNode([ + "animWaitQueryId" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +139 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +141 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +142 => new OptionalNode(80), +143 => new OptionalNode(79), +144 => new OptionalNode(112), +145 => new StructNode([ + "target" => array('type' => 142, 'tag' => -6), + "distance" => array('type' => 143, 'tag' => -5), + "pitch" => array('type' => 143, 'tag' => -4), + "yaw" => array('type' => 143, 'tag' => -3), + "reason" => array('type' => 144, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +146 => new StructNode([ + "skipType" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +147 => new IntegerNode(11, 0), +148 => new StructNode([ + "x" => array('type' => 147, 'tag' => -2), + "y" => array('type' => 147, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +149 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +150 => new StructNode([ + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +151 => new StructNode([ + "achievementLink" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +152 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +153 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +154 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +155 => new StructNode([ + "planetId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +156 => new StructNode([ + "key" => array('type' => 112, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +157 => new StructNode([ + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +158 => new StructNode([ + "fulfillRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +159 => new StructNode([ + "cancelRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -2), + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new StructNode([ + "purchaseCategoryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +171 => new StructNode([ + "button" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +172 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +173 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +176 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +177 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 123, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +178 => new OptionalNode(96), +179 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 178, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +180 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +181 => new StructNode([ + "target" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +182 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 79, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +183 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +184 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +185 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +186 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +187 => new StructNode([ + "progress" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +188 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +189 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 84, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 84, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 84, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 84, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 84, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 84, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 84, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 84, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 84, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 84, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 84, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 84, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 84, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 84, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 84, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 84, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 84, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 84, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 84, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 84, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 84, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 84, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 84, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 84, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 84, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 84, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 84, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 84, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 84, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 84, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 84, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 84, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 84, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 84, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 84, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 84, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 84, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 84, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 84, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +190 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 189, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +191 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +192 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 59, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +195 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 84, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +197 => new ArrayNode( + new IntegerNode(10, 0), + 84, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +198 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 197, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +199 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version34784::$GAME_EVENT_MAPPING = [ + 5 => 78, + 7 => 77, + 9 => 70, + 10 => 72, + 11 => 73, + 12 => 74, + 13 => 76, + 14 => 81, + 21 => 82, + 22 => 78, + 23 => 78, + 25 => 83, + 26 => 87, + 27 => 97, + 28 => 105, + 29 => 106, + 30 => 108, + 31 => 110, + 32 => 111, + 33 => 114, + 34 => 115, + 35 => 116, + 36 => 117, + 37 => 118, + 38 => 119, + 39 => 120, + 40 => 121, + 41 => 122, + 43 => 127, + 44 => 78, + 45 => 132, + 46 => 139, + 47 => 140, + 48 => 141, + 49 => 145, + 50 => 78, + 51 => 128, + 52 => 78, + 53 => 129, + 54 => 78, + 55 => 131, + 56 => 135, + 57 => 146, + 58 => 149, + 59 => 150, + 60 => 151, + 61 => 152, + 62 => 153, + 63 => 78, + 64 => 154, + 65 => 155, + 66 => 156, + 67 => 167, + 68 => 78, + 69 => 78, + 70 => 157, + 71 => 158, + 72 => 159, + 73 => 78, + 74 => 78, + 75 => 160, + 77 => 78, + 78 => 78, + 79 => 161, + 80 => 78, + 81 => 78, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 129, + 86 => 78, + 87 => 78, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 93 => 128, + 94 => 170, + 95 => 171, + 96 => 78, + 97 => 172, + 98 => 173, + 99 => 174, + 100 => 175, + 101 => 176, + 102 => 177, + 103 => 179, + 104 => 180, + 105 => 181, + 106 => 136, + 107 => 137, + 108 => 138, + 109 => 182, + 110 => 183, + 111 => 78, + 112 => 184, +]; +Version34784::$MESSAGE_EVENT_MAPPING = [ + 0 => 185, + 1 => 186, + 2 => 187, + 3 => 78, + 4 => 188, +]; +Version34784::$TRACKER_EVENT_MAPPING = [ + 0 => 190, + 1 => 191, + 2 => 192, + 3 => 193, + 4 => 194, + 5 => 195, + 6 => 191, + 7 => 196, + 8 => 198, + 9 => 199, +]; diff --git a/src/Version/Version34835.php b/src/Version/Version34835.php new file mode 100644 index 0000000..c3b0004 --- /dev/null +++ b/src/Version/Version34835.php @@ -0,0 +1,1323 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(69); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version34835::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -16), + "teamsTogether" => array('type' => 13, 'tag' => -15), + "advancedSharedControl" => array('type' => 13, 'tag' => -14), + "randomRaces" => array('type' => 13, 'tag' => -13), + "battleNet" => array('type' => 13, 'tag' => -12), + "amm" => array('type' => 13, 'tag' => -11), + "ranked" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new BitArrayNode( + new IntegerNode(7, 0) +), +56 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(5, 0), + 56 +), +58 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 57, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +59 => new OptionalNode(1), +60 => new OptionalNode(2), +61 => new StructNode([ + "color" => array('type' => 60, 'tag' => -1), +]), +62 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +63 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +64 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +65 => new StructNode([ + "control" => array('type' => 10, 'tag' => -20), + "userId" => array('type' => 59, 'tag' => -19), + "teamId" => array('type' => 1, 'tag' => -18), + "colorPref" => array('type' => 61, 'tag' => -17), + "racePref" => array('type' => 44, 'tag' => -16), + "difficulty" => array('type' => 3, 'tag' => -15), + "aiBuild" => array('type' => 0, 'tag' => -14), + "handicap" => array('type' => 0, 'tag' => -13), + "observe" => array('type' => 24, 'tag' => -12), + "logoIndex" => array('type' => 6, 'tag' => -11), + "hero" => array('type' => 46, 'tag' => -10), + "skin" => array('type' => 46, 'tag' => -9), + "mount" => array('type' => 46, 'tag' => -8), + "artifacts" => array('type' => 62, 'tag' => -7), + "workingSetSlotId" => array('type' => 25, 'tag' => -6), + "rewards" => array('type' => 63, 'tag' => -5), + "toonHandle" => array('type' => 20, 'tag' => -4), + "licenses" => array('type' => 64, 'tag' => -3), + "tandemLeaderUserId" => array('type' => 59, 'tag' => -2), + "commander" => array('type' => 46, 'tag' => -1), +]), +66 => new ArrayNode( + new IntegerNode(5, 0), + 65 +), +67 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -10), + "maxUsers" => array('type' => 2, 'tag' => -9), + "maxObservers" => array('type' => 2, 'tag' => -8), + "slots" => array('type' => 66, 'tag' => -7), + "randomSeed" => array('type' => 6, 'tag' => -6), + "hostUserId" => array('type' => 59, 'tag' => -5), + "isSinglePlayer" => array('type' => 13, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +68 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 58, 'tag' => -2), + "lobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +69 => new StructNode([ + "syncLobbyState" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +70 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +71 => new BlobNode(new IntegerNode(6, 0)), +72 => new StructNode([ + "name" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +73 => new StructNode([ + "name" => array('type' => 71, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +74 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 71, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +75 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +76 => new StructNode([ + "signature" => array('type' => 75, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +77 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -15), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -14), + "testCheatsEnabled" => array('type' => 13, 'tag' => -13), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -12), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -11), + "isMapToMapTransition" => array('type' => 13, 'tag' => -10), + "startingRally" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +78 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +79 => new IntegerNode(16, 0), +80 => new StructNode([ + "x" => array('type' => 79, 'tag' => -2), + "y" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +81 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +82 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +83 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +84 => new IntegerNode(32, -2147483648), +85 => new StructNode([ + "x" => array('type' => 84, 'tag' => -2), + "y" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "time" => array('type' => 84, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +87 => new StructNode([ + "data" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +88 => new IntegerNode(23, 0), +89 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +90 => new OptionalNode(89), +91 => new NullNode(), +92 => new IntegerNode(20, 0), +93 => new StructNode([ + "x" => array('type' => 92, 'tag' => -3), + "y" => array('type' => 92, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +94 => new StructNode([ + "targetUnitFlags" => array('type' => 79, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 79, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 59, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 59, 'tag' => -2), + "snapshotPoint" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +95 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 93, + 2 => 94, + 3 => 6, +]), +96 => new IntegerNode(32, 1), +97 => new StructNode([ + "cmdFlags" => array('type' => 88, 'tag' => -6), + "abil" => array('type' => 90, 'tag' => -5), + "data" => array('type' => 95, 'tag' => -4), + "sequence" => array('type' => 96, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +98 => new IntegerNode(9, 0), +99 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +100 => new ArrayNode( + new IntegerNode(9, 0), + 98, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +101 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 99, + 2 => 100, + 3 => 100, +]), +102 => new StructNode([ + "unitLink" => array('type' => 79, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +103 => new ArrayNode( + new IntegerNode(9, 0), + 102 +), +104 => new StructNode([ + "subgroupIndex" => array('type' => 98, 'tag' => -4), + "removeMask" => array('type' => 101, 'tag' => -3), + "addSubgroups" => array('type' => 103, 'tag' => -2), + "addUnitTags" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +105 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +106 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 24, 'tag' => -2), + "mask" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +107 => new StructNode([ + "count" => array('type' => 98, 'tag' => -6), + "subgroupCount" => array('type' => 98, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 98, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +108 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +109 => new ArrayNode( + new IntegerNode(3, 0), + 84, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +110 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +111 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +112 => new IntegerNode(8, -128), +113 => new StructNode([ + "x" => array('type' => 84, 'tag' => -3), + "y" => array('type' => 84, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new StructNode([ + "beacon" => array('type' => 112, 'tag' => -9), + "ally" => array('type' => 112, 'tag' => -8), + "flags" => array('type' => 112, 'tag' => -7), + "build" => array('type' => 112, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 79, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 112, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 112, 'tag' => -2), + "targetPoint" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +115 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "delta" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +117 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "unit" => array('type' => 6, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +118 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +119 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +121 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +122 => new StructNode([ + "conversationId" => array('type' => 84, 'tag' => -2), + "replyId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +123 => new OptionalNode(20), +124 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 123, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +125 => new ArrayNode( + new IntegerNode(5, 0), + 124 +), +126 => new IntegerNode(1, 0), +127 => new StructNode([ + "userInfos" => array('type' => 125, 'tag' => -2), + "method" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +128 => new StructNode([ + "purchaseItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +129 => new StructNode([ + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +130 => new ChoiceNode(new IntegerNode(3), [ + 0 => 91, + 1 => 13, + 2 => 6, + 3 => 84, + 4 => 30, + 5 => 6, +]), +131 => new StructNode([ + "controlId" => array('type' => 84, 'tag' => -3), + "eventType" => array('type' => 84, 'tag' => -2), + "eventData" => array('type' => 130, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +132 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +133 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +134 => new StructNode([ + "soundHash" => array('type' => 133, 'tag' => -2), + "length" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +135 => new StructNode([ + "syncInfo" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +137 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +138 => new StructNode([ + "animWaitQueryId" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +139 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +141 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +142 => new OptionalNode(80), +143 => new OptionalNode(79), +144 => new OptionalNode(112), +145 => new StructNode([ + "target" => array('type' => 142, 'tag' => -6), + "distance" => array('type' => 143, 'tag' => -5), + "pitch" => array('type' => 143, 'tag' => -4), + "yaw" => array('type' => 143, 'tag' => -3), + "reason" => array('type' => 144, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +146 => new StructNode([ + "skipType" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +147 => new IntegerNode(11, 0), +148 => new StructNode([ + "x" => array('type' => 147, 'tag' => -2), + "y" => array('type' => 147, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +149 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +150 => new StructNode([ + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +151 => new StructNode([ + "achievementLink" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +152 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +153 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +154 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +155 => new StructNode([ + "planetId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +156 => new StructNode([ + "key" => array('type' => 112, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +157 => new StructNode([ + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +158 => new StructNode([ + "fulfillRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +159 => new StructNode([ + "cancelRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -2), + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new StructNode([ + "purchaseCategoryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +171 => new StructNode([ + "button" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +172 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +173 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +176 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +177 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 123, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +178 => new OptionalNode(96), +179 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 178, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +180 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +181 => new StructNode([ + "target" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +182 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 79, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +183 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +184 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +185 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +186 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +187 => new StructNode([ + "progress" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +188 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +189 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 84, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 84, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 84, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 84, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 84, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 84, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 84, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 84, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 84, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 84, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 84, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 84, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 84, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 84, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 84, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 84, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 84, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 84, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 84, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 84, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 84, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 84, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 84, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 84, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 84, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 84, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 84, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 84, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 84, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 84, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 84, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 84, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 84, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 84, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 84, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 84, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 84, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 84, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 84, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +190 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 189, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +191 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +192 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 59, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +195 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 84, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +197 => new ArrayNode( + new IntegerNode(10, 0), + 84, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +198 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 197, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +199 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version34835::$GAME_EVENT_MAPPING = [ + 5 => 78, + 7 => 77, + 9 => 70, + 10 => 72, + 11 => 73, + 12 => 74, + 13 => 76, + 14 => 81, + 21 => 82, + 22 => 78, + 23 => 78, + 25 => 83, + 26 => 87, + 27 => 97, + 28 => 105, + 29 => 106, + 30 => 108, + 31 => 110, + 32 => 111, + 33 => 114, + 34 => 115, + 35 => 116, + 36 => 117, + 37 => 118, + 38 => 119, + 39 => 120, + 40 => 121, + 41 => 122, + 43 => 127, + 44 => 78, + 45 => 132, + 46 => 139, + 47 => 140, + 48 => 141, + 49 => 145, + 50 => 78, + 51 => 128, + 52 => 78, + 53 => 129, + 54 => 78, + 55 => 131, + 56 => 135, + 57 => 146, + 58 => 149, + 59 => 150, + 60 => 151, + 61 => 152, + 62 => 153, + 63 => 78, + 64 => 154, + 65 => 155, + 66 => 156, + 67 => 167, + 68 => 78, + 69 => 78, + 70 => 157, + 71 => 158, + 72 => 159, + 73 => 78, + 74 => 78, + 75 => 160, + 77 => 78, + 78 => 78, + 79 => 161, + 80 => 78, + 81 => 78, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 129, + 86 => 78, + 87 => 78, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 93 => 128, + 94 => 170, + 95 => 171, + 96 => 78, + 97 => 172, + 98 => 173, + 99 => 174, + 100 => 175, + 101 => 176, + 102 => 177, + 103 => 179, + 104 => 180, + 105 => 181, + 106 => 136, + 107 => 137, + 108 => 138, + 109 => 182, + 110 => 183, + 111 => 78, + 112 => 184, +]; +Version34835::$MESSAGE_EVENT_MAPPING = [ + 0 => 185, + 1 => 186, + 2 => 187, + 3 => 78, + 4 => 188, +]; +Version34835::$TRACKER_EVENT_MAPPING = [ + 0 => 190, + 1 => 191, + 2 => 192, + 3 => 193, + 4 => 194, + 5 => 195, + 6 => 191, + 7 => 196, + 8 => 198, + 9 => 199, +]; diff --git a/src/Version/Version36442.php b/src/Version/Version36442.php new file mode 100644 index 0000000..c7752cc --- /dev/null +++ b/src/Version/Version36442.php @@ -0,0 +1,1325 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(69); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version36442::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -16), + "teamsTogether" => array('type' => 13, 'tag' => -15), + "advancedSharedControl" => array('type' => 13, 'tag' => -14), + "randomRaces" => array('type' => 13, 'tag' => -13), + "battleNet" => array('type' => 13, 'tag' => -12), + "amm" => array('type' => 13, 'tag' => -11), + "ranked" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new BitArrayNode( + new IntegerNode(7, 0) +), +56 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(5, 0), + 56 +), +58 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 57, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +59 => new OptionalNode(1), +60 => new OptionalNode(2), +61 => new StructNode([ + "color" => array('type' => 60, 'tag' => -1), +]), +62 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +63 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +64 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +65 => new StructNode([ + "control" => array('type' => 10, 'tag' => -21), + "userId" => array('type' => 59, 'tag' => -20), + "teamId" => array('type' => 1, 'tag' => -19), + "colorPref" => array('type' => 61, 'tag' => -18), + "racePref" => array('type' => 44, 'tag' => -17), + "difficulty" => array('type' => 3, 'tag' => -16), + "aiBuild" => array('type' => 0, 'tag' => -15), + "handicap" => array('type' => 0, 'tag' => -14), + "observe" => array('type' => 24, 'tag' => -13), + "logoIndex" => array('type' => 6, 'tag' => -12), + "hero" => array('type' => 46, 'tag' => -11), + "skin" => array('type' => 46, 'tag' => -10), + "mount" => array('type' => 46, 'tag' => -9), + "artifacts" => array('type' => 62, 'tag' => -8), + "workingSetSlotId" => array('type' => 25, 'tag' => -7), + "rewards" => array('type' => 63, 'tag' => -6), + "toonHandle" => array('type' => 20, 'tag' => -5), + "licenses" => array('type' => 64, 'tag' => -4), + "tandemLeaderUserId" => array('type' => 59, 'tag' => -3), + "commander" => array('type' => 46, 'tag' => -2), + "commanderLevel" => array('type' => 6, 'tag' => -1), +]), +66 => new ArrayNode( + new IntegerNode(5, 0), + 65 +), +67 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -11), + "maxUsers" => array('type' => 2, 'tag' => -10), + "maxObservers" => array('type' => 2, 'tag' => -9), + "slots" => array('type' => 66, 'tag' => -8), + "randomSeed" => array('type' => 6, 'tag' => -7), + "hostUserId" => array('type' => 59, 'tag' => -6), + "isSinglePlayer" => array('type' => 13, 'tag' => -5), + "pickedMapTag" => array('type' => 10, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +68 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 58, 'tag' => -2), + "lobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +69 => new StructNode([ + "syncLobbyState" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +70 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +71 => new BlobNode(new IntegerNode(6, 0)), +72 => new StructNode([ + "name" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +73 => new StructNode([ + "name" => array('type' => 71, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +74 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 71, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +75 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +76 => new StructNode([ + "signature" => array('type' => 75, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +77 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -15), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -14), + "testCheatsEnabled" => array('type' => 13, 'tag' => -13), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -12), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -11), + "isMapToMapTransition" => array('type' => 13, 'tag' => -10), + "startingRally" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +78 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +79 => new IntegerNode(16, 0), +80 => new StructNode([ + "x" => array('type' => 79, 'tag' => -2), + "y" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +81 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +82 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +83 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +84 => new IntegerNode(32, -2147483648), +85 => new StructNode([ + "x" => array('type' => 84, 'tag' => -2), + "y" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "time" => array('type' => 84, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +87 => new StructNode([ + "data" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +88 => new IntegerNode(23, 0), +89 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +90 => new OptionalNode(89), +91 => new NullNode(), +92 => new IntegerNode(20, 0), +93 => new StructNode([ + "x" => array('type' => 92, 'tag' => -3), + "y" => array('type' => 92, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +94 => new StructNode([ + "targetUnitFlags" => array('type' => 79, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 79, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 59, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 59, 'tag' => -2), + "snapshotPoint" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +95 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 93, + 2 => 94, + 3 => 6, +]), +96 => new IntegerNode(32, 1), +97 => new StructNode([ + "cmdFlags" => array('type' => 88, 'tag' => -6), + "abil" => array('type' => 90, 'tag' => -5), + "data" => array('type' => 95, 'tag' => -4), + "sequence" => array('type' => 96, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +98 => new IntegerNode(9, 0), +99 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +100 => new ArrayNode( + new IntegerNode(9, 0), + 98, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +101 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 99, + 2 => 100, + 3 => 100, +]), +102 => new StructNode([ + "unitLink" => array('type' => 79, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +103 => new ArrayNode( + new IntegerNode(9, 0), + 102 +), +104 => new StructNode([ + "subgroupIndex" => array('type' => 98, 'tag' => -4), + "removeMask" => array('type' => 101, 'tag' => -3), + "addSubgroups" => array('type' => 103, 'tag' => -2), + "addUnitTags" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +105 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +106 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 12, 'tag' => -2), + "mask" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +107 => new StructNode([ + "count" => array('type' => 98, 'tag' => -6), + "subgroupCount" => array('type' => 98, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 98, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +108 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +109 => new ArrayNode( + new IntegerNode(3, 0), + 84, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +110 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +111 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +112 => new IntegerNode(8, -128), +113 => new StructNode([ + "x" => array('type' => 84, 'tag' => -3), + "y" => array('type' => 84, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new StructNode([ + "beacon" => array('type' => 112, 'tag' => -9), + "ally" => array('type' => 112, 'tag' => -8), + "flags" => array('type' => 112, 'tag' => -7), + "build" => array('type' => 112, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 79, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 112, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 112, 'tag' => -2), + "targetPoint" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +115 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "delta" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +117 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "unit" => array('type' => 6, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +118 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +119 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +121 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +122 => new StructNode([ + "conversationId" => array('type' => 84, 'tag' => -2), + "replyId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +123 => new OptionalNode(20), +124 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 123, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +125 => new ArrayNode( + new IntegerNode(5, 0), + 124 +), +126 => new IntegerNode(1, 0), +127 => new StructNode([ + "userInfos" => array('type' => 125, 'tag' => -2), + "method" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +128 => new StructNode([ + "purchaseItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +129 => new StructNode([ + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +130 => new ChoiceNode(new IntegerNode(3), [ + 0 => 91, + 1 => 13, + 2 => 6, + 3 => 84, + 4 => 30, + 5 => 6, +]), +131 => new StructNode([ + "controlId" => array('type' => 84, 'tag' => -3), + "eventType" => array('type' => 84, 'tag' => -2), + "eventData" => array('type' => 130, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +132 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +133 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +134 => new StructNode([ + "soundHash" => array('type' => 133, 'tag' => -2), + "length" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +135 => new StructNode([ + "syncInfo" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +137 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +138 => new StructNode([ + "animWaitQueryId" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +139 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +141 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +142 => new OptionalNode(80), +143 => new OptionalNode(79), +144 => new OptionalNode(112), +145 => new StructNode([ + "target" => array('type' => 142, 'tag' => -6), + "distance" => array('type' => 143, 'tag' => -5), + "pitch" => array('type' => 143, 'tag' => -4), + "yaw" => array('type' => 143, 'tag' => -3), + "reason" => array('type' => 144, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +146 => new StructNode([ + "skipType" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +147 => new IntegerNode(11, 0), +148 => new StructNode([ + "x" => array('type' => 147, 'tag' => -2), + "y" => array('type' => 147, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +149 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +150 => new StructNode([ + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +151 => new StructNode([ + "achievementLink" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +152 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +153 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +154 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +155 => new StructNode([ + "planetId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +156 => new StructNode([ + "key" => array('type' => 112, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +157 => new StructNode([ + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +158 => new StructNode([ + "fulfillRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +159 => new StructNode([ + "cancelRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -2), + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new StructNode([ + "purchaseCategoryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +171 => new StructNode([ + "button" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +172 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +173 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +176 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +177 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 123, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +178 => new OptionalNode(96), +179 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 178, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +180 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +181 => new StructNode([ + "target" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +182 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 79, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +183 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +184 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +185 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +186 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +187 => new StructNode([ + "progress" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +188 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +189 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 84, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 84, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 84, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 84, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 84, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 84, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 84, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 84, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 84, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 84, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 84, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 84, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 84, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 84, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 84, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 84, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 84, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 84, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 84, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 84, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 84, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 84, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 84, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 84, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 84, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 84, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 84, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 84, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 84, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 84, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 84, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 84, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 84, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 84, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 84, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 84, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 84, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 84, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 84, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +190 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 189, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +191 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +192 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 59, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +195 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 84, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +197 => new ArrayNode( + new IntegerNode(10, 0), + 84, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +198 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 197, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +199 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version36442::$GAME_EVENT_MAPPING = [ + 5 => 78, + 7 => 77, + 9 => 70, + 10 => 72, + 11 => 73, + 12 => 74, + 13 => 76, + 14 => 81, + 21 => 82, + 22 => 78, + 23 => 78, + 25 => 83, + 26 => 87, + 27 => 97, + 28 => 105, + 29 => 106, + 30 => 108, + 31 => 110, + 32 => 111, + 33 => 114, + 34 => 115, + 35 => 116, + 36 => 117, + 37 => 118, + 38 => 119, + 39 => 120, + 40 => 121, + 41 => 122, + 43 => 127, + 44 => 78, + 45 => 132, + 46 => 139, + 47 => 140, + 48 => 141, + 49 => 145, + 50 => 78, + 51 => 128, + 52 => 78, + 53 => 129, + 54 => 78, + 55 => 131, + 56 => 135, + 57 => 146, + 58 => 149, + 59 => 150, + 60 => 151, + 61 => 152, + 62 => 153, + 63 => 78, + 64 => 154, + 65 => 155, + 66 => 156, + 67 => 167, + 68 => 78, + 69 => 78, + 70 => 157, + 71 => 158, + 72 => 159, + 73 => 78, + 74 => 78, + 75 => 160, + 77 => 78, + 78 => 78, + 79 => 161, + 80 => 78, + 81 => 78, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 129, + 86 => 78, + 87 => 78, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 93 => 128, + 94 => 170, + 95 => 171, + 96 => 78, + 97 => 172, + 98 => 173, + 99 => 174, + 100 => 175, + 101 => 176, + 102 => 177, + 103 => 179, + 104 => 180, + 105 => 181, + 106 => 136, + 107 => 137, + 108 => 138, + 109 => 182, + 110 => 183, + 111 => 78, + 112 => 184, +]; +Version36442::$MESSAGE_EVENT_MAPPING = [ + 0 => 185, + 1 => 186, + 2 => 187, + 3 => 78, + 4 => 188, +]; +Version36442::$TRACKER_EVENT_MAPPING = [ + 0 => 190, + 1 => 191, + 2 => 192, + 3 => 193, + 4 => 194, + 5 => 195, + 6 => 191, + 7 => 196, + 8 => 198, + 9 => 199, +]; diff --git a/src/Version/Version38215.php b/src/Version/Version38215.php new file mode 100644 index 0000000..6ce193f --- /dev/null +++ b/src/Version/Version38215.php @@ -0,0 +1,1340 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(69); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version38215::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), + "fixedFileHash" => array('type' => 17, 'tag' => 7), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -15), + "teamsTogether" => array('type' => 13, 'tag' => -14), + "advancedSharedControl" => array('type' => 13, 'tag' => -13), + "randomRaces" => array('type' => 13, 'tag' => -12), + "battleNet" => array('type' => 13, 'tag' => -11), + "amm" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new BitArrayNode( + new IntegerNode(7, 0) +), +56 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 55, 'tag' => -1), +]), +57 => new ArrayNode( + new IntegerNode(5, 0), + 56 +), +58 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 57, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 0, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +59 => new OptionalNode(1), +60 => new OptionalNode(2), +61 => new StructNode([ + "color" => array('type' => 60, 'tag' => -1), +]), +62 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +63 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +64 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +65 => new StructNode([ + "control" => array('type' => 10, 'tag' => -22), + "userId" => array('type' => 59, 'tag' => -21), + "teamId" => array('type' => 1, 'tag' => -20), + "colorPref" => array('type' => 61, 'tag' => -19), + "racePref" => array('type' => 44, 'tag' => -18), + "difficulty" => array('type' => 3, 'tag' => -17), + "aiBuild" => array('type' => 0, 'tag' => -16), + "handicap" => array('type' => 0, 'tag' => -15), + "observe" => array('type' => 24, 'tag' => -14), + "logoIndex" => array('type' => 6, 'tag' => -13), + "hero" => array('type' => 46, 'tag' => -12), + "skin" => array('type' => 46, 'tag' => -11), + "mount" => array('type' => 46, 'tag' => -10), + "artifacts" => array('type' => 62, 'tag' => -9), + "workingSetSlotId" => array('type' => 25, 'tag' => -8), + "rewards" => array('type' => 63, 'tag' => -7), + "toonHandle" => array('type' => 20, 'tag' => -6), + "licenses" => array('type' => 64, 'tag' => -5), + "tandemLeaderUserId" => array('type' => 59, 'tag' => -4), + "commander" => array('type' => 46, 'tag' => -3), + "commanderLevel" => array('type' => 6, 'tag' => -2), + "hasSilencePenalty" => array('type' => 13, 'tag' => -1), +]), +66 => new ArrayNode( + new IntegerNode(5, 0), + 65 +), +67 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -11), + "maxUsers" => array('type' => 2, 'tag' => -10), + "maxObservers" => array('type' => 2, 'tag' => -9), + "slots" => array('type' => 66, 'tag' => -8), + "randomSeed" => array('type' => 6, 'tag' => -7), + "hostUserId" => array('type' => 59, 'tag' => -6), + "isSinglePlayer" => array('type' => 13, 'tag' => -5), + "pickedMapTag" => array('type' => 10, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 0, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +68 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 58, 'tag' => -2), + "lobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +69 => new StructNode([ + "syncLobbyState" => array('type' => 68, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +70 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +71 => new BlobNode(new IntegerNode(6, 0)), +72 => new StructNode([ + "name" => array('type' => 71, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +73 => new StructNode([ + "name" => array('type' => 71, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +74 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 71, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +75 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +76 => new StructNode([ + "signature" => array('type' => 75, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +77 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -14), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -13), + "testCheatsEnabled" => array('type' => 13, 'tag' => -12), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -11), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -10), + "isMapToMapTransition" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +78 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +79 => new IntegerNode(16, 0), +80 => new StructNode([ + "x" => array('type' => 79, 'tag' => -2), + "y" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +81 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 80, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +82 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +83 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +84 => new IntegerNode(32, -2147483648), +85 => new StructNode([ + "x" => array('type' => 84, 'tag' => -2), + "y" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +86 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "time" => array('type' => 84, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +87 => new StructNode([ + "data" => array('type' => 86, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +88 => new IntegerNode(25, 0), +89 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +90 => new OptionalNode(89), +91 => new NullNode(), +92 => new IntegerNode(20, 0), +93 => new StructNode([ + "x" => array('type' => 92, 'tag' => -3), + "y" => array('type' => 92, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +94 => new StructNode([ + "targetUnitFlags" => array('type' => 79, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 79, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 59, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 59, 'tag' => -2), + "snapshotPoint" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +95 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 93, + 2 => 94, + 3 => 6, +]), +96 => new IntegerNode(32, 1), +97 => new StructNode([ + "cmdFlags" => array('type' => 88, 'tag' => -6), + "abil" => array('type' => 90, 'tag' => -5), + "data" => array('type' => 95, 'tag' => -4), + "sequence" => array('type' => 96, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +98 => new IntegerNode(9, 0), +99 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +100 => new ArrayNode( + new IntegerNode(9, 0), + 98, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +101 => new ChoiceNode(new IntegerNode(2), [ + 0 => 91, + 1 => 99, + 2 => 100, + 3 => 100, +]), +102 => new StructNode([ + "unitLink" => array('type' => 79, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 98, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +103 => new ArrayNode( + new IntegerNode(9, 0), + 102 +), +104 => new StructNode([ + "subgroupIndex" => array('type' => 98, 'tag' => -4), + "removeMask" => array('type' => 101, 'tag' => -3), + "addSubgroups" => array('type' => 103, 'tag' => -2), + "addUnitTags" => array('type' => 64, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +105 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 104, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +106 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 12, 'tag' => -2), + "mask" => array('type' => 101, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +107 => new StructNode([ + "count" => array('type' => 98, 'tag' => -6), + "subgroupCount" => array('type' => 98, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 98, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +108 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 107, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +109 => new ArrayNode( + new IntegerNode(3, 0), + 84, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +110 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +111 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +112 => new IntegerNode(8, -128), +113 => new StructNode([ + "x" => array('type' => 84, 'tag' => -3), + "y" => array('type' => 84, 'tag' => -2), + "z" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +114 => new StructNode([ + "beacon" => array('type' => 112, 'tag' => -9), + "ally" => array('type' => 112, 'tag' => -8), + "flags" => array('type' => 112, 'tag' => -7), + "build" => array('type' => 112, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 79, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 112, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 112, 'tag' => -2), + "targetPoint" => array('type' => 113, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +115 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "delta" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +117 => new StructNode([ + "point" => array('type' => 85, 'tag' => -4), + "unit" => array('type' => 6, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +118 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +119 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +121 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +122 => new StructNode([ + "conversationId" => array('type' => 84, 'tag' => -2), + "replyId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +123 => new OptionalNode(20), +124 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 123, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +125 => new ArrayNode( + new IntegerNode(5, 0), + 124 +), +126 => new IntegerNode(1, 0), +127 => new StructNode([ + "userInfos" => array('type' => 125, 'tag' => -2), + "method" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +128 => new StructNode([ + "purchaseItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +129 => new StructNode([ + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +130 => new ChoiceNode(new IntegerNode(3), [ + 0 => 91, + 1 => 13, + 2 => 6, + 3 => 84, + 4 => 30, + 5 => 6, +]), +131 => new StructNode([ + "controlId" => array('type' => 84, 'tag' => -3), + "eventType" => array('type' => 84, 'tag' => -2), + "eventData" => array('type' => 130, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +132 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +133 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +134 => new StructNode([ + "soundHash" => array('type' => 133, 'tag' => -2), + "length" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +135 => new StructNode([ + "syncInfo" => array('type' => 134, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +137 => new StructNode([ + "queryId" => array('type' => 79, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +138 => new StructNode([ + "animWaitQueryId" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +139 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +141 => new StructNode([ + "transmissionId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +142 => new OptionalNode(80), +143 => new OptionalNode(79), +144 => new OptionalNode(112), +145 => new StructNode([ + "target" => array('type' => 142, 'tag' => -6), + "distance" => array('type' => 143, 'tag' => -5), + "pitch" => array('type' => 143, 'tag' => -4), + "yaw" => array('type' => 143, 'tag' => -3), + "reason" => array('type' => 144, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +146 => new StructNode([ + "skipType" => array('type' => 126, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +147 => new IntegerNode(11, 0), +148 => new StructNode([ + "x" => array('type' => 147, 'tag' => -2), + "y" => array('type' => 147, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +149 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +150 => new StructNode([ + "posUI" => array('type' => 148, 'tag' => -3), + "posWorld" => array('type' => 93, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +151 => new StructNode([ + "achievementLink" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +152 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +153 => new StructNode([ + "abilLink" => array('type' => 79, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +154 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +155 => new StructNode([ + "planetId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +156 => new StructNode([ + "key" => array('type' => 112, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +157 => new StructNode([ + "resources" => array('type' => 109, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +158 => new StructNode([ + "fulfillRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +159 => new StructNode([ + "cancelRequestId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +160 => new StructNode([ + "error" => array('type' => 84, 'tag' => -2), + "abil" => array('type' => 90, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCommandErrorEvent' +), +161 => new StructNode([ + "researchItemId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +162 => new StructNode([ + "mercenaryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -2), + "difficultyLevel" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +164 => new StructNode([ + "battleReportId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +165 => new IntegerNode(19, 0), +166 => new StructNode([ + "decrementMs" => array('type' => 165, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +167 => new StructNode([ + "portraitId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +168 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +169 => new StructNode([ + "result" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +170 => new StructNode([ + "gameMenuItemIndex" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +171 => new IntegerNode(16, -32768), +172 => new StructNode([ + "wheelSpin" => array('type' => 171, 'tag' => -2), + "flags" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseWheelEvent' +), +173 => new StructNode([ + "purchaseCategoryId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +174 => new StructNode([ + "button" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +176 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +177 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +178 => new StructNode([ + "cutsceneId" => array('type' => 84, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +179 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +180 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 123, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 59, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +181 => new OptionalNode(96), +182 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 181, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +183 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +184 => new StructNode([ + "target" => array('type' => 94, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +185 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 79, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +186 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +187 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +188 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +189 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +190 => new StructNode([ + "progress" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +191 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +192 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 84, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 84, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 84, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 84, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 84, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 84, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 84, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 84, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 84, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 84, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 84, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 84, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 84, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 84, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 84, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 84, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 84, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 84, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 84, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 84, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 84, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 84, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 84, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 84, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 84, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 84, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 84, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 84, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 84, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 84, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 84, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 84, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 84, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 84, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 84, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 84, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 84, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 84, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 84, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +193 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 192, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +195 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 59, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +197 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +198 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 84, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +199 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +200 => new ArrayNode( + new IntegerNode(10, 0), + 84, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +201 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 200, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +202 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version38215::$GAME_EVENT_MAPPING = [ + 5 => 78, + 7 => 77, + 9 => 70, + 10 => 72, + 11 => 73, + 12 => 74, + 13 => 76, + 14 => 81, + 21 => 82, + 22 => 78, + 23 => 78, + 25 => 83, + 26 => 87, + 27 => 97, + 28 => 105, + 29 => 106, + 30 => 108, + 31 => 110, + 32 => 111, + 33 => 114, + 34 => 115, + 35 => 116, + 36 => 117, + 37 => 118, + 38 => 119, + 39 => 120, + 40 => 121, + 41 => 122, + 43 => 127, + 44 => 78, + 45 => 132, + 46 => 139, + 47 => 140, + 48 => 141, + 49 => 145, + 50 => 78, + 51 => 128, + 52 => 78, + 53 => 129, + 54 => 78, + 55 => 131, + 56 => 135, + 57 => 146, + 58 => 149, + 59 => 150, + 60 => 151, + 61 => 152, + 62 => 153, + 63 => 78, + 64 => 154, + 65 => 155, + 66 => 156, + 67 => 168, + 68 => 78, + 69 => 78, + 70 => 157, + 71 => 158, + 72 => 159, + 73 => 78, + 74 => 78, + 75 => 161, + 76 => 160, + 77 => 78, + 78 => 78, + 79 => 162, + 80 => 78, + 81 => 78, + 82 => 163, + 83 => 164, + 84 => 164, + 85 => 129, + 86 => 78, + 87 => 78, + 88 => 166, + 89 => 167, + 90 => 169, + 91 => 170, + 92 => 172, + 93 => 128, + 94 => 173, + 95 => 174, + 96 => 78, + 97 => 175, + 98 => 176, + 99 => 177, + 100 => 178, + 101 => 179, + 102 => 180, + 103 => 182, + 104 => 183, + 105 => 184, + 106 => 136, + 107 => 137, + 108 => 138, + 109 => 185, + 110 => 186, + 111 => 78, + 112 => 187, +]; +Version38215::$MESSAGE_EVENT_MAPPING = [ + 0 => 188, + 1 => 189, + 2 => 190, + 3 => 78, + 4 => 191, +]; +Version38215::$TRACKER_EVENT_MAPPING = [ + 0 => 193, + 1 => 194, + 2 => 195, + 3 => 196, + 4 => 197, + 5 => 198, + 6 => 194, + 7 => 199, + 8 => 201, + 9 => 202, +]; diff --git a/src/Version/Version38749.php b/src/Version/Version38749.php new file mode 100644 index 0000000..d7383c7 --- /dev/null +++ b/src/Version/Version38749.php @@ -0,0 +1,1341 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(68); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version38749::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), + "fixedFileHash" => array('type' => 17, 'tag' => 7), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -15), + "teamsTogether" => array('type' => 13, 'tag' => -14), + "advancedSharedControl" => array('type' => 13, 'tag' => -13), + "randomRaces" => array('type' => 13, 'tag' => -12), + "battleNet" => array('type' => 13, 'tag' => -11), + "amm" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 53, 'tag' => -1), +]), +56 => new ArrayNode( + new IntegerNode(5, 0), + 55 +), +57 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 56, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 10, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +58 => new OptionalNode(1), +59 => new OptionalNode(2), +60 => new StructNode([ + "color" => array('type' => 59, 'tag' => -1), +]), +61 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +62 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +63 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +64 => new StructNode([ + "control" => array('type' => 10, 'tag' => -22), + "userId" => array('type' => 58, 'tag' => -21), + "teamId" => array('type' => 1, 'tag' => -20), + "colorPref" => array('type' => 60, 'tag' => -19), + "racePref" => array('type' => 44, 'tag' => -18), + "difficulty" => array('type' => 3, 'tag' => -17), + "aiBuild" => array('type' => 10, 'tag' => -16), + "handicap" => array('type' => 0, 'tag' => -15), + "observe" => array('type' => 24, 'tag' => -14), + "logoIndex" => array('type' => 6, 'tag' => -13), + "hero" => array('type' => 46, 'tag' => -12), + "skin" => array('type' => 46, 'tag' => -11), + "mount" => array('type' => 46, 'tag' => -10), + "artifacts" => array('type' => 61, 'tag' => -9), + "workingSetSlotId" => array('type' => 25, 'tag' => -8), + "rewards" => array('type' => 62, 'tag' => -7), + "toonHandle" => array('type' => 20, 'tag' => -6), + "licenses" => array('type' => 63, 'tag' => -5), + "tandemLeaderUserId" => array('type' => 58, 'tag' => -4), + "commander" => array('type' => 46, 'tag' => -3), + "commanderLevel" => array('type' => 6, 'tag' => -2), + "hasSilencePenalty" => array('type' => 13, 'tag' => -1), +]), +65 => new ArrayNode( + new IntegerNode(5, 0), + 64 +), +66 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -11), + "maxUsers" => array('type' => 2, 'tag' => -10), + "maxObservers" => array('type' => 2, 'tag' => -9), + "slots" => array('type' => 65, 'tag' => -8), + "randomSeed" => array('type' => 6, 'tag' => -7), + "hostUserId" => array('type' => 58, 'tag' => -6), + "isSinglePlayer" => array('type' => 13, 'tag' => -5), + "pickedMapTag" => array('type' => 10, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +67 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 57, 'tag' => -2), + "lobbyState" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +68 => new StructNode([ + "syncLobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +69 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +70 => new BlobNode(new IntegerNode(6, 0)), +71 => new StructNode([ + "name" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +72 => new StructNode([ + "name" => array('type' => 70, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +73 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 70, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +74 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +75 => new StructNode([ + "signature" => array('type' => 74, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +76 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -14), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -13), + "testCheatsEnabled" => array('type' => 13, 'tag' => -12), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -11), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -10), + "isMapToMapTransition" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +77 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +78 => new IntegerNode(16, 0), +79 => new StructNode([ + "x" => array('type' => 78, 'tag' => -2), + "y" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +80 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +81 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +82 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +83 => new IntegerNode(32, -2147483648), +84 => new StructNode([ + "x" => array('type' => 83, 'tag' => -2), + "y" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +85 => new StructNode([ + "point" => array('type' => 84, 'tag' => -4), + "time" => array('type' => 83, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +86 => new StructNode([ + "data" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +87 => new IntegerNode(25, 0), +88 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +89 => new OptionalNode(88), +90 => new NullNode(), +91 => new IntegerNode(20, 0), +92 => new StructNode([ + "x" => array('type' => 91, 'tag' => -3), + "y" => array('type' => 91, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +93 => new StructNode([ + "targetUnitFlags" => array('type' => 78, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 78, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 58, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 58, 'tag' => -2), + "snapshotPoint" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +94 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 92, + 2 => 93, + 3 => 6, +]), +95 => new IntegerNode(32, 1), +96 => new StructNode([ + "cmdFlags" => array('type' => 87, 'tag' => -6), + "abil" => array('type' => 89, 'tag' => -5), + "data" => array('type' => 94, 'tag' => -4), + "sequence" => array('type' => 95, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +97 => new IntegerNode(9, 0), +98 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +99 => new ArrayNode( + new IntegerNode(9, 0), + 97, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +100 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 98, + 2 => 99, + 3 => 99, +]), +101 => new StructNode([ + "unitLink" => array('type' => 78, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +102 => new ArrayNode( + new IntegerNode(9, 0), + 101 +), +103 => new StructNode([ + "subgroupIndex" => array('type' => 97, 'tag' => -4), + "removeMask" => array('type' => 100, 'tag' => -3), + "addSubgroups" => array('type' => 102, 'tag' => -2), + "addUnitTags" => array('type' => 63, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +104 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +105 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 12, 'tag' => -2), + "mask" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +106 => new StructNode([ + "count" => array('type' => 97, 'tag' => -6), + "subgroupCount" => array('type' => 97, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 97, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +107 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +108 => new ArrayNode( + new IntegerNode(3, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +109 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +110 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +111 => new IntegerNode(8, -128), +112 => new StructNode([ + "x" => array('type' => 83, 'tag' => -3), + "y" => array('type' => 83, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new StructNode([ + "beacon" => array('type' => 111, 'tag' => -9), + "ally" => array('type' => 111, 'tag' => -8), + "flags" => array('type' => 111, 'tag' => -7), + "build" => array('type' => 111, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 78, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 111, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 111, 'tag' => -2), + "targetPoint" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +114 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +115 => new StructNode([ + "delta" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "point" => array('type' => 84, 'tag' => -8), + "unit" => array('type' => 6, 'tag' => -7), + "unitLink" => array('type' => 78, 'tag' => -6), + "unitControlPlayerId" => array('type' => 58, 'tag' => -5), + "unitUpkeepPlayerId" => array('type' => 58, 'tag' => -4), + "unitPosition" => array('type' => 92, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +117 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +118 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +119 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +121 => new StructNode([ + "conversationId" => array('type' => 83, 'tag' => -2), + "replyId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +122 => new OptionalNode(20), +123 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 122, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +124 => new ArrayNode( + new IntegerNode(5, 0), + 123 +), +125 => new IntegerNode(1, 0), +126 => new StructNode([ + "userInfos" => array('type' => 124, 'tag' => -2), + "method" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +127 => new StructNode([ + "purchaseItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +128 => new StructNode([ + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +129 => new ChoiceNode(new IntegerNode(3), [ + 0 => 90, + 1 => 13, + 2 => 6, + 3 => 83, + 4 => 30, + 5 => 6, +]), +130 => new StructNode([ + "controlId" => array('type' => 83, 'tag' => -3), + "eventType" => array('type' => 83, 'tag' => -2), + "eventData" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +131 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +132 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +133 => new StructNode([ + "soundHash" => array('type' => 132, 'tag' => -2), + "length" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +134 => new StructNode([ + "syncInfo" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +135 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +137 => new StructNode([ + "animWaitQueryId" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +138 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +139 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +141 => new OptionalNode(79), +142 => new OptionalNode(78), +143 => new OptionalNode(111), +144 => new StructNode([ + "target" => array('type' => 141, 'tag' => -6), + "distance" => array('type' => 142, 'tag' => -5), + "pitch" => array('type' => 142, 'tag' => -4), + "yaw" => array('type' => 142, 'tag' => -3), + "reason" => array('type' => 143, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +145 => new StructNode([ + "skipType" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +146 => new IntegerNode(11, 0), +147 => new StructNode([ + "x" => array('type' => 146, 'tag' => -2), + "y" => array('type' => 146, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +148 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +149 => new StructNode([ + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +150 => new StructNode([ + "achievementLink" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +151 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +152 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +153 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +154 => new StructNode([ + "planetId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +155 => new StructNode([ + "key" => array('type' => 111, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +156 => new StructNode([ + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +157 => new StructNode([ + "fulfillRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +158 => new StructNode([ + "cancelRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +159 => new StructNode([ + "error" => array('type' => 83, 'tag' => -2), + "abil" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCommandErrorEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -2), + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new IntegerNode(16, -32768), +171 => new StructNode([ + "wheelSpin" => array('type' => 170, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseWheelEvent' +), +172 => new StructNode([ + "purchaseCategoryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +173 => new StructNode([ + "button" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +176 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +177 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +178 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +179 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 122, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +180 => new OptionalNode(95), +181 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 180, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +182 => new StructNode([ + "target" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +183 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +184 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 78, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +185 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +186 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +187 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +188 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +189 => new StructNode([ + "progress" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +190 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +191 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 83, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 83, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 83, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 83, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 83, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 83, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 83, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 83, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 83, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 83, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 83, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 83, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 83, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 83, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 83, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 83, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 83, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 83, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 83, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 83, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 83, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 83, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 83, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 83, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 83, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 83, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 83, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 83, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 83, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 83, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 83, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 83, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 83, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 83, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 83, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 83, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 83, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 83, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 83, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +192 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 191, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 58, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +195 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +197 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 83, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +198 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +199 => new ArrayNode( + new IntegerNode(10, 0), + 83, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +200 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 199, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +201 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version38749::$GAME_EVENT_MAPPING = [ + 5 => 77, + 7 => 76, + 9 => 69, + 10 => 71, + 11 => 72, + 12 => 73, + 13 => 75, + 14 => 80, + 21 => 81, + 22 => 77, + 23 => 77, + 25 => 82, + 26 => 86, + 27 => 96, + 28 => 104, + 29 => 105, + 30 => 107, + 31 => 109, + 32 => 110, + 33 => 113, + 34 => 114, + 35 => 115, + 36 => 116, + 37 => 117, + 38 => 118, + 39 => 119, + 40 => 120, + 41 => 121, + 43 => 126, + 44 => 77, + 45 => 131, + 46 => 138, + 47 => 139, + 48 => 140, + 49 => 144, + 50 => 77, + 51 => 127, + 52 => 77, + 53 => 128, + 54 => 77, + 55 => 130, + 56 => 134, + 57 => 145, + 58 => 148, + 59 => 149, + 60 => 150, + 61 => 151, + 62 => 152, + 63 => 77, + 64 => 153, + 65 => 154, + 66 => 155, + 67 => 167, + 68 => 77, + 69 => 77, + 70 => 156, + 71 => 157, + 72 => 158, + 73 => 77, + 74 => 77, + 75 => 160, + 76 => 159, + 77 => 77, + 78 => 77, + 79 => 161, + 80 => 77, + 81 => 77, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 128, + 86 => 77, + 87 => 77, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 92 => 171, + 93 => 127, + 94 => 172, + 95 => 173, + 96 => 77, + 97 => 174, + 98 => 175, + 99 => 176, + 100 => 177, + 101 => 178, + 102 => 179, + 103 => 181, + 104 => 182, + 105 => 183, + 106 => 135, + 107 => 136, + 108 => 137, + 109 => 184, + 110 => 185, + 111 => 77, + 112 => 186, +]; +Version38749::$MESSAGE_EVENT_MAPPING = [ + 0 => 187, + 1 => 188, + 2 => 189, + 3 => 77, + 4 => 190, +]; +Version38749::$TRACKER_EVENT_MAPPING = [ + 0 => 192, + 1 => 193, + 2 => 194, + 3 => 195, + 4 => 196, + 5 => 197, + 6 => 193, + 7 => 198, + 8 => 200, + 9 => 201, +]; diff --git a/src/Version/Version38996.php b/src/Version/Version38996.php new file mode 100644 index 0000000..7fe6db1 --- /dev/null +++ b/src/Version/Version38996.php @@ -0,0 +1,1342 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(68); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version38996::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), + "fixedFileHash" => array('type' => 17, 'tag' => 7), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -15), + "teamsTogether" => array('type' => 13, 'tag' => -14), + "advancedSharedControl" => array('type' => 13, 'tag' => -13), + "randomRaces" => array('type' => 13, 'tag' => -12), + "battleNet" => array('type' => 13, 'tag' => -11), + "amm" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 53, 'tag' => -1), +]), +56 => new ArrayNode( + new IntegerNode(5, 0), + 55 +), +57 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 56, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 10, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +58 => new OptionalNode(1), +59 => new OptionalNode(2), +60 => new StructNode([ + "color" => array('type' => 59, 'tag' => -1), +]), +61 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +62 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +63 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +64 => new StructNode([ + "control" => array('type' => 10, 'tag' => -22), + "userId" => array('type' => 58, 'tag' => -21), + "teamId" => array('type' => 1, 'tag' => -20), + "colorPref" => array('type' => 60, 'tag' => -19), + "racePref" => array('type' => 44, 'tag' => -18), + "difficulty" => array('type' => 3, 'tag' => -17), + "aiBuild" => array('type' => 10, 'tag' => -16), + "handicap" => array('type' => 0, 'tag' => -15), + "observe" => array('type' => 24, 'tag' => -14), + "logoIndex" => array('type' => 6, 'tag' => -13), + "hero" => array('type' => 46, 'tag' => -12), + "skin" => array('type' => 46, 'tag' => -11), + "mount" => array('type' => 46, 'tag' => -10), + "artifacts" => array('type' => 61, 'tag' => -9), + "workingSetSlotId" => array('type' => 25, 'tag' => -8), + "rewards" => array('type' => 62, 'tag' => -7), + "toonHandle" => array('type' => 20, 'tag' => -6), + "licenses" => array('type' => 63, 'tag' => -5), + "tandemLeaderUserId" => array('type' => 58, 'tag' => -4), + "commander" => array('type' => 46, 'tag' => -3), + "commanderLevel" => array('type' => 6, 'tag' => -2), + "hasSilencePenalty" => array('type' => 13, 'tag' => -1), +]), +65 => new ArrayNode( + new IntegerNode(5, 0), + 64 +), +66 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -11), + "maxUsers" => array('type' => 2, 'tag' => -10), + "maxObservers" => array('type' => 2, 'tag' => -9), + "slots" => array('type' => 65, 'tag' => -8), + "randomSeed" => array('type' => 6, 'tag' => -7), + "hostUserId" => array('type' => 58, 'tag' => -6), + "isSinglePlayer" => array('type' => 13, 'tag' => -5), + "pickedMapTag" => array('type' => 10, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +67 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 57, 'tag' => -2), + "lobbyState" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +68 => new StructNode([ + "syncLobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +69 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +70 => new BlobNode(new IntegerNode(6, 0)), +71 => new StructNode([ + "name" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +72 => new StructNode([ + "name" => array('type' => 70, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +73 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 70, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +74 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +75 => new StructNode([ + "signature" => array('type' => 74, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +76 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -14), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -13), + "testCheatsEnabled" => array('type' => 13, 'tag' => -12), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -11), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -10), + "isMapToMapTransition" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +77 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +78 => new IntegerNode(16, 0), +79 => new StructNode([ + "x" => array('type' => 78, 'tag' => -2), + "y" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +80 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +81 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +82 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +83 => new IntegerNode(32, -2147483648), +84 => new StructNode([ + "x" => array('type' => 83, 'tag' => -2), + "y" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +85 => new StructNode([ + "point" => array('type' => 84, 'tag' => -4), + "time" => array('type' => 83, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +86 => new StructNode([ + "data" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +87 => new IntegerNode(25, 0), +88 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +89 => new OptionalNode(88), +90 => new NullNode(), +91 => new IntegerNode(20, 0), +92 => new StructNode([ + "x" => array('type' => 91, 'tag' => -3), + "y" => array('type' => 91, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +93 => new StructNode([ + "targetUnitFlags" => array('type' => 78, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 78, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 58, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 58, 'tag' => -2), + "snapshotPoint" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +94 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 92, + 2 => 93, + 3 => 6, +]), +95 => new IntegerNode(32, 1), +96 => new StructNode([ + "cmdFlags" => array('type' => 87, 'tag' => -6), + "abil" => array('type' => 89, 'tag' => -5), + "data" => array('type' => 94, 'tag' => -4), + "sequence" => array('type' => 95, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +97 => new IntegerNode(9, 0), +98 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +99 => new ArrayNode( + new IntegerNode(9, 0), + 97, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +100 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 98, + 2 => 99, + 3 => 99, +]), +101 => new StructNode([ + "unitLink" => array('type' => 78, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +102 => new ArrayNode( + new IntegerNode(9, 0), + 101 +), +103 => new StructNode([ + "subgroupIndex" => array('type' => 97, 'tag' => -4), + "removeMask" => array('type' => 100, 'tag' => -3), + "addSubgroups" => array('type' => 102, 'tag' => -2), + "addUnitTags" => array('type' => 63, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +104 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +105 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 12, 'tag' => -2), + "mask" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +106 => new StructNode([ + "count" => array('type' => 97, 'tag' => -6), + "subgroupCount" => array('type' => 97, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 97, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +107 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +108 => new ArrayNode( + new IntegerNode(3, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +109 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +110 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +111 => new IntegerNode(8, -128), +112 => new StructNode([ + "x" => array('type' => 83, 'tag' => -3), + "y" => array('type' => 83, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new StructNode([ + "beacon" => array('type' => 111, 'tag' => -9), + "ally" => array('type' => 111, 'tag' => -8), + "flags" => array('type' => 111, 'tag' => -7), + "build" => array('type' => 111, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 78, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 111, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 111, 'tag' => -2), + "targetPoint" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +114 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +115 => new StructNode([ + "delta" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "point" => array('type' => 84, 'tag' => -9), + "unit" => array('type' => 6, 'tag' => -8), + "unitLink" => array('type' => 78, 'tag' => -7), + "unitControlPlayerId" => array('type' => 58, 'tag' => -6), + "unitUpkeepPlayerId" => array('type' => 58, 'tag' => -5), + "unitPosition" => array('type' => 92, 'tag' => -4), + "unitIsUnderConstruction" => array('type' => 13, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +117 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +118 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +119 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +121 => new StructNode([ + "conversationId" => array('type' => 83, 'tag' => -2), + "replyId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +122 => new OptionalNode(20), +123 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 122, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +124 => new ArrayNode( + new IntegerNode(5, 0), + 123 +), +125 => new IntegerNode(1, 0), +126 => new StructNode([ + "userInfos" => array('type' => 124, 'tag' => -2), + "method" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +127 => new StructNode([ + "purchaseItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +128 => new StructNode([ + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +129 => new ChoiceNode(new IntegerNode(3), [ + 0 => 90, + 1 => 13, + 2 => 6, + 3 => 83, + 4 => 30, + 5 => 6, +]), +130 => new StructNode([ + "controlId" => array('type' => 83, 'tag' => -3), + "eventType" => array('type' => 83, 'tag' => -2), + "eventData" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +131 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +132 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +133 => new StructNode([ + "soundHash" => array('type' => 132, 'tag' => -2), + "length" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +134 => new StructNode([ + "syncInfo" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +135 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +137 => new StructNode([ + "animWaitQueryId" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +138 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +139 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +141 => new OptionalNode(79), +142 => new OptionalNode(78), +143 => new OptionalNode(111), +144 => new StructNode([ + "target" => array('type' => 141, 'tag' => -6), + "distance" => array('type' => 142, 'tag' => -5), + "pitch" => array('type' => 142, 'tag' => -4), + "yaw" => array('type' => 142, 'tag' => -3), + "reason" => array('type' => 143, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +145 => new StructNode([ + "skipType" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +146 => new IntegerNode(11, 0), +147 => new StructNode([ + "x" => array('type' => 146, 'tag' => -2), + "y" => array('type' => 146, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +148 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +149 => new StructNode([ + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +150 => new StructNode([ + "achievementLink" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +151 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +152 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +153 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +154 => new StructNode([ + "planetId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +155 => new StructNode([ + "key" => array('type' => 111, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +156 => new StructNode([ + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +157 => new StructNode([ + "fulfillRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +158 => new StructNode([ + "cancelRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +159 => new StructNode([ + "error" => array('type' => 83, 'tag' => -2), + "abil" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCommandErrorEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -2), + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new IntegerNode(16, -32768), +171 => new StructNode([ + "wheelSpin" => array('type' => 170, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseWheelEvent' +), +172 => new StructNode([ + "purchaseCategoryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +173 => new StructNode([ + "button" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +176 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +177 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +178 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +179 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 122, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +180 => new OptionalNode(95), +181 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 180, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +182 => new StructNode([ + "target" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +183 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +184 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 78, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +185 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +186 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +187 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +188 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +189 => new StructNode([ + "progress" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +190 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +191 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 83, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 83, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 83, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 83, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 83, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 83, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 83, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 83, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 83, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 83, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 83, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 83, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 83, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 83, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 83, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 83, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 83, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 83, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 83, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 83, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 83, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 83, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 83, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 83, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 83, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 83, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 83, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 83, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 83, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 83, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 83, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 83, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 83, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 83, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 83, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 83, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 83, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 83, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 83, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +192 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 191, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 58, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +195 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +197 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 83, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +198 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +199 => new ArrayNode( + new IntegerNode(10, 0), + 83, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +200 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 199, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +201 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version38996::$GAME_EVENT_MAPPING = [ + 5 => 77, + 7 => 76, + 9 => 69, + 10 => 71, + 11 => 72, + 12 => 73, + 13 => 75, + 14 => 80, + 21 => 81, + 22 => 77, + 23 => 77, + 25 => 82, + 26 => 86, + 27 => 96, + 28 => 104, + 29 => 105, + 30 => 107, + 31 => 109, + 32 => 110, + 33 => 113, + 34 => 114, + 35 => 115, + 36 => 116, + 37 => 117, + 38 => 118, + 39 => 119, + 40 => 120, + 41 => 121, + 43 => 126, + 44 => 77, + 45 => 131, + 46 => 138, + 47 => 139, + 48 => 140, + 49 => 144, + 50 => 77, + 51 => 127, + 52 => 77, + 53 => 128, + 54 => 77, + 55 => 130, + 56 => 134, + 57 => 145, + 58 => 148, + 59 => 149, + 60 => 150, + 61 => 151, + 62 => 152, + 63 => 77, + 64 => 153, + 65 => 154, + 66 => 155, + 67 => 167, + 68 => 77, + 69 => 77, + 70 => 156, + 71 => 157, + 72 => 158, + 73 => 77, + 74 => 77, + 75 => 160, + 76 => 159, + 77 => 77, + 78 => 77, + 79 => 161, + 80 => 77, + 81 => 77, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 128, + 86 => 77, + 87 => 77, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 92 => 171, + 93 => 127, + 94 => 172, + 95 => 173, + 96 => 77, + 97 => 174, + 98 => 175, + 99 => 176, + 100 => 177, + 101 => 178, + 102 => 179, + 103 => 181, + 104 => 182, + 105 => 183, + 106 => 135, + 107 => 136, + 108 => 137, + 109 => 184, + 110 => 185, + 111 => 77, + 112 => 186, +]; +Version38996::$MESSAGE_EVENT_MAPPING = [ + 0 => 187, + 1 => 188, + 2 => 189, + 3 => 77, + 4 => 190, +]; +Version38996::$TRACKER_EVENT_MAPPING = [ + 0 => 192, + 1 => 193, + 2 => 194, + 3 => 195, + 4 => 196, + 5 => 197, + 6 => 193, + 7 => 198, + 8 => 200, + 9 => 201, +]; diff --git a/src/Version/Version39576.php b/src/Version/Version39576.php new file mode 100644 index 0000000..f7a1ac1 --- /dev/null +++ b/src/Version/Version39576.php @@ -0,0 +1,1343 @@ +getNode(18); + } + + public function getReplayInitDataNode() { + return self::$TREE->getNode(68); + } + + public function getGameDetailsNode() { + return self::$TREE->getNode(40); + } + + public function getGameEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 0] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getMessageEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'user' => ['type' => 8], + 'event' => ['type' => 1] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + + public function getTrackerEventHeaderNode() { + return new StructNode( + [ + 'timestamp' => ['type' => 7], + 'event' => ['type' => 2] + ], + 'Rogiel\StarReplay\Metadata\Event\Header', + true + ); + } + +} + +Version39576::$TREE = new Tree([ +0 => new IntegerNode(7, 0), +1 => new IntegerNode(4, 0), +2 => new IntegerNode(5, 0), +3 => new IntegerNode(6, 0), +4 => new IntegerNode(14, 0), +5 => new IntegerNode(22, 0), +6 => new IntegerNode(32, 0), +7 => new ChoiceNode(new IntegerNode(2), [ + 0 => 3, + 1 => 4, + 2 => 5, + 3 => 6, +]), +8 => new StructNode([ + "userId" => array('type' => 2, 'tag' => -1), +]), +9 => new BlobNode(new IntegerNode(8, 0)), +10 => new IntegerNode(8, 0), +11 => new StructNode([ + "flags" => array('type' => 10, 'tag' => 0), + "major" => array('type' => 10, 'tag' => 1), + "minor" => array('type' => 10, 'tag' => 2), + "revision" => array('type' => 10, 'tag' => 3), + "build" => array('type' => 6, 'tag' => 4), + "baseBuild" => array('type' => 6, 'tag' => 5), +], + 'Rogiel\StarReplay\Metadata\Header\Version' +), +12 => new IntegerNode(3, 0), +13 => new BooleanNode(), +14 => new ArrayNode( + new IntegerNode(0, 16), + 10 +), +15 => new OptionalNode(14), +16 => new BlobNode(new IntegerNode(0, 16)), +17 => new StructNode([ + "dataDeprecated" => array('type' => 15, 'tag' => 0), + "data" => array('type' => 16, 'tag' => 1), +], + 'Rogiel\StarReplay\Metadata\Header\Hash' +), +18 => new StructNode([ + "signature" => array('type' => 9, 'tag' => 0), + "version" => array('type' => 11, 'tag' => 1), + "type" => array('type' => 12, 'tag' => 2), + "elapsedGameLoops" => array('type' => 6, 'tag' => 3), + "useScaledTime" => array('type' => 13, 'tag' => 4), + "ngdpRootKey" => array('type' => 17, 'tag' => 5), + "dataBuildNum" => array('type' => 6, 'tag' => 6), + "fixedFileHash" => array('type' => 17, 'tag' => 7), +], + 'Rogiel\StarReplay\Metadata\Header\Header' +), +19 => new FourCCNode(), +20 => new BlobNode(new IntegerNode(7, 0)), +21 => new IntegerNode(64, 0), +22 => new StructNode([ + "region" => array('type' => 10, 'tag' => 0), + "programId" => array('type' => 19, 'tag' => 1), + "realm" => array('type' => 6, 'tag' => 2), + "name" => array('type' => 20, 'tag' => 3), + "id" => array('type' => 21, 'tag' => 4), +], + 'Rogiel\StarReplay\Entity\Toon' +), +23 => new StructNode([ + "a" => array('type' => 10, 'tag' => 0), + "r" => array('type' => 10, 'tag' => 1), + "g" => array('type' => 10, 'tag' => 2), + "b" => array('type' => 10, 'tag' => 3), +], + 'Rogiel\StarReplay\Entity\Color' +), +24 => new IntegerNode(2, 0), +25 => new OptionalNode(10), +26 => new StructNode([ + "name" => array('type' => 9, 'tag' => 0), + "toon" => array('type' => 22, 'tag' => 1), + "race" => array('type' => 9, 'tag' => 2), + "color" => array('type' => 23, 'tag' => 3), + "control" => array('type' => 10, 'tag' => 4), + "teamId" => array('type' => 1, 'tag' => 5), + "handicap" => array('type' => 0, 'tag' => 6), + "observe" => array('type' => 24, 'tag' => 7), + "result" => array('type' => 24, 'tag' => 8), + "workingSetSlotId" => array('type' => 25, 'tag' => 9), + "hero" => array('type' => 9, 'tag' => 10), +], + 'Rogiel\StarReplay\Entity\Player' +), +27 => new ArrayNode( + new IntegerNode(5, 0), + 26, + 'Rogiel\StarReplay\Metadata\Match\PlayerList' + +), +28 => new OptionalNode(27), +29 => new BlobNode(new IntegerNode(10, 0)), +30 => new BlobNode(new IntegerNode(11, 0)), +31 => new StructNode([ + "file" => array('type' => 30, 'tag' => 0), +], + 'Rogiel\StarReplay\Entity\Thumbnail' +), +32 => new OptionalNode(13), +33 => new IntegerNode(64, -9223372036854775808), +34 => new BlobNode(new IntegerNode(12, 0)), +35 => new BlobNode(new IntegerNode(0, 40)), +36 => new ArrayNode( + new IntegerNode(6, 0), + 35 +), +37 => new OptionalNode(36), +38 => new ArrayNode( + new IntegerNode(6, 0), + 30 +), +39 => new OptionalNode(38), +40 => new StructNode([ + "playerList" => array('type' => 28, 'tag' => 0), + "title" => array('type' => 29, 'tag' => 1), + "difficulty" => array('type' => 9, 'tag' => 2), + "thumbnail" => array('type' => 31, 'tag' => 3), + "isBlizzardMap" => array('type' => 13, 'tag' => 4), + "restartAsTransitionMap" => array('type' => 32, 'tag' => 16), + "timeUTC" => array('type' => 33, 'tag' => 5), + "timeLocalOffset" => array('type' => 33, 'tag' => 6), + "description" => array('type' => 34, 'tag' => 7), + "imageFilePath" => array('type' => 30, 'tag' => 8), + "campaignIndex" => array('type' => 10, 'tag' => 15), + "mapFileName" => array('type' => 30, 'tag' => 9), + "cacheHandles" => array('type' => 37, 'tag' => 10), + "miniSave" => array('type' => 13, 'tag' => 11), + "gameSpeed" => array('type' => 12, 'tag' => 12), + "defaultDifficulty" => array('type' => 3, 'tag' => 13), + "modPaths" => array('type' => 39, 'tag' => 14), +], + 'Rogiel\StarReplay\Metadata\Match\MatchInformation' +), +41 => new OptionalNode(9), +42 => new OptionalNode(35), +43 => new OptionalNode(6), +44 => new StructNode([ + "race" => array('type' => 25, 'tag' => -1), +]), +45 => new StructNode([ + "team" => array('type' => 25, 'tag' => -1), +]), +46 => new BlobNode(new IntegerNode(9, 0)), +47 => new StructNode([ + "name" => array('type' => 9, 'tag' => -18), + "clanTag" => array('type' => 41, 'tag' => -17), + "clanLogo" => array('type' => 42, 'tag' => -16), + "highestLeague" => array('type' => 25, 'tag' => -15), + "combinedRaceLevels" => array('type' => 43, 'tag' => -14), + "randomSeed" => array('type' => 6, 'tag' => -13), + "racePreference" => array('type' => 44, 'tag' => -12), + "teamPreference" => array('type' => 45, 'tag' => -11), + "testMap" => array('type' => 13, 'tag' => -10), + "testAuto" => array('type' => 13, 'tag' => -9), + "examine" => array('type' => 13, 'tag' => -8), + "customInterface" => array('type' => 13, 'tag' => -7), + "testType" => array('type' => 6, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "hero" => array('type' => 46, 'tag' => -4), + "skin" => array('type' => 46, 'tag' => -3), + "mount" => array('type' => 46, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\UserInitialData' +), +48 => new ArrayNode( + new IntegerNode(5, 0), + 47, + 'Rogiel\StarReplay\Metadata\Init\UserInitialDataCollection' + +), +49 => new StructNode([ + "lockTeams" => array('type' => 13, 'tag' => -15), + "teamsTogether" => array('type' => 13, 'tag' => -14), + "advancedSharedControl" => array('type' => 13, 'tag' => -13), + "randomRaces" => array('type' => 13, 'tag' => -12), + "battleNet" => array('type' => 13, 'tag' => -11), + "amm" => array('type' => 13, 'tag' => -10), + "competitive" => array('type' => 13, 'tag' => -9), + "practice" => array('type' => 13, 'tag' => -8), + "cooperative" => array('type' => 13, 'tag' => -7), + "noVictoryOrDefeat" => array('type' => 13, 'tag' => -6), + "heroDuplicatesAllowed" => array('type' => 13, 'tag' => -5), + "fog" => array('type' => 24, 'tag' => -4), + "observers" => array('type' => 24, 'tag' => -3), + "userDifficulty" => array('type' => 24, 'tag' => -2), + "clientDebugFlags" => array('type' => 21, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameOptions' +), +50 => new IntegerNode(4, 1), +51 => new IntegerNode(8, 1), +52 => new BitArrayNode( + new IntegerNode(6, 0) +), +53 => new BitArrayNode( + new IntegerNode(8, 0) +), +54 => new BitArrayNode( + new IntegerNode(2, 0) +), +55 => new StructNode([ + "allowedColors" => array('type' => 52, 'tag' => -6), + "allowedRaces" => array('type' => 53, 'tag' => -5), + "allowedDifficulty" => array('type' => 52, 'tag' => -4), + "allowedControls" => array('type' => 53, 'tag' => -3), + "allowedObserveTypes" => array('type' => 54, 'tag' => -2), + "allowedAIBuilds" => array('type' => 53, 'tag' => -1), +]), +56 => new ArrayNode( + new IntegerNode(5, 0), + 55 +), +57 => new StructNode([ + "randomValue" => array('type' => 6, 'tag' => -26), + "gameCacheName" => array('type' => 29, 'tag' => -25), + "gameOptions" => array('type' => 49, 'tag' => -24), + "gameSpeed" => array('type' => 12, 'tag' => -23), + "gameType" => array('type' => 12, 'tag' => -22), + "maxUsers" => array('type' => 2, 'tag' => -21), + "maxObservers" => array('type' => 2, 'tag' => -20), + "maxPlayers" => array('type' => 2, 'tag' => -19), + "maxTeams" => array('type' => 50, 'tag' => -18), + "maxColors" => array('type' => 3, 'tag' => -17), + "maxRaces" => array('type' => 51, 'tag' => -16), + "maxControls" => array('type' => 10, 'tag' => -15), + "mapSizeX" => array('type' => 10, 'tag' => -14), + "mapSizeY" => array('type' => 10, 'tag' => -13), + "mapFileSyncChecksum" => array('type' => 6, 'tag' => -12), + "mapFileName" => array('type' => 30, 'tag' => -11), + "mapAuthorName" => array('type' => 9, 'tag' => -10), + "modFileSyncChecksum" => array('type' => 6, 'tag' => -9), + "slotDescriptions" => array('type' => 56, 'tag' => -8), + "defaultDifficulty" => array('type' => 3, 'tag' => -7), + "defaultAIBuild" => array('type' => 10, 'tag' => -6), + "cacheHandles" => array('type' => 36, 'tag' => -5), + "hasExtensionMod" => array('type' => 13, 'tag' => -4), + "isBlizzardMap" => array('type' => 13, 'tag' => -3), + "isPremadeFFA" => array('type' => 13, 'tag' => -2), + "isCoopMode" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\GameDescription' +), +58 => new OptionalNode(1), +59 => new OptionalNode(2), +60 => new StructNode([ + "color" => array('type' => 59, 'tag' => -1), +]), +61 => new ArrayNode( + new IntegerNode(4, 0), + 46 +), +62 => new ArrayNode( + new IntegerNode(17, 0), + 6 +), +63 => new ArrayNode( + new IntegerNode(9, 0), + 6 +), +64 => new StructNode([ + "control" => array('type' => 10, 'tag' => -23), + "userId" => array('type' => 58, 'tag' => -22), + "teamId" => array('type' => 1, 'tag' => -21), + "colorPref" => array('type' => 60, 'tag' => -20), + "racePref" => array('type' => 44, 'tag' => -19), + "difficulty" => array('type' => 3, 'tag' => -18), + "aiBuild" => array('type' => 10, 'tag' => -17), + "handicap" => array('type' => 0, 'tag' => -16), + "observe" => array('type' => 24, 'tag' => -15), + "logoIndex" => array('type' => 6, 'tag' => -14), + "hero" => array('type' => 46, 'tag' => -13), + "skin" => array('type' => 46, 'tag' => -12), + "mount" => array('type' => 46, 'tag' => -11), + "artifacts" => array('type' => 61, 'tag' => -10), + "workingSetSlotId" => array('type' => 25, 'tag' => -9), + "rewards" => array('type' => 62, 'tag' => -8), + "toonHandle" => array('type' => 20, 'tag' => -7), + "licenses" => array('type' => 63, 'tag' => -6), + "tandemLeaderId" => array('type' => 58, 'tag' => -5), + "commander" => array('type' => 46, 'tag' => -4), + "commanderLevel" => array('type' => 6, 'tag' => -3), + "hasSilencePenalty" => array('type' => 13, 'tag' => -2), + "tandemId" => array('type' => 58, 'tag' => -1), +]), +65 => new ArrayNode( + new IntegerNode(5, 0), + 64 +), +66 => new StructNode([ + "phase" => array('type' => 12, 'tag' => -11), + "maxUsers" => array('type' => 2, 'tag' => -10), + "maxObservers" => array('type' => 2, 'tag' => -9), + "slots" => array('type' => 65, 'tag' => -8), + "randomSeed" => array('type' => 6, 'tag' => -7), + "hostUserId" => array('type' => 58, 'tag' => -6), + "isSinglePlayer" => array('type' => 13, 'tag' => -5), + "pickedMapTag" => array('type' => 10, 'tag' => -4), + "gameDuration" => array('type' => 6, 'tag' => -3), + "defaultDifficulty" => array('type' => 3, 'tag' => -2), + "defaultAIBuild" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\LobbyState' +), +67 => new StructNode([ + "userInitialData" => array('type' => 48, 'tag' => -3), + "gameDescription" => array('type' => 57, 'tag' => -2), + "lobbyState" => array('type' => 66, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\SyncLobbyState' +), +68 => new StructNode([ + "syncLobbyState" => array('type' => 67, 'tag' => -1), +], + 'Rogiel\StarReplay\Metadata\Init\InitData' +), +69 => new StructNode([ + "name" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankFileEvent' +), +70 => new BlobNode(new IntegerNode(6, 0)), +71 => new StructNode([ + "name" => array('type' => 70, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSectionEvent' +), +72 => new StructNode([ + "name" => array('type' => 70, 'tag' => -3), + "type" => array('type' => 6, 'tag' => -2), + "data" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankKeyEvent' +), +73 => new StructNode([ + "type" => array('type' => 6, 'tag' => -3), + "name" => array('type' => 70, 'tag' => -2), + "data" => array('type' => 34, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankValueEvent' +), +74 => new ArrayNode( + new IntegerNode(5, 0), + 10, + 'Rogiel\StarReplay\Event\Game\Entity\BankSignature' + +), +75 => new StructNode([ + "signature" => array('type' => 74, 'tag' => -2), + "toonHandle" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BankSignatureEvent' +), +76 => new StructNode([ + "gameFullyDownloaded" => array('type' => 13, 'tag' => -14), + "developmentCheatsEnabled" => array('type' => 13, 'tag' => -13), + "testCheatsEnabled" => array('type' => 13, 'tag' => -12), + "multiplayerCheatsEnabled" => array('type' => 13, 'tag' => -11), + "syncChecksummingEnabled" => array('type' => 13, 'tag' => -10), + "isMapToMapTransition" => array('type' => 13, 'tag' => -9), + "debugPauseEnabled" => array('type' => 13, 'tag' => -8), + "useGalaxyAsserts" => array('type' => 13, 'tag' => -7), + "platformMac" => array('type' => 13, 'tag' => -6), + "cameraFollow" => array('type' => 13, 'tag' => -5), + "baseBuildNum" => array('type' => 6, 'tag' => -4), + "buildNum" => array('type' => 6, 'tag' => -3), + "versionFlags" => array('type' => 6, 'tag' => -2), + "hotkeyProfile" => array('type' => 46, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UserOptionsEvent' +), +77 => new StructNode([ +], + 'Rogiel\StarReplay\Event\Message\ServerPingMessage' +), +78 => new IntegerNode(16, 0), +79 => new StructNode([ + "x" => array('type' => 78, 'tag' => -2), + "y" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +80 => new StructNode([ + "which" => array('type' => 12, 'tag' => -2), + "target" => array('type' => 79, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraSaveEvent' +), +81 => new StructNode([ + "fileName" => array('type' => 30, 'tag' => -5), + "automatic" => array('type' => 13, 'tag' => -4), + "overwrite" => array('type' => 13, 'tag' => -3), + "name" => array('type' => 9, 'tag' => -2), + "description" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SaveGameEvent' +), +82 => new StructNode([ + "sequence" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerResetEvent' +), +83 => new IntegerNode(32, -2147483648), +84 => new StructNode([ + "x" => array('type' => 83, 'tag' => -2), + "y" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +85 => new StructNode([ + "point" => array('type' => 84, 'tag' => -4), + "time" => array('type' => 83, 'tag' => -3), + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +]), +86 => new StructNode([ + "data" => array('type' => 85, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameCheatEvent' +), +87 => new IntegerNode(25, 0), +88 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "abilCmdData" => array('type' => 25, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\Ability' +), +89 => new OptionalNode(88), +90 => new NullNode(), +91 => new IntegerNode(20, 0), +92 => new StructNode([ + "x" => array('type' => 91, 'tag' => -3), + "y" => array('type' => 91, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +93 => new StructNode([ + "targetUnitFlags" => array('type' => 78, 'tag' => -7), + "timer" => array('type' => 10, 'tag' => -6), + "tag" => array('type' => 6, 'tag' => -5), + "snapshotUnitLink" => array('type' => 78, 'tag' => -4), + "snapshotControlPlayerId" => array('type' => 58, 'tag' => -3), + "snapshotUpkeepPlayerId" => array('type' => 58, 'tag' => -2), + "snapshotPoint" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\TargetUnit' +), +94 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 92, + 2 => 93, + 3 => 6, +]), +95 => new IntegerNode(32, 1), +96 => new StructNode([ + "cmdFlags" => array('type' => 87, 'tag' => -6), + "abil" => array('type' => 89, 'tag' => -5), + "data" => array('type' => 94, 'tag' => -4), + "sequence" => array('type' => 95, 'tag' => -3), + "otherUnit" => array('type' => 43, 'tag' => -2), + "unitGroup" => array('type' => 43, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdEvent' +), +97 => new IntegerNode(9, 0), +98 => new BitArrayNode( + new IntegerNode(9, 0) +, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateMask'), +99 => new ArrayNode( + new IntegerNode(9, 0), + 97, + 'Rogiel\StarReplay\Event\Game\Entity\ControlGroupUpdateZeroIndices' + +), +100 => new ChoiceNode(new IntegerNode(2), [ + 0 => 90, + 1 => 98, + 2 => 99, + 3 => 99, +]), +101 => new StructNode([ + "unitLink" => array('type' => 78, 'tag' => -4), + "subgroupPriority" => array('type' => 10, 'tag' => -3), + "intraSubgroupPriority" => array('type' => 10, 'tag' => -2), + "count" => array('type' => 97, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SubgroupUnit' +), +102 => new ArrayNode( + new IntegerNode(9, 0), + 101 +), +103 => new StructNode([ + "subgroupIndex" => array('type' => 97, 'tag' => -4), + "removeMask" => array('type' => 100, 'tag' => -3), + "addSubgroups" => array('type' => 102, 'tag' => -2), + "addUnitTags" => array('type' => 63, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SelectionDelta' +), +104 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "delta" => array('type' => 103, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionDeltaEvent' +), +105 => new StructNode([ + "controlGroupIndex" => array('type' => 1, 'tag' => -3), + "controlGroupUpdate" => array('type' => 12, 'tag' => -2), + "mask" => array('type' => 100, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ControlGroupUpdateEvent' +), +106 => new StructNode([ + "count" => array('type' => 97, 'tag' => -6), + "subgroupCount" => array('type' => 97, 'tag' => -5), + "activeSubgroupIndex" => array('type' => 97, 'tag' => -4), + "unitTagsChecksum" => array('type' => 6, 'tag' => -3), + "subgroupIndicesChecksum" => array('type' => 6, 'tag' => -2), + "subgroupsChecksum" => array('type' => 6, 'tag' => -1), +]), +107 => new StructNode([ + "controlGroupId" => array('type' => 1, 'tag' => -2), + "selectionSyncData" => array('type' => 106, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SelectionSyncCheckEvent' +), +108 => new ArrayNode( + new IntegerNode(3, 0), + 83, + 'Rogiel\StarReplay\Event\Game\Entity\ResourceRequest' + +), +109 => new StructNode([ + "recipientId" => array('type' => 1, 'tag' => -2), + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceTradeEvent' +), +110 => new StructNode([ + "chatMessage" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerChatMessageEvent' +), +111 => new IntegerNode(8, -128), +112 => new StructNode([ + "x" => array('type' => 83, 'tag' => -3), + "y" => array('type' => 83, 'tag' => -2), + "z" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +113 => new StructNode([ + "beacon" => array('type' => 111, 'tag' => -9), + "ally" => array('type' => 111, 'tag' => -8), + "flags" => array('type' => 111, 'tag' => -7), + "build" => array('type' => 111, 'tag' => -6), + "targetUnitTag" => array('type' => 6, 'tag' => -5), + "targetUnitSnapshotUnitLink" => array('type' => 78, 'tag' => -4), + "targetUnitSnapshotUpkeepPlayerId" => array('type' => 111, 'tag' => -3), + "targetUnitSnapshotControlPlayerId" => array('type' => 111, 'tag' => -2), + "targetPoint" => array('type' => 112, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AICommunicateEvent' +), +114 => new StructNode([ + "speed" => array('type' => 12, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\SetAbsoluteGameSpeedEvent' +), +115 => new StructNode([ + "delta" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AddAbsoluteGameSpeedEvent' +), +116 => new StructNode([ + "point" => array('type' => 84, 'tag' => -9), + "unit" => array('type' => 6, 'tag' => -8), + "unitLink" => array('type' => 78, 'tag' => -7), + "unitControlPlayerId" => array('type' => 58, 'tag' => -6), + "unitUpkeepPlayerId" => array('type' => 58, 'tag' => -5), + "unitPosition" => array('type' => 92, 'tag' => -4), + "unitIsUnderConstruction" => array('type' => 13, 'tag' => -3), + "pingedMinimap" => array('type' => 13, 'tag' => -2), + "option" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPingEvent' +), +117 => new StructNode([ + "verb" => array('type' => 29, 'tag' => -2), + "arguments" => array('type' => 29, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\BroadcastCheatEvent' +), +118 => new StructNode([ + "alliance" => array('type' => 6, 'tag' => -2), + "control" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AllianceEvent' +), +119 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitClickEvent' +), +120 => new StructNode([ + "unitTag" => array('type' => 6, 'tag' => -2), + "flags" => array('type' => 10, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\UnitHighlightEvent' +), +121 => new StructNode([ + "conversationId" => array('type' => 83, 'tag' => -2), + "replyId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerReplySelectedEvent' +), +122 => new OptionalNode(20), +123 => new StructNode([ + "gameUserId" => array('type' => 1, 'tag' => -6), + "observe" => array('type' => 24, 'tag' => -5), + "name" => array('type' => 9, 'tag' => -4), + "toonHandle" => array('type' => 122, 'tag' => -3), + "clanTag" => array('type' => 41, 'tag' => -2), + "clanLogo" => array('type' => 42, 'tag' => -1), +]), +124 => new ArrayNode( + new IntegerNode(5, 0), + 123 +), +125 => new IntegerNode(1, 0), +126 => new StructNode([ + "userInfos" => array('type' => 124, 'tag' => -2), + "method" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HijackReplayGameEvent' +), +127 => new StructNode([ + "purchaseItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseItemChangedEvent' +), +128 => new StructNode([ + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerVictoryPanelPlayMissionAgainEvent' +), +129 => new ChoiceNode(new IntegerNode(3), [ + 0 => 90, + 1 => 13, + 2 => 6, + 3 => 83, + 4 => 30, + 5 => 6, +]), +130 => new StructNode([ + "controlId" => array('type' => 83, 'tag' => -3), + "eventType" => array('type' => 83, 'tag' => -2), + "eventData" => array('type' => 129, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerDialogControlEvent' +), +131 => new StructNode([ + "soundHash" => array('type' => 6, 'tag' => -2), + "length" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthQueryEvent' +), +132 => new ArrayNode( + new IntegerNode(7, 0), + 6 +), +133 => new StructNode([ + "soundHash" => array('type' => 132, 'tag' => -2), + "length" => array('type' => 132, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\Entity\SoundLengthSync' +), +134 => new StructNode([ + "syncInfo" => array('type' => 133, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundLengthSyncEvent' +), +135 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -3), + "lengthMs" => array('type' => 6, 'tag' => -2), + "finishGameLoop" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByNameEvent' +), +136 => new StructNode([ + "queryId" => array('type' => 78, 'tag' => -2), + "lengthMs" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimLengthQueryByPropsEvent' +), +137 => new StructNode([ + "animWaitQueryId" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerAnimOffsetEvent' +), +138 => new StructNode([ + "sound" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundOffsetEvent' +), +139 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -2), + "thread" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionOffsetEvent' +), +140 => new StructNode([ + "transmissionId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTransmissionCompleteEvent' +), +141 => new OptionalNode(79), +142 => new OptionalNode(78), +143 => new OptionalNode(111), +144 => new StructNode([ + "target" => array('type' => 141, 'tag' => -6), + "distance" => array('type' => 142, 'tag' => -5), + "pitch" => array('type' => 142, 'tag' => -4), + "yaw" => array('type' => 142, 'tag' => -3), + "reason" => array('type' => 143, 'tag' => -2), + "follow" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CameraUpdateEvent' +), +145 => new StructNode([ + "skipType" => array('type' => 125, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerConversationSkippedEvent' +), +146 => new IntegerNode(11, 0), +147 => new StructNode([ + "x" => array('type' => 146, 'tag' => -2), + "y" => array('type' => 146, 'tag' => -1), +], + 'Rogiel\StarReplay\Entity\Point' +), +148 => new StructNode([ + "button" => array('type' => 6, 'tag' => -5), + "down" => array('type' => 13, 'tag' => -4), + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseClickedEvent' +), +149 => new StructNode([ + "posUI" => array('type' => 147, 'tag' => -3), + "posWorld" => array('type' => 92, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseMovedEvent' +), +150 => new StructNode([ + "achievementLink" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\AchievementAwardedEvent' +), +151 => new StructNode([ + "hotkey" => array('type' => 6, 'tag' => -2), + "down" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerHotkeyPressedEvent' +), +152 => new StructNode([ + "abilLink" => array('type' => 78, 'tag' => -3), + "abilCmdIndex" => array('type' => 2, 'tag' => -2), + "state" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerTargetModeUpdateEvent' +), +153 => new StructNode([ + "soundtrack" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerSoundtrackDoneEvent' +), +154 => new StructNode([ + "planetId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPlanetMissionSelectedEvent' +), +155 => new StructNode([ + "key" => array('type' => 111, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerKeyPressedEvent' +), +156 => new StructNode([ + "resources" => array('type' => 108, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestEvent' +), +157 => new StructNode([ + "fulfillRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestFulfillEvent' +), +158 => new StructNode([ + "cancelRequestId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\ResourceRequestCancelEvent' +), +159 => new StructNode([ + "error" => array('type' => 83, 'tag' => -2), + "abil" => array('type' => 89, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCommandErrorEvent' +), +160 => new StructNode([ + "researchItemId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerResearchPanelSelectionChangedEvent' +), +161 => new StructNode([ + "mercenaryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMercenaryPanelSelectionChangedEvent' +), +162 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -2), + "difficultyLevel" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelPlayMissionEvent' +), +163 => new StructNode([ + "battleReportId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerBattleReportPanelSelectionChangedEvent' +), +164 => new IntegerNode(19, 0), +165 => new StructNode([ + "decrementMs" => array('type' => 164, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\DecrementGameTimeRemainingEvent' +), +166 => new StructNode([ + "portraitId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPortraitLoadedEvent' +), +167 => new StructNode([ + "functionName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMovieFunctionEvent' +), +168 => new StructNode([ + "result" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCustomDialogDismissedEvent' +), +169 => new StructNode([ + "gameMenuItemIndex" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerGameMenuItemSelectedEvent' +), +170 => new IntegerNode(16, -32768), +171 => new StructNode([ + "wheelSpin" => array('type' => 170, 'tag' => -2), + "flags" => array('type' => 111, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerMouseWheelEvent' +), +172 => new StructNode([ + "purchaseCategoryId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerPurchasePanelSelectedPurchaseCategoryChangedEvent' +), +173 => new StructNode([ + "button" => array('type' => 78, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerButtonPressedEvent' +), +174 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "bookmarkName" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneBookmarkFiredEvent' +), +175 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneEndSceneFiredEvent' +), +176 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -3), + "conversationLine" => array('type' => 20, 'tag' => -2), + "altConversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineEvent' +), +177 => new StructNode([ + "cutsceneId" => array('type' => 83, 'tag' => -2), + "conversationLine" => array('type' => 20, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\TriggerCutsceneConversationLineMissingEvent' +), +178 => new StructNode([ + "leaveReason" => array('type' => 1, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserLeaveEvent' +), +179 => new StructNode([ + "observe" => array('type' => 24, 'tag' => -7), + "name" => array('type' => 9, 'tag' => -6), + "toonHandle" => array('type' => 122, 'tag' => -5), + "clanTag" => array('type' => 41, 'tag' => -4), + "clanLogo" => array('type' => 42, 'tag' => -3), + "hijack" => array('type' => 13, 'tag' => -2), + "hijackCloneGameUserId" => array('type' => 58, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\GameUserJoinEvent' +), +180 => new OptionalNode(95), +181 => new StructNode([ + "state" => array('type' => 24, 'tag' => -2), + "sequence" => array('type' => 180, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CommandManagerStateEvent' +), +182 => new StructNode([ + "target" => array('type' => 92, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetPointEvent' +), +183 => new StructNode([ + "target" => array('type' => 93, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CmdUpdateTargetUnitEvent' +), +184 => new StructNode([ + "catalog" => array('type' => 10, 'tag' => -4), + "entry" => array('type' => 78, 'tag' => -3), + "field" => array('type' => 9, 'tag' => -2), + "value" => array('type' => 9, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\CatalogModifyEvent' +), +185 => new StructNode([ + "index" => array('type' => 6, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectedEvent' +), +186 => new StructNode([ + "shown" => array('type' => 13, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Game\HeroTalentTreeSelectionPanelToggledEvent' +), +187 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "string" => array('type' => 30, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ChatMessage' +), +188 => new StructNode([ + "recipient" => array('type' => 12, 'tag' => -2), + "point" => array('type' => 84, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\PingMessage' +), +189 => new StructNode([ + "progress" => array('type' => 83, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\LoadingProgressMessage' +), +190 => new StructNode([ + "status" => array('type' => 24, 'tag' => -1), +], + 'Rogiel\StarReplay\Event\Message\ReconnectNotifyMessage' +), +191 => new StructNode([ + "scoreValueMineralsCurrent" => array('type' => 83, 'tag' => 0), + "scoreValueVespeneCurrent" => array('type' => 83, 'tag' => 1), + "scoreValueMineralsCollectionRate" => array('type' => 83, 'tag' => 2), + "scoreValueVespeneCollectionRate" => array('type' => 83, 'tag' => 3), + "scoreValueWorkersActiveCount" => array('type' => 83, 'tag' => 4), + "scoreValueMineralsUsedInProgressArmy" => array('type' => 83, 'tag' => 5), + "scoreValueMineralsUsedInProgressEconomy" => array('type' => 83, 'tag' => 6), + "scoreValueMineralsUsedInProgressTechnology" => array('type' => 83, 'tag' => 7), + "scoreValueVespeneUsedInProgressArmy" => array('type' => 83, 'tag' => 8), + "scoreValueVespeneUsedInProgressEconomy" => array('type' => 83, 'tag' => 9), + "scoreValueVespeneUsedInProgressTechnology" => array('type' => 83, 'tag' => 10), + "scoreValueMineralsUsedCurrentArmy" => array('type' => 83, 'tag' => 11), + "scoreValueMineralsUsedCurrentEconomy" => array('type' => 83, 'tag' => 12), + "scoreValueMineralsUsedCurrentTechnology" => array('type' => 83, 'tag' => 13), + "scoreValueVespeneUsedCurrentArmy" => array('type' => 83, 'tag' => 14), + "scoreValueVespeneUsedCurrentEconomy" => array('type' => 83, 'tag' => 15), + "scoreValueVespeneUsedCurrentTechnology" => array('type' => 83, 'tag' => 16), + "scoreValueMineralsLostArmy" => array('type' => 83, 'tag' => 17), + "scoreValueMineralsLostEconomy" => array('type' => 83, 'tag' => 18), + "scoreValueMineralsLostTechnology" => array('type' => 83, 'tag' => 19), + "scoreValueVespeneLostArmy" => array('type' => 83, 'tag' => 20), + "scoreValueVespeneLostEconomy" => array('type' => 83, 'tag' => 21), + "scoreValueVespeneLostTechnology" => array('type' => 83, 'tag' => 22), + "scoreValueMineralsKilledArmy" => array('type' => 83, 'tag' => 23), + "scoreValueMineralsKilledEconomy" => array('type' => 83, 'tag' => 24), + "scoreValueMineralsKilledTechnology" => array('type' => 83, 'tag' => 25), + "scoreValueVespeneKilledArmy" => array('type' => 83, 'tag' => 26), + "scoreValueVespeneKilledEconomy" => array('type' => 83, 'tag' => 27), + "scoreValueVespeneKilledTechnology" => array('type' => 83, 'tag' => 28), + "scoreValueFoodUsed" => array('type' => 83, 'tag' => 29), + "scoreValueFoodMade" => array('type' => 83, 'tag' => 30), + "scoreValueMineralsUsedActiveForces" => array('type' => 83, 'tag' => 31), + "scoreValueVespeneUsedActiveForces" => array('type' => 83, 'tag' => 32), + "scoreValueMineralsFriendlyFireArmy" => array('type' => 83, 'tag' => 33), + "scoreValueMineralsFriendlyFireEconomy" => array('type' => 83, 'tag' => 34), + "scoreValueMineralsFriendlyFireTechnology" => array('type' => 83, 'tag' => 35), + "scoreValueVespeneFriendlyFireArmy" => array('type' => 83, 'tag' => 36), + "scoreValueVespeneFriendlyFireEconomy" => array('type' => 83, 'tag' => 37), + "scoreValueVespeneFriendlyFireTechnology" => array('type' => 83, 'tag' => 38), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStats' +), +192 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "stats" => array('type' => 191, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerStatsEvent' +), +193 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), + "controlPlayerId" => array('type' => 1, 'tag' => 3), + "upkeepPlayerId" => array('type' => 1, 'tag' => 4), + "x" => array('type' => 10, 'tag' => 5), + "y" => array('type' => 10, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitInitEvent' +), +194 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "killerPlayerId" => array('type' => 58, 'tag' => 2), + "x" => array('type' => 10, 'tag' => 3), + "y" => array('type' => 10, 'tag' => 4), + "killerUnitTagIndex" => array('type' => 43, 'tag' => 5), + "killerUnitTagRecycle" => array('type' => 43, 'tag' => 6), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDiedEvent' +), +195 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "controlPlayerId" => array('type' => 1, 'tag' => 2), + "upkeepPlayerId" => array('type' => 1, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\UnitOwnerChangeEvent' +), +196 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), + "unitTypeName" => array('type' => 29, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UnitTypeChangeEvent' +), +197 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "upgradeTypeName" => array('type' => 29, 'tag' => 1), + "count" => array('type' => 83, 'tag' => 2), +], + 'Rogiel\StarReplay\Event\Tracker\UpgradeEvent' +), +198 => new StructNode([ + "unitTagIndex" => array('type' => 6, 'tag' => 0), + "unitTagRecycle" => array('type' => 6, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitDoneEvent' +), +199 => new ArrayNode( + new IntegerNode(10, 0), + 83, + 'Rogiel\StarReplay\Event\Tracker\UnitPositions' + +), +200 => new StructNode([ + "firstUnitIndex" => array('type' => 6, 'tag' => 0), + "items" => array('type' => 199, 'tag' => 1), +], + 'Rogiel\StarReplay\Event\Tracker\UnitPositionsEvent' +), +201 => new StructNode([ + "playerId" => array('type' => 1, 'tag' => 0), + "type" => array('type' => 6, 'tag' => 1), + "userId" => array('type' => 43, 'tag' => 2), + "slotId" => array('type' => 43, 'tag' => 3), +], + 'Rogiel\StarReplay\Event\Tracker\PlayerSetupEvent' +), +] +); +Version39576::$GAME_EVENT_MAPPING = [ + 5 => 77, + 7 => 76, + 9 => 69, + 10 => 71, + 11 => 72, + 12 => 73, + 13 => 75, + 14 => 80, + 21 => 81, + 22 => 77, + 23 => 77, + 25 => 82, + 26 => 86, + 27 => 96, + 28 => 104, + 29 => 105, + 30 => 107, + 31 => 109, + 32 => 110, + 33 => 113, + 34 => 114, + 35 => 115, + 36 => 116, + 37 => 117, + 38 => 118, + 39 => 119, + 40 => 120, + 41 => 121, + 43 => 126, + 44 => 77, + 45 => 131, + 46 => 138, + 47 => 139, + 48 => 140, + 49 => 144, + 50 => 77, + 51 => 127, + 52 => 77, + 53 => 128, + 54 => 77, + 55 => 130, + 56 => 134, + 57 => 145, + 58 => 148, + 59 => 149, + 60 => 150, + 61 => 151, + 62 => 152, + 63 => 77, + 64 => 153, + 65 => 154, + 66 => 155, + 67 => 167, + 68 => 77, + 69 => 77, + 70 => 156, + 71 => 157, + 72 => 158, + 73 => 77, + 74 => 77, + 75 => 160, + 76 => 159, + 77 => 77, + 78 => 77, + 79 => 161, + 80 => 77, + 81 => 77, + 82 => 162, + 83 => 163, + 84 => 163, + 85 => 128, + 86 => 77, + 87 => 77, + 88 => 165, + 89 => 166, + 90 => 168, + 91 => 169, + 92 => 171, + 93 => 127, + 94 => 172, + 95 => 173, + 96 => 77, + 97 => 174, + 98 => 175, + 99 => 176, + 100 => 177, + 101 => 178, + 102 => 179, + 103 => 181, + 104 => 182, + 105 => 183, + 106 => 135, + 107 => 136, + 108 => 137, + 109 => 184, + 110 => 185, + 111 => 77, + 112 => 186, +]; +Version39576::$MESSAGE_EVENT_MAPPING = [ + 0 => 187, + 1 => 188, + 2 => 189, + 3 => 77, + 4 => 190, +]; +Version39576::$TRACKER_EVENT_MAPPING = [ + 0 => 192, + 1 => 193, + 2 => 194, + 3 => 195, + 4 => 196, + 5 => 197, + 6 => 193, + 7 => 198, + 8 => 200, + 9 => 201, +]; diff --git a/src/Version/VersionLoader.php b/src/Version/VersionLoader.php new file mode 100644 index 0000000..8fb012d --- /dev/null +++ b/src/Version/VersionLoader.php @@ -0,0 +1,91 @@ +versions = $versions; + } + + /** + * @param $version string|int the version string + * @return Version + */ + public function load($version) { + if(!array_key_exists($version, $this->versions)) { + return NULL; + } + $className = $this->versions[$version]; + return new $className(); + } + + /** + * @param $version string|int the version string + * @return bool + */ + public function exists($version) { + return array_key_exists($version, $this->versions); + } + + /** + * @return Version + */ + public function earliest() { + $version = min(array_keys($this->versions)); + return $this->load($version); + } + + /** + * @return Version + */ + public function latest() { + $version = max(array_keys($this->versions)); + return $this->load($version); + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function addVersion($version, $class = NULL) { + if($class == NULL) { + $class = 'Rogiel\StarReplay\Version\Version'.$version; + } + $this->versions[$version] = $class; + } + + public function removeVersion($version) { + unset($this->versions[$version]); + } + +} \ No newline at end of file diff --git a/src/Version/Versions.php b/src/Version/Versions.php new file mode 100644 index 0000000..e4c3c41 --- /dev/null +++ b/src/Version/Versions.php @@ -0,0 +1,70 @@ + 'Rogiel\StarReplay\Version\Version15405', + 16561 => 'Rogiel\StarReplay\Version\Version16561', + 16605 => 'Rogiel\StarReplay\Version\Version16605', + 16755 => 'Rogiel\StarReplay\Version\Version16755', + 16939 => 'Rogiel\StarReplay\Version\Version16939', + 17266 => 'Rogiel\StarReplay\Version\Version17266', + 17326 => 'Rogiel\StarReplay\Version\Version17326', + 18092 => 'Rogiel\StarReplay\Version\Version18092', + 18468 => 'Rogiel\StarReplay\Version\Version18468', + 18574 => 'Rogiel\StarReplay\Version\Version18574', + 19132 => 'Rogiel\StarReplay\Version\Version19132', + 19458 => 'Rogiel\StarReplay\Version\Version19458', + 19595 => 'Rogiel\StarReplay\Version\Version19595', + 19679 => 'Rogiel\StarReplay\Version\Version19679', + 21029 => 'Rogiel\StarReplay\Version\Version21029', + 21995 => 'Rogiel\StarReplay\Version\Version21995', + 22612 => 'Rogiel\StarReplay\Version\Version22612', + 23260 => 'Rogiel\StarReplay\Version\Version23260', + 24764 => 'Rogiel\StarReplay\Version\Version24764', + 24944 => 'Rogiel\StarReplay\Version\Version24944', + 26490 => 'Rogiel\StarReplay\Version\Version26490', + 27950 => 'Rogiel\StarReplay\Version\Version27950', + 28272 => 'Rogiel\StarReplay\Version\Version28272', + 28667 => 'Rogiel\StarReplay\Version\Version28667', + 32283 => 'Rogiel\StarReplay\Version\Version32283', + 34784 => 'Rogiel\StarReplay\Version\Version34784', + 34835 => 'Rogiel\StarReplay\Version\Version34835', + 36442 => 'Rogiel\StarReplay\Version\Version36442', + 38215 => 'Rogiel\StarReplay\Version\Version38215', + 38749 => 'Rogiel\StarReplay\Version\Version38749', + 38996 => 'Rogiel\StarReplay\Version\Version38996', + 39576 => 'Rogiel\StarReplay\Version\Version39576' + ]; + } + +} diff --git a/tests/AbstractTestCase.php b/tests/AbstractTestCase.php new file mode 100644 index 0000000..06982c7 --- /dev/null +++ b/tests/AbstractTestCase.php @@ -0,0 +1,46 @@ +createMemoryBitStream($string) + ); + } +} diff --git a/tests/Parser/Header/HeaderParserTest.php b/tests/Parser/Header/HeaderParserTest.php new file mode 100644 index 0000000..2eeb3d8 --- /dev/null +++ b/tests/Parser/Header/HeaderParserTest.php @@ -0,0 +1,63 @@ +headerParser = new HeaderParser(); + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function testParsePatch3_1_0_38215() { + $header = $this->headerParser->parse($this->createMemoryParser(hex2bin(self::SAMPLE_HEADER_3_1_0_38215))); + $this->assertEquals(3, $header->getMajorVersion()); + $this->assertEquals(1, $header->getMinorVersion()); + $this->assertEquals(0, $header->getPatchVersion()); + $this->assertEquals(38215, $header->getBuildVersion()); + + $this->assertEquals("StarCraft II replay\e11", (string)$header->getMagicString()); + } + +} diff --git a/tests/Parser/Serializer/DefaultSerializerTest.php b/tests/Parser/Serializer/DefaultSerializerTest.php new file mode 100644 index 0000000..6b03c88 --- /dev/null +++ b/tests/Parser/Serializer/DefaultSerializerTest.php @@ -0,0 +1,123 @@ +serializer = new DefaultSerializer(); + } + + // ----------------------------------------------------------------------------------------------------------------- + + public function testVariableLengthInteger() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "09". /* variable integer type */ + "AC01" /* 86 */ + ))); + $this->assertEquals(86, $result); + + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "09". /* variable integer type */ + "0A" /* 5 */ + ))); + $this->assertEquals(5, $result); + } + + public function testUnserializeString() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "02". /* string type */ + "2C". /* string length (variable length int) */ + "48656c6c6f20576f726c64" /* "Hello World" */ + ))); + $this->assertEquals("Hello World", $result); + } + + public function testUnserializeNonEmptyArray() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "04". /* array type */ + "0100". /* non empty */ + "04". /* 2 items */ + "0902". /* integer 1 */ + "0904" /* integer 2 */ + ))); + $this->assertEquals(array(1, 2), $result); + } + + public function testUnserializeEmptyArray() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "04". /* array type */ + "00" /* empty */ + ))); + $this->assertEquals(NULL, $result); + } + + public function testUnserializeIndexedArray() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "05". /* indexed array type */ + "04". /* 2 items */ + "020914". /* 1 => 10 */ + "04090A" /* 2 => 5 */ + ))); + $this->assertEquals(array(1 => 10, 2 => 5), $result); + } + + public function testUnserializeEmptyIndexedArray() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "05". /* indexed array type */ + "00" /* 0 items */ + ))); + $this->assertEquals(array(), $result); + } + + public function testUnserializeByte() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "06". /* byte type */ + "FF" /* 0 items */ + ))); + $this->assertEquals(0xFF, $result); + } + + public function testUnserializeUInt32() { + $result = $this->serializer->unserialize($this->createMemoryParser(hex2bin( + "07". /* UInt32 type */ + "BEEF0000" /* 0 items */ + ))); + $this->assertEquals(0x0000EFBE, $result); + } + +} diff --git a/tests/Stream/BitStreamTest.php b/tests/Stream/BitStreamTest.php new file mode 100644 index 0000000..f5a344c --- /dev/null +++ b/tests/Stream/BitStreamTest.php @@ -0,0 +1,101 @@ +createMemoryBitStream(hex2bin( + "01" + )); + + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + $this->assertEquals(0, $stream->readBit()); + + $stream = $this->createMemoryBitStream(hex2bin( + "FF" + )); + + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + $this->assertEquals(1, $stream->readBit()); + } + + public function testReadBits() { + $stream = $this->createMemoryBitStream(hex2bin( + "01" + )); + + $this->assertEquals(1, $stream->readBits(2)); + $this->assertEquals(0, $stream->readBits(2)); + $this->assertEquals(0, $stream->readBits(2)); + $this->assertEquals(0, $stream->readBits(2)); + + $stream = $this->createMemoryBitStream(hex2bin( + "FF" + )); + $this->assertEquals(3, $stream->readBits(2)); + $this->assertEquals(3, $stream->readBits(2)); + $this->assertEquals(3, $stream->readBits(2)); + $this->assertEquals(3, $stream->readBits(2)); + + } + + public function testReadBitsMultiByteAligned() { + // multi byte (aligned) + $stream = $this->createMemoryBitStream(hex2bin( + "00FF" + )); + $this->assertEquals(0xFF00, $stream->readBits(16)); + } + + public function testReadBitsMultiByteNotAligned() { + // multi byte (not aligned) + $stream = $this->createMemoryBitStream(hex2bin( + "FFAA" + )); + $this->assertEquals(15, $stream->readBits(4)); + $this->assertEquals(2735, $stream->readBits(12)); + } + + +} diff --git a/tests/Stream/Parser/ReplayStreamParserTest.php b/tests/Stream/Parser/ReplayStreamParserTest.php new file mode 100644 index 0000000..9266534 --- /dev/null +++ b/tests/Stream/Parser/ReplayStreamParserTest.php @@ -0,0 +1,151 @@ +createMemoryParser(hex2bin( + "00" + )); + $this->assertEquals(0, $parser->readTimestamp()); + + $parser = $this->createMemoryParser(hex2bin( + "B9FF" + )); + $this->assertEquals(16366, $parser->readTimestamp()); + + $parser = $this->createMemoryParser(hex2bin( + "BAFFA0" + )); + $this->assertEquals(2637806, $parser->readTimestamp()); + + $parser = $this->createMemoryParser(hex2bin( + "BBFFA004" + )); + $this->assertEquals(19415022, $parser->readTimestamp()); + } + + public function testReadVariableLengthNumber() { + $parser = $this->createMemoryParser(hex2bin( + "00" + )); + $this->assertEquals(0, $parser->readVariableLengthNumber()); + + $parser = $this->createMemoryParser(hex2bin( + "0A" + )); + $this->assertEquals(5, $parser->readVariableLengthNumber()); + + $parser = $this->createMemoryParser(hex2bin( + "FA16" + )); + $this->assertEquals(1469, $parser->readVariableLengthNumber()); + } + + public function testReadPlayerID() { + $parser = $this->createMemoryParser(hex2bin( + "03" + )); + $this->assertEquals(3, $parser->readPlayerID()); + + $parser = $this->createMemoryParser(hex2bin( + "06" + )); + $this->assertEquals(6, $parser->readPlayerID()); + } + + public function testReadBit() { + $parser = $this->createMemoryParser(hex2bin( + "01" + )); + + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + $this->assertEquals(0, $parser->readBit()); + + $parser = $this->createMemoryParser(hex2bin( + "FF" + )); + + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + $this->assertEquals(1, $parser->readBit()); + } + + public function testReadBits() { + $parser = $this->createMemoryParser(hex2bin( + "01" + )); + + $this->assertEquals(1, $parser->readBits(2)); + $this->assertEquals(0, $parser->readBits(2)); + $this->assertEquals(0, $parser->readBits(2)); + $this->assertEquals(0, $parser->readBits(2)); + + $parser = $this->createMemoryParser(hex2bin( + "FF" + )); + $this->assertEquals(3, $parser->readBits(2)); + $this->assertEquals(3, $parser->readBits(2)); + $this->assertEquals(3, $parser->readBits(2)); + $this->assertEquals(3, $parser->readBits(2)); + + } + + public function testReadBitsMultiByteAligned() { + // multi byte (aligned) + $parser = $this->createMemoryParser(hex2bin( + "00FF" + )); + $this->assertEquals(0xFF00, $parser->readBits(16)); + } + + public function testReadBitsMultiByteNotAligned() { + // multi byte (not aligned) + $parser = $this->createMemoryParser(hex2bin( + "FFAA" + )); + $this->assertEquals(15, $parser->readBits(4)); + $this->assertEquals(2735, $parser->readBits(12)); + } + +}