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