Add ability to set shader from command line

このコミットが含まれているのは:
remutro 2023-01-01 16:32:17 -05:00 committed by Luke Usher
コミット d40b890d83
4個のファイルの変更35行の追加3行の削除

ファイルの表示

@ -77,6 +77,7 @@ Usage: ./ares [options] game
--help Displays available options and exit
--fullscreen Start in full screen mode
--system system Specify the system name
--shader shader Specify GLSL shader name to load (requires OpenGL driver)
```
The --system option is useful when the system type cannot be auto-detected.

ファイルの表示

@ -59,6 +59,10 @@ auto nall::main(Arguments arguments) -> void {
program.startSystem = system;
}
if(string shader; arguments.take("--shader", shader)) {
program.startShader = shader;
}
for(auto argument : arguments) {
if(file::exists(argument)) program.startGameLoad = argument;
}

ファイルの表示

@ -508,11 +508,37 @@ auto Presentation::loadShaders() -> void {
}
}
if(settings.video.shader == "None") none.setChecked();
if(settings.video.shader == "Blur") blur.setChecked();
if(program.startShader) {
string existingShader = settings.video.shader;
if(!program.startShader.imatch("None") &&
!program.startShader.imatch("Blur")) {
settings.video.shader = {location, program.startShader, ".shader/"};
} else {
settings.video.shader = program.startShader;
}
if(inode::exists(settings.video.shader) ||
settings.video.shader.imatch("None") ||
settings.video.shader.imatch("Blur")) {
ruby::video.setShader(settings.video.shader);
} else {
hiro::MessageDialog()
.setTitle("Warning")
.setAlignment(hiro::Alignment::Center)
.setText({ "Requested shader not found: ", settings.video.shader , "\nUsing existing defined shader: ", existingShader })
.warning();
settings.video.shader = existingShader;
}
}
if(settings.video.shader.imatch("None")) {none.setChecked(); settings.video.shader = "None";}
if(settings.video.shader.imatch("Blur")) {blur.setChecked(); settings.video.shader = "Blur";}
for(auto item : shaders.objects<MenuRadioItem>()) {
if(settings.video.shader == string{location, item.text(), ".shader/"}) {
string fullPath = {location, item.text(), ".shader/"};
if(settings.video.shader.imatch(fullPath)) {
item.setChecked();
settings.video.shader = fullPath;
}
}
}

ファイルの表示

@ -51,6 +51,7 @@ struct Program : ares::Platform {
bool startFullScreen = false;
string startGameLoad;
string startSystem;
string startShader;
vector<ares::Node::Video::Screen> screens;
vector<ares::Node::Audio::Stream> streams;