State machines
enum {
STATE_IDLE,
STATE_ARMED,
STATE_ACTIVE,
STATE_COOLDOWN
};
int state;
main {
switch(state) {
case STATE_IDLE: {
if(event_press(PS5_CROSS)) state = STATE_ARMED;
break;
}
case STATE_ARMED: {
if(get_ival(PS5_R2)) state = STATE_ACTIVE;
if(event_press(PS5_CIRCLE)) state = STATE_IDLE;
break;
}
case STATE_ACTIVE: {
if(!get_ival(PS5_R2)) state = STATE_COOLDOWN;
break;
}
case STATE_COOLDOWN: {
if(get_ptime(PS5_R2) > 250) state = STATE_IDLE;
break;
}
default: {
state = STATE_IDLE;
break;
}
}
}Last updated

