74 lines
1.9 KiB
Lua
74 lines
1.9 KiB
Lua
local DEFAULT_CONFIG = {
|
|
screen = {
|
|
width = 240,
|
|
height = 136
|
|
},
|
|
colors = {
|
|
black = 0,
|
|
light_grey = 13,
|
|
dark_grey = 14,
|
|
green = 6,
|
|
npc = 8,
|
|
item = 12 -- yellow
|
|
},
|
|
player = {
|
|
w = 8,
|
|
h = 8,
|
|
start_x = 120,
|
|
start_y = 128,
|
|
sprite_id = 1
|
|
},
|
|
physics = {
|
|
gravity = 0.5,
|
|
jump_power = -5,
|
|
move_speed = 1.5,
|
|
max_jumps = 2,
|
|
interaction_radius_npc = 12,
|
|
interaction_radius_item = 8
|
|
},
|
|
timing = {
|
|
splash_duration = 120
|
|
}
|
|
}
|
|
|
|
local Config = {
|
|
-- Copy default values initially
|
|
screen = DEFAULT_CONFIG.screen,
|
|
colors = DEFAULT_CONFIG.colors,
|
|
player = DEFAULT_CONFIG.player,
|
|
physics = DEFAULT_CONFIG.physics,
|
|
timing = DEFAULT_CONFIG.timing,
|
|
}
|
|
|
|
local CONFIG_SAVE_BANK = 7
|
|
local CONFIG_SAVE_ADDRESS_MOVE_SPEED = 0
|
|
local CONFIG_SAVE_ADDRESS_MAX_JUMPS = 1
|
|
local CONFIG_MAGIC_VALUE_ADDRESS = 2
|
|
local CONFIG_MAGIC_VALUE = 0xDE -- A magic number to check if config is saved
|
|
|
|
function Config.save()
|
|
-- Save physics settings
|
|
mset(Config.physics.move_speed * 10, CONFIG_SAVE_ADDRESS_MOVE_SPEED, CONFIG_SAVE_BANK)
|
|
mset(Config.physics.max_jumps, CONFIG_SAVE_ADDRESS_MAX_JUMPS, CONFIG_SAVE_BANK)
|
|
mset(CONFIG_MAGIC_VALUE, CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) -- Mark as saved
|
|
end
|
|
|
|
function Config.load()
|
|
-- Check if config has been saved before using a magic value
|
|
if mget(CONFIG_MAGIC_VALUE_ADDRESS, CONFIG_SAVE_BANK) == CONFIG_MAGIC_VALUE then
|
|
Config.physics.move_speed = mget(CONFIG_SAVE_ADDRESS_MOVE_SPEED, CONFIG_SAVE_BANK) / 10
|
|
Config.physics.max_jumps = mget(CONFIG_SAVE_ADDRESS_MAX_JUMPS, CONFIG_SAVE_BANK)
|
|
else
|
|
Config.restore_defaults()
|
|
end
|
|
end
|
|
|
|
function Config.restore_defaults()
|
|
Config.physics.move_speed = DEFAULT_CONFIG.physics.move_speed
|
|
Config.physics.max_jumps = DEFAULT_CONFIG.physics.max_jumps
|
|
-- Any other configurable items should be reset here
|
|
end
|
|
|
|
-- Load configuration on startup
|
|
Config.load()
|