Compare commits

..

2 Commits

Author SHA1 Message Date
b49129ad1f Avoid evals and release name constraint
Name resemblances between two variables should be for the developers' benefit only. If there is a link between data, it should be apparent.
2024-04-04 22:36:46 +02:00
34547cb0ad Use an instance storage dict
to avoid main store pollution and evals
2024-04-04 22:34:27 +02:00
2 changed files with 14 additions and 6 deletions

View File

@ -81,24 +81,27 @@ python early hide:
def execute(self):
print(f"{self}")
who, action = self
func = eval(f"{who}_chibi.{action}")
chibi = DollChibi.instance[who]
getattr(chibi, action)
# print(f"Execution: {who} {action}")
def lint(self):
who, action = self
try:
chibi = eval(f"{who}_chibi")
except Exception:
if who not in DollChibi.instances:
renpy.error(f"Character chibi not defined: {who}")
chibi = DollChibi.instances[who]
if not hasattr(chibi, action):
renpy.error(f"Chibi action not defined: {who} {action}")
def predict(self):
who, action = self
chibi = eval(f"{who}_chibi")
doll = eval(f"{who}")
chibi = DollChibi.instances[who]
doll = getattr(store, who)
layers = (
l[0] for pose in chibi.poses.keys()

View File

@ -1,6 +1,9 @@
init 5 python:
class DollChibi(renpy.Displayable):
# class attribute
instances = {}
def __init__(self, name, layer="screens", zorder=12, zoom=0.28, **properties):
super().__init__(**properties)
@ -35,6 +38,8 @@ init 5 python:
self.atl_pause = False
self.atl_at_list = []
self.instances[name] = self
def register(self, pose, frames, size):
self.poses[pose] = (frames, size)