For the complete documentation index, see llms.txt. This page is also available as Markdown.

7. Intermediate: validated persistent setting

Difficulty: Intermediate

validated-persistent-setting.gpc
define STRENGTH_MIN = 0;
define STRENGTH_MAX = 100;
define STRENGTH_DEFAULT = 25;

int strength;
int dirty;

init {
    strength = get_pvar(
        SPVAR_1,
        STRENGTH_MIN,
        STRENGTH_MAX,
        STRENGTH_DEFAULT
    );
}

main {
    if(event_press(PS5_UP)) {
        strength = strength + 1;
        if(strength > STRENGTH_MAX) strength = STRENGTH_MAX;
        dirty = TRUE;
    }

    if(event_press(PS5_DOWN)) {
        strength = strength - 1;
        if(strength < STRENGTH_MIN) strength = STRENGTH_MIN;
        dirty = TRUE;
    }

    if(dirty && event_press(PS5_OPTIONS)) {
        set_pvar(SPVAR_1, strength);
        dirty = FALSE;
    }

    set_val(TRACE_1, strength);
    set_val(TRACE_2, dirty);
}

What it teaches: validated load, explicit dirty state, event-driven save.

Last updated