world: added settings to go online/power on/run on world load

Dieser Commit ist enthalten in:
Reinder Feenstra 2023-12-18 17:17:58 +01:00
Ursprung 373af31565
Commit 09e6798e73
4 geänderte Dateien mit 54 neuen und 1 gelöschten Zeilen

Datei anzeigen

@ -287,6 +287,24 @@ void Traintastic::loadWorldPath(const std::filesystem::path& path)
#endif
settings->lastWorld = world->uuid.value();
Log::log(*this, LogMessage::N1027_LOADED_WORLD_X, world->name.value());
if(world->onlineWhenLoaded)
{
world->online();
}
if(world->powerOnWhenLoaded)
{
if(world->runWhenLoaded)
{
world->run();
}
else
{
world->powerOn();
}
}
}
catch(const LogMessageException& e)
{

Datei anzeigen

@ -127,6 +127,23 @@ World::World(Private /*unused*/) :
name{this, "name", "", PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
scale{this, "scale", WorldScale::H0, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly, [this](WorldScale /*value*/){ updateScaleRatio(); }},
scaleRatio{this, "scale_ratio", 87, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
onlineWhenLoaded{this, "online_when_loaded", false, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::NoScript},
powerOnWhenLoaded{this, "power_on_when_loaded", false, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::NoScript,
[this](bool value)
{
if(!value)
{
runWhenLoaded = false; // can't run without power
}
}},
runWhenLoaded{this, "run_when_loaded", false, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::NoScript,
[this](bool value)
{
if(value)
{
powerOnWhenLoaded = true; // can't run without power
}
}},
decoderControllers{this, "input_controllers", nullptr, PropertyFlags::ReadOnly | PropertyFlags::SubObject | PropertyFlags::NoStore},
inputControllers{this, "input_controllers", nullptr, PropertyFlags::ReadOnly | PropertyFlags::SubObject | PropertyFlags::NoStore},
outputControllers{this, "output_controllers", nullptr, PropertyFlags::ReadOnly | PropertyFlags::SubObject | PropertyFlags::NoStore},
@ -287,6 +304,10 @@ World::World(Private /*unused*/) :
Attributes::addVisible(scaleRatio, false);
m_interfaceItems.add(scaleRatio);
m_interfaceItems.add(onlineWhenLoaded);
m_interfaceItems.add(powerOnWhenLoaded);
m_interfaceItems.add(runWhenLoaded);
Attributes::addObjectEditor(decoderControllers, false);
m_interfaceItems.add(decoderControllers);
Attributes::addObjectEditor(inputControllers, false);

Datei anzeigen

@ -99,6 +99,9 @@ class World : public Object
Property<std::string> name;
Property<WorldScale> scale;
Property<double> scaleRatio;
Property<bool> onlineWhenLoaded;
Property<bool> powerOnWhenLoaded;
Property<bool> runWhenLoaded;
ObjectProperty<ControllerList<DecoderController>> decoderControllers;
ObjectProperty<ControllerList<InputController>> inputControllers;

Datei anzeigen

@ -4394,6 +4394,17 @@
{
"term": "qtapp.about:traintastic_server",
"definition": "About Traintastic server"
},
{
"term": "world:online_when_loaded",
"definition": "Go online when loaded"
},
{
"term": "world:power_on_when_loaded",
"definition": "Power on when loaded"
},
{
"term": "world:run_when_loaded",
"definition": "Run when loaded"
}
]