Esempio n. 1
0
        .params = 0, .returns = 1, .data = (void *)offsetof(scene_state_t, v) \
    }

#define MAKE_SEED_ALIAS_OP(n, v) MAKE_SEED_OP(n, v)

static void op_peek_seed_i16(const void *data, scene_state_t *ss,
                             exec_state_t *es, command_state_t *cs);
static void op_poke_seed_i16(const void *data, scene_state_t *ss,
                             exec_state_t *es, command_state_t *cs);
static void op_SEED_get(const void *data, scene_state_t *ss, exec_state_t *es,
                        command_state_t *cs);
static void op_SEED_set(const void *data, scene_state_t *ss, exec_state_t *es,
                        command_state_t *cs);

// clang-format off
const tele_op_t op_SEED			= MAKE_GET_SET_OP(SEED, op_SEED_get, op_SEED_set, 0, true);
const tele_op_t op_RAND_SEED	= MAKE_SEED_OP(RAND.SEED, rand_states.s.rand);  
const tele_op_t op_SYM_RAND_SD	= MAKE_SEED_ALIAS_OP(RAND.SD, rand_states.s.rand);  
const tele_op_t op_SYM_R_SD		= MAKE_SEED_ALIAS_OP(R.SD, rand_states.s.rand);  
const tele_op_t op_TOSS_SEED	= MAKE_SEED_OP(TOSS.SEED, rand_states.s.toss);  
const tele_op_t op_SYM_TOSS_SD	= MAKE_SEED_ALIAS_OP(TOSS.SD, rand_states.s.toss);  
const tele_op_t op_PROB_SEED	= MAKE_SEED_OP(PROB.SEED, rand_states.s.prob);  
const tele_op_t op_SYM_PROB_SD	= MAKE_SEED_ALIAS_OP(PROB.SD, rand_states.s.prob);  
const tele_op_t op_DRUNK_SEED	= MAKE_SEED_OP(DRUNK.SEED, rand_states.s.drunk);  
const tele_op_t op_SYM_DRUNK_SD	= MAKE_SEED_ALIAS_OP(DRUNK.SD, rand_states.s.drunk);  
const tele_op_t op_P_SEED		= MAKE_SEED_OP(P.SEED, rand_states.s.pattern);  
const tele_op_t op_SYM_P_SD		= MAKE_SEED_ALIAS_OP(P.SD, rand_states.s.pattern);
// clang-format on

static void op_peek_seed_i16(const void *data, scene_state_t *ss,
                             exec_state_t *NOTUSED(es), command_state_t *cs) {
Esempio n. 2
0
                           exec_state_t *es, command_state_t *cs);
static void op_CHAOS_ALG_get(const void *data, scene_state_t *ss,
                             exec_state_t *es, command_state_t *cs);
static void op_CHAOS_ALG_set(const void *data, scene_state_t *ss,
                             exec_state_t *es, command_state_t *cs);

// clang-format off
const tele_op_t op_ADD   = MAKE_GET_OP(ADD     , op_ADD_get     , 2, true);
const tele_op_t op_SUB   = MAKE_GET_OP(SUB     , op_SUB_get     , 2, true);
const tele_op_t op_MUL   = MAKE_GET_OP(MUL     , op_MUL_get     , 2, true);
const tele_op_t op_DIV   = MAKE_GET_OP(DIV     , op_DIV_get     , 2, true);
const tele_op_t op_MOD   = MAKE_GET_OP(MOD     , op_MOD_get     , 2, true);
const tele_op_t op_RAND  = MAKE_GET_OP(RAND    , op_RAND_get    , 1, true);
const tele_op_t op_RRAND = MAKE_GET_OP(RRAND   , op_RRAND_get   , 2, true);
const tele_op_t op_R     = MAKE_GET_OP(R       , op_R_get       , 0, true);
const tele_op_t op_R_MIN = MAKE_GET_SET_OP(R.MIN, op_R_MIN_get, op_R_MIN_set, 0, true);
const tele_op_t op_R_MAX = MAKE_GET_SET_OP(R.MAX, op_R_MAX_get, op_R_MAX_set, 0, true);
const tele_op_t op_TOSS  = MAKE_GET_OP(TOSS    , op_TOSS_get    , 0, true);
const tele_op_t op_MIN   = MAKE_GET_OP(MIN     , op_MIN_get     , 2, true);
const tele_op_t op_MAX   = MAKE_GET_OP(MAX     , op_MAX_get     , 2, true);
const tele_op_t op_LIM   = MAKE_GET_OP(LIM     , op_LIM_get     , 3, true);
const tele_op_t op_WRAP  = MAKE_GET_OP(WRAP    , op_WRAP_get    , 3, true);
const tele_op_t op_QT    = MAKE_GET_OP(QT      , op_QT_get      , 2, true);
const tele_op_t op_AVG   = MAKE_GET_OP(AVG     , op_AVG_get     , 2, true);
const tele_op_t op_EQ    = MAKE_GET_OP(EQ      , op_EQ_get      , 2, true);
const tele_op_t op_NE    = MAKE_GET_OP(NE      , op_NE_get      , 2, true);
const tele_op_t op_LT    = MAKE_GET_OP(LT      , op_LT_get      , 2, true);
const tele_op_t op_GT    = MAKE_GET_OP(GT      , op_GT_get      , 2, true);
const tele_op_t op_LTE   = MAKE_GET_OP(LTE     , op_LTE_get     , 2, true);
const tele_op_t op_GTE   = MAKE_GET_OP(GTE     , op_GTE_get     , 2, true);
const tele_op_t op_NZ    = MAKE_GET_OP(NZ      , op_NZ_get      , 1, true);
Esempio n. 3
0
static void op_SCRIPT_get(const void *data, scene_state_t *ss, exec_state_t *es,
                          command_state_t *cs);
static void op_KILL_get(const void *data, scene_state_t *ss, exec_state_t *es,
                        command_state_t *cs);


const tele_mod_t mod_PROB = MAKE_MOD(PROB, mod_PROB_func, 1);
const tele_mod_t mod_IF = MAKE_MOD(IF, mod_IF_func, 1);
const tele_mod_t mod_ELIF = MAKE_MOD(ELIF, mod_ELIF_func, 1);
const tele_mod_t mod_ELSE = MAKE_MOD(ELSE, mod_ELSE_func, 0);
const tele_mod_t mod_L = MAKE_MOD(L, mod_L_func, 2);

const tele_op_t op_SCRIPT = MAKE_GET_OP(SCRIPT, op_SCRIPT_get, 1, false);
const tele_op_t op_KILL = MAKE_GET_OP(KILL, op_KILL_get, 0, false);
const tele_op_t op_SCENE =
    MAKE_GET_SET_OP(SCENE, op_SCENE_get, op_SCENE_set, 0, true);


static void mod_PROB_func(scene_state_t *NOTUSED(ss), exec_state_t *es,
                          command_state_t *cs, tele_command_t *sub_command) {
    int16_t a = cs_pop(cs);

    if (rand() % 101 < a) { process(es, sub_command); }
}

static void mod_IF_func(scene_state_t *NOTUSED(ss), exec_state_t *es,
                        command_state_t *cs, tele_command_t *sub_command) {
    es->if_else_condition = false;
    if (cs_pop(cs)) {
        es->if_else_condition = true;
        process(es, sub_command);
Esempio n. 4
0
const tele_op_t op_DRUNK_MAX  = MAKE_SIMPLE_VARIABLE_OP(DRUNK.MAX , variables.drunk_max );
const tele_op_t op_DRUNK_MIN  = MAKE_SIMPLE_VARIABLE_OP(DRUNK.MIN , variables.drunk_min );
const tele_op_t op_DRUNK_WRAP = MAKE_SIMPLE_VARIABLE_OP(DRUNK.WRAP, variables.drunk_wrap);
const tele_op_t op_O_INC      = MAKE_SIMPLE_VARIABLE_OP(O.INC     , variables.o_inc     );
const tele_op_t op_O_MAX      = MAKE_SIMPLE_VARIABLE_OP(O.MAX     , variables.o_max     );
const tele_op_t op_O_MIN      = MAKE_SIMPLE_VARIABLE_OP(O.MIN     , variables.o_min     );
const tele_op_t op_O_WRAP     = MAKE_SIMPLE_VARIABLE_OP(O.WRAP    , variables.o_wrap    );
const tele_op_t op_T          = MAKE_SIMPLE_VARIABLE_OP(T         , variables.t         );
const tele_op_t op_TIME       = MAKE_SIMPLE_VARIABLE_OP(TIME      , variables.time      );
const tele_op_t op_TIME_ACT   = MAKE_SIMPLE_VARIABLE_OP(TIME.ACT  , variables.time_act  );
const tele_op_t op_LAST       =             MAKE_GET_OP(LAST  , op_LAST_get, 1, true);
const tele_op_t op_X          = MAKE_SIMPLE_VARIABLE_OP(X         , variables.x         );
const tele_op_t op_Y          = MAKE_SIMPLE_VARIABLE_OP(Y         , variables.y         );
const tele_op_t op_Z          = MAKE_SIMPLE_VARIABLE_OP(Z         , variables.z         );

const tele_op_t op_DRUNK = MAKE_GET_SET_OP(DRUNK, op_DRUNK_get, op_DRUNK_set, 0, true);
const tele_op_t op_FLIP  = MAKE_GET_SET_OP(FLIP , op_FLIP_get , op_FLIP_set , 0, true);
const tele_op_t op_O     = MAKE_GET_SET_OP(O    , op_O_get    , op_O_set    , 0, true);
const tele_op_t op_I     = MAKE_GET_SET_OP(I    , op_I_get, op_I_set, 0, true);
// clang-format on

static void op_LAST_get(const void *NOTUSED(data), scene_state_t *ss,
                        exec_state_t *NOTUSED(es), command_state_t *cs) {
    int16_t script_number = cs_pop(cs) - 1;
    int16_t last = ss_get_script_last(ss, script_number);
    cs_push(cs, last);
}

static void op_DRUNK_get(const void *NOTUSED(data), scene_state_t *ss,
                         exec_state_t *NOTUSED(es), command_state_t *cs) {
    int16_t min = ss->variables.drunk_min;
Esempio n. 5
0
static void op_M_get(const void *data, scene_state_t *ss, exec_state_t *es,
                     command_state_t *cs);
static void op_M_set(const void *data, scene_state_t *ss, exec_state_t *es,
                     command_state_t *cs);
static void op_M_SYM_EXCLAMATION_get(const void *data, scene_state_t *ss,
                                     exec_state_t *es, command_state_t *cs);
static void op_M_SYM_EXCLAMATION_set(const void *data, scene_state_t *ss,
                                     exec_state_t *es, command_state_t *cs);
static void op_M_ACT_get(const void *data, scene_state_t *ss, exec_state_t *es,
                         command_state_t *cs);
static void op_M_ACT_set(const void *data, scene_state_t *ss, exec_state_t *es,
                         command_state_t *cs);
static void op_M_RESET_get(const void *data, scene_state_t *ss,
                           exec_state_t *es, command_state_t *cs);

const tele_op_t op_M = MAKE_GET_SET_OP(M, op_M_get, op_M_set, 0, true);

static void op_M_get(const void *NOTUSED(data), scene_state_t *ss,
                     exec_state_t *NOTUSED(es), command_state_t *cs) {
    cs_push(cs, ss->variables.m);
}

static void op_M_set(const void *NOTUSED(data), scene_state_t *ss,
                     exec_state_t *NOTUSED(es), command_state_t *cs) {
    int16_t m = cs_pop(cs);
    if (m < METRO_MIN_MS) m = METRO_MIN_MS;
    ss->variables.m = m;
    tele_metro_updated();
}

// clang-format off