Skip to content

Instantly share code, notes, and snippets.

@jleclanche
Created July 19, 2017 04:47
Show Gist options
  • Save jleclanche/404d6d032c1c2865cbae21589950010f to your computer and use it in GitHub Desktop.
Save jleclanche/404d6d032c1c2865cbae21589950010f to your computer and use it in GitHub Desktop.
An hslog exporter for played cards
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