Compare commits

...

2 Commits

Author SHA1 Message Date
00eda2aae5 Simpler syntax 2024-04-03 01:03:54 +02:00
ae5ff121d9 Moar lint 2024-04-03 01:03:46 +02:00
2 changed files with 21 additions and 3 deletions

View File

@ -91,6 +91,8 @@ python early hide:
chibi = eval(f"{who}_chibi")
except Exception:
renpy.error(f"Character chibi not defined: {who}")
if not hasattr(chibi, action):
renpy.error(f"Chibi action not defined: {who} {action}")
def predict(self):
who, action = self
@ -142,6 +144,23 @@ python early hide:
return {"blocks": blocks}
def lint(self):
any_true = False
for block, weight, condition in self["blocks"]:
if not isinstance(weight, (int, float)):
renpy.error(f"Weight must be a number, not {weight!r}")
if condition == "True":
any_true = True
else:
try:
eval(condition)
except Exception:
renpy.error(f"Condition could not be evaluated: {condition!r}")
if not any_true:
renpy.error("All blocks have a condition, which will raise an exception if all conditions are False at the same time at runtime")
def next(self):
blocks = [(block, weight) for block, weight, condition in self["blocks"] if eval(condition)]
total_weight = sum(weight for _, weight in blocks)

View File

@ -113,7 +113,7 @@ init -1 python:
# Use a tuple/list to specify the order of layers in a dict
self.layers_order = layers
self.layers = dict([(k, None) for k in layers])
self.layers = dict.fromkeys(layers)
self.update_callback = update_callback
@ -124,8 +124,7 @@ init -1 python:
if actions:
# Override class variable for this instance
self.actions = dict(Chibi.actions)
self.actions.update(actions)
self.actions = Chibi.actions | actions
self.zorder = zorder
self.speed = speed # pixels/sec