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: