32 lines
1.4 KiB
Text
32 lines
1.4 KiB
Text
# ludic.settings/rules.ludic - the whole store at once: every setting to its default, every one
|
|
# held to its range, and the rescue set. None of these is news: whoever calls them applies it all
|
|
export function settings_reset_all(settings_st: mut SettingsState) -> void {
|
|
for i in 0 .. len(settings_st.sg_defs) {
|
|
settings_st.sg_num[i] = settings_st.sg_defs[i].num
|
|
settings_st.sg_text[i] = settings_st.sg_defs[i].text
|
|
}
|
|
}
|
|
|
|
# a hand-edited file, or one from a build with more choices, never hands the game a value it has
|
|
# no case for
|
|
export function settings_clamp_all(settings_st: mut SettingsState) -> void {
|
|
for i in 0 .. len(settings_st.sg_defs) { settings_st.sg_num[i] = settings_held(settings_st, i, settings_st.sg_num[i]) }
|
|
}
|
|
|
|
# the values every machine can run: each setting marked `rescue` back to its default, and the
|
|
# rest (keys, language, volume) left the player's
|
|
export function settings_rescue(settings_st: mut SettingsState) -> void {
|
|
for i in 0 .. len(settings_st.sg_defs) {
|
|
if settings_st.sg_defs[i].rescue {
|
|
settings_st.sg_num[i] = settings_st.sg_defs[i].num
|
|
settings_st.sg_text[i] = settings_st.sg_defs[i].text
|
|
}
|
|
}
|
|
}
|
|
|
|
# whether a setting is on the rescue list at its safe value
|
|
export function settings_is_safe(settings_st: SettingsState, id: int) -> bool {
|
|
let d = settings_st.sg_defs[id]
|
|
if not d.rescue { return true }
|
|
return settings_st.sg_num[id] == d.num and settings_st.sg_text[id] == d.text
|
|
}
|