From 75dad32bc20cbd1a63e2a831cdaebe67cc74c89f Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Fri, 4 May 2012 21:29:07 -0500 Subject: a better get_dependencies for NewTextScript original-commit-id: 82d7043accd00c3b1260e3a23c2619e1fdb36ca5 --- crystal.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'crystal.py') diff --git a/crystal.py b/crystal.py index 9043eac..03a2ecc 100644 --- a/crystal.py +++ b/crystal.py @@ -394,12 +394,16 @@ class NewTextScript: see: http://hax.iimarck.us/files/scriptingcodes_eng.htm#InText """ base_label = "UnknownText_" - def __init__(self, address, map_group=None, map_id=None, debug=True, label=None): + def __init__(self, address, map_group=None, map_id=None, debug=True, label=None, force=False): self.address = address self.map_group, self.map_id, self.debug = map_group, map_id, debug self.dependencies = [] self.commands = [] + self.force = force + if is_script_already_parsed_at(address) and not force: + raise Exception, "TextScript already parsed at "+hex(address) + if not label: label = self.base_label + hex(address) self.label = Label(name=label, address=address, object=self) @@ -407,15 +411,23 @@ class NewTextScript: self.parse() def get_dependencies(self, recompute=False, global_dependencies=set()): - global_dependencies.update(self.dependencies) + if self.dependencies != None and not recompute: + global_dependencies.update(self.dependencies) + return self.dependencies + dependencies = [] + for command in self.commands: + deps = command.get_dependencies(recompute=recompute, global_dependencies=global_dependencies) + dependencies.extend(deps) + self.dependencies = dependencies return self.dependencies def parse(self): global text_command_classes, script_parse_table - raise NotImplementedError, bryan_message + current_address = self.address + # TODO def to_asm(self): - pass + # TODO all_texts = [] class TextScript: -- cgit v1.2.3