summaryrefslogtreecommitdiff
path: root/crystal.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2012-05-20 03:02:35 -0500
committerBryan Bishop <kanzure@gmail.com>2012-05-20 03:02:35 -0500
commit1b60103454ffd345cdbc0c3a25dc9478fc4be482 (patch)
tree3758fe0841a3eb8928523110b23ff88d37fdeb00 /crystal.py
parent264a01671c69f3325bcdc4c4124edc55697a4052 (diff)
update TrainerGroupParam and TrainerIdParam to use better constant/number rules
original-commit-id: 1fb70a4b4f25b3b2824392d0aeecae86d7a5d083
Diffstat (limited to 'crystal.py')
-rw-r--r--crystal.py31
1 files changed, 24 insertions, 7 deletions
diff --git a/crystal.py b/crystal.py
index 69cd25e..729ee32 100644
--- a/crystal.py
+++ b/crystal.py
@@ -1693,15 +1693,32 @@ class PointerParamToItemAndLetter(MultiByteParam):
class TrainerIdParam(SingleByteParam):
- #raise NotImplementedError, bryan_message
- pass
- #def to_asm(self):
- # pass
+ def to_asm(self):
+ # find the group id by first finding the param type id
+ i = 0
+ foundit = None
+ for (k, v) in self.parent.param_types.items():
+ if v["class"] == TrainerGroupParam:
+ foundit = i
+ break
+ i += 1
-class TrainerGroupParam(SingleByteParam):
- #raise NotImplementedError, bryan_message
- pass
+ if foundit == None:
+ raise Exception, "didn't find a TrainerGroupParam in this command??"
+ # now get the trainer group id
+ trainer_group_id = self.parent.params[foundit].byte
+
+ # check the rule to see whether to use an id or not
+ if "uses_numeric_trainer_ids" in trainer_group_names[trainer_group_id].keys():
+ return str(self.byte)
+ else:
+ return trainer_group_names[trainer_group_id]["trainer_names"][self.byte-1]
+
+class TrainerGroupParam(SingleByteParam):
+ def to_asm(self):
+ trainer_group_id = self.byte
+ return trainer_group_names[trainer_group_id]["constant"]
class MenuDataPointerParam(PointerLabelParam):
#read menu data at the target site