Add ability to set shader from command line
このコミットが含まれているのは:
コミット
d40b890d83
|
@ -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;
|
||||
|
|
読み込み中…
新しいイシューから参照