Source code for RWESharp.Loaders.EffectLoader

from RWESharp.info import PATH_FILES, PATH_EFFECT_PREVIEWS
from RWESharp.utils import log
import ujson
import os
from RWESharp.Loaders.Effect import EffectCategory, Effect, MoveDeleteOption, SeedOption, EffectOption, Effects
from PySide6.QtGui import QColor, QPixmap


[docs] def load_effects(splash): # splash.printmessage("Loading Effects") effects_file = os.path.join(PATH_FILES, "effects.json") effects = ujson.load(open(effects_file)) loaded_effects = [] defaultprops = effects["defaultproperties"] amount = 0 for category in effects["effects"]: currentcat = EffectCategory(category.get("nm", "NoName"), QColor(*category.get("color", [0, 0, 0])), []) for i in category["efs"]: e = {**defaultprops, **i} e["options"] = e.get("options", []) for indx, option in enumerate(e["options"]): if option[0].lower() == "layers": op = e["options"].pop(indx) e["options"].insert(1, op) break amount += 1 effect = Effect(e["nm"], e.get("description"), e.get("tp", "nn"), e.get("crossScreen", 0), currentcat.color, [MoveDeleteOption(), SeedOption(), *[EffectOption(p[0], p[1], p[2]) for p in e["options"]]], e.get("repeats", 60), e.get("affectOpenAreas", 0.5), QPixmap(os.path.join(PATH_EFFECT_PREVIEWS, e["preview"] + ".png")), currentcat, e["nm"] in effects["maxstr"]) currentcat.effects.append(effect) loaded_effects.append(currentcat) log(f"Loaded {amount} Effects") return Effects(loaded_effects)