Created
July 19, 2017 04:47
-
-
Save jleclanche/404d6d032c1c2865cbae21589950010f to your computer and use it in GitHub Desktop.
An hslog exporter for played cards
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from hearthstone.enums import BlockType, GameTag | |
from hslog import LogParser | |
from hslog.export import EntityTreeExporter | |
class CardTreeExporter(EntityTreeExporter): | |
def __init__(self, *args): | |
super().__init__(*args) | |
self.play_trees = {} | |
def handle_block(self, packet): | |
if packet.type == BlockType.PLAY: | |
entity = self.game.find_entity_by_id(packet.entity) | |
controller = entity.controller | |
print(repr(controller)) | |
if controller not in self.play_trees: | |
self.play_trees[controller] = [] | |
turn = self.game.tags.get(GameTag.TURN, 0) | |
self.play_trees[controller].append((turn, entity)) | |
return super().handle_block(packet) | |
def export(self): | |
super().export() | |
for player, played_cards in self.play_trees.items(): | |
print("Controller: %r" % (player)) | |
for turn, card in played_cards: | |
print("\tTurn %i: Played %r" % (turn, card.card_id)) | |
return self.play_trees | |
def main(): | |
import sys | |
parser = LogParser() | |
with open(sys.argv[1], "r") as f: | |
parser.read(f) | |
print(CardTreeExporter(parser.games[0]).export()) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment