From e375726ae8ef48b227a3944962cea96ee1eae2a9 Mon Sep 17 00:00:00 2001 From: Jane Petrovna Date: Mon, 9 Nov 2020 01:09:47 -0500 Subject: [PATCH] add rand --- pattern.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/pattern.py b/pattern.py index 96e12e3..65c11e0 100644 --- a/pattern.py +++ b/pattern.py @@ -1,5 +1,6 @@ import sys import json +import random this = sys.modules[__name__] @@ -9,7 +10,9 @@ this.values = { "stack": 0, "r": 0, "g": 0, - "b": 0 + "b": 0, + "tick": 0, + "index": 0 } @@ -35,17 +38,33 @@ def sub(target, arg): return res +def rand(target, arg): + return random.randrange(0, 255) + + +def _apply(target, arg, func): + if type(arg is int): + return func(target, arg) + elif type(arg is str) and arg in this.values: + return func(target, this.values[arg]) + + def apply(targets, args, func): for target in range(len(targets)): if this.values[targets[target]['channel']] != None: - this.values[targets[target]['channel']] = func( - this.values[targets[target]['channel']], args[target]) + if target in args: + this.values[targets[target]['channel']] = _apply( + this.values[targets[target]['channel']], args[target], func) + else: + this.values[targets[target]['channel']] = _apply( + this.values[targets[target]['channel']], 0, func) this.instructions = { "CONSTANT": constant, "ADD": add, - "SUB": sub + "SUB": sub, + "RAND": rand } @@ -58,7 +77,9 @@ def pat(index, tick, previous_values): for i in range(len(this.pattern)): name = this.pattern[i]['instruction']['name'] targets = this.pattern[i]['instruction']['targets'] - args = this.pattern[i]['instruction']['args'] + args = [] + if 'args' in this.pattern[i]['instruction']: + args = this.pattern[i]['instruction']['args'] if this.instructions[name] != None: apply(targets, args, this.instructions[name]) r = this.values["r"]