sonnum/pysonnum/instruction.py

48 lines
No EOL
1.2 KiB
Python

# Here, s stands for the sonnum object,
# c stands for compiler object
def i_create_simple(c, s, name):
# ;name*
node = s.add_node(name)
c.add_activity('create', 0, 0, node, None, [])
def i_create_relay(c, s, name):
# ;name@
node = s.add_node(name)
c.add_activity('create', 0, 0, node, None, [])
c.add_activity('relay', 0, s.g('endtick'), node, None, [])
def i_end_tick(c, s, endtick):
# ;endtick!
c.add_activity('endtick', 0, endtick, None, None, [])
s.s('endtick', endtick)
def i_wire(c, s, src_name, trg_name):
# ;name=>name
src_node = s.node_by_name(src_name)
trg_node = s.node_by_name(trg_name)
if src_node and trg_node:
c.add_activity('wire', 0, 0, src_node, trg_node, [])
def i_air(c, s, src_name, trg_name):
# ;name->name
src_node = s.node_by_name(src_name)
trg_node = s.node_by_name(trg_name)
if src_node and trg_node:
c.add_activity('air', 0, 0, src_node, trg_node, [])
def i_pos(c, s, node_name, tick, x, y, z):
node = s.node_by_name(node_name)
c.add_activity('setpos', tick, tick, node, None, [x, y, z])
def i_setfreq(c, s, node_name, tick, freq, r_amp):
node = s.node_by_name(node_name)
c.add_activity('setfreq', tick, tick, node, None, [freq, r_amp])