Without reading them in detailed atm, looks like you are both multiplying based on the aspect, right? My concern there is you might not always want an object to be the same fixed scale for one aspect as you do another. Of course, you could do an if/else or something, but again you are going to be searching all through your code to change things.
Scaling up or down is nice, but if you are using the same values you multiply the aspect by, things are still being "stretched" on different aspects, right? That's another reason why I suggested fixed settings for different aspects, but having a 'default' that it falls back on. The default value could be aspect * defaultvalue, but then if you wanted you could specify different values for other aspects / resolutions.
SETTINGS <- {
//every setting MUST be defined in default (this will be the fallback value)
"default": {
"width": 640,
"height": 480,
"logo": { src = ResourcePath("bg.png"), x = 0, y = 0, width = aspect * 1.0, height = aspect * 1.0 },
"title": { x = 0, y = aspect * 0.02, width = aspect * 1.0, height = aspect * 0.1 },
"fontName": "Arial",
"animate_wheel": false
},
//aspect-resolution specific values can be added for each
"720p": {
"width": 1280,
"height": 720,
"title": { x = 0, y = 0, width = 1280, height = 30 },
"animate_wheel": true
},
"1080p": {
"width": 1920,
"height": 1080
}
}
local title = fe.add_text( "[Title]", Setting.title.x, Setting.title.y, Setting.title.width, Setting.title.height );
If you use this, all your values are in one spot and the add_text is not very confusing because it's just whatever value is in Settings. Plus this would allow you to automatically pull resources from a ResourcePath("4x3/bg.png") for aspect specific resources. You can have a nice wide bg for widescreen and a fitting standard aspect for 4:3.
Again, a lot of this is personal preference. I think it will save a lot of headache when you want to adjust the look of the theme if you have all your settings in one spot. It would allow users to go in and adjust to their liking and you could easily make variations with a multiple settings tables, using the correct values based on a config option.