update: added 'force' argument to 'do' in ActionFlow
This commit is contained in:
@@ -21,14 +21,17 @@ class ActionFlow:
|
||||
self.actions: list[type[Action]] = []
|
||||
self.on: list[bool] = []
|
||||
|
||||
def do(self, action: type[Action]):
|
||||
name = action.__name__
|
||||
index = self.indices.get(name)
|
||||
assert index is not None, "Action '%s' is not registered" % name
|
||||
|
||||
if self.on[index]: raise Unavailable(name)
|
||||
if self.on[index] is None: raise NotAllowed(name)
|
||||
self.on[index] = bool(self.actions[index].prepare())
|
||||
def do(self, action: type[Action], force=False):
|
||||
try:
|
||||
name = action.__name__
|
||||
index = self.indices.get(name)
|
||||
assert index is not None, "Action '%s' is not registered" % name
|
||||
|
||||
if self.on[index]: raise Unavailable(name)
|
||||
if self.on[index] is None: raise NotAllowed(name)
|
||||
self.on[index] = bool(self.actions[index].prepare())
|
||||
except Exception as e:
|
||||
if force: raise e
|
||||
|
||||
def react(self):
|
||||
while any(self.on):
|
||||
|
||||
Reference in New Issue
Block a user