shithub: pokecrystal

Download patch

ref: 82d7043accd00c3b1260e3a23c2619e1fdb36ca5
parent: f5e5c110d1301745c4137e4c8c3fe66155a330d2
author: Bryan Bishop <[email protected]>
date: Fri May 4 17:29:07 EDT 2012

a better get_dependencies for NewTextScript

--- a/extras/crystal.py
+++ b/extras/crystal.py
@@ -394,12 +394,16 @@
     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 @@
         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: