in textworld/generator/game.py [0:0]
def update(self, action: Optional[Action] = None, state: Optional[State] = None) -> None:
""" Update event progression given available information.
Args:
action: Action potentially affecting the event progression.
state: Current game state.
"""
if self.done:
return # Nothing to do, the quest is already done.
if state is not None:
# Check if event is triggered.
self._triggered = self.event.is_triggering(state)
# Try compressing the winning policy given the new game state.
if self.compress_policy(state):
return # A shorter winning policy has been found.
if action is not None and not self._tree.empty:
# Determine if we moved away from the goal or closer to it.
changed, reverse_action = self._tree.remove(action)
if changed and reverse_action is None: # Irreversible action.
self._untriggerable = True # Can't track quest anymore.
if changed and reverse_action is not None:
# Rebuild policy.
self._policy = tuple(self._tree.flatten())