# HG changeset patch # User Simon Cross # Date 1302288767 -7200 # Node ID 71f15f6e92749ef2094a0ea6a5598d1600989e79 # Parent 8cac6ff88a9d9517c96e282043fa8f8335798d49 Hook up auto_next dialogue events. diff -r 8cac6ff88a9d -r 71f15f6e9274 skaapsteker/dialogue.py --- a/skaapsteker/dialogue.py Fri Apr 08 20:41:05 2011 +0200 +++ b/skaapsteker/dialogue.py Fri Apr 08 20:52:47 2011 +0200 @@ -49,6 +49,9 @@ def choice(self, i): self.event(DsmEvent(choice=i)) + def auto_next(self): + self.event(DsmEvent(auto_next=True)) + class AttrDict(dict): @@ -60,9 +63,10 @@ class DsmEvent(object): - def __init__(self, choice=None): + def __init__(self, choice=None, auto_next=False): self.items = { "choice": choice, + "auto_next": auto_next, } @@ -92,9 +96,12 @@ pseudo_path)) auto_next = state_src.get("auto_next", None) + self.auto_next = False if auto_next is not None: + self.auto_next = True + assert not self.choices, "%s: auto_next and choices are not compatible" % ":".join(base_path) pseudo_path = base_path + ["auto_next"] - self.triggers.append(Trigger("""True""", auto_next, pseudo_path)) + self.triggers.append(Trigger("""auto_next""", auto_next, pseudo_path)) on_entry = state_src.get("on_entry", None) if on_entry is not None: diff -r 8cac6ff88a9d -r 71f15f6e9274 skaapsteker/widgets/bubble.py --- a/skaapsteker/widgets/bubble.py Fri Apr 08 20:41:05 2011 +0200 +++ b/skaapsteker/widgets/bubble.py Fri Apr 08 20:52:47 2011 +0200 @@ -26,7 +26,10 @@ else: self._text = None options = [(text, i) for (i, text) in state.choices] - options.append(("Leave", "L")) + if state.auto_next: + options.append(("Next", "N")) + else: + options.append(("Leave", "L")) pos = pos.move(0, 0) # copy self._text_choice = TextChoice(options, pos, wrap=True) self._text_choice.callbacks.append(self._selected) @@ -34,6 +37,9 @@ def _selected(self, i, data): if data == "L": CloseDialog.post(self.npc) + elif data == "N": + self.dsm.auto_next() + self._state_update() else: self.dsm.choice(i) self._state_update()