trainlist: deleting active trains is no longer allowed
Dieser Commit ist enthalten in:
Ursprung
7516d39e39
Commit
2c67d4bf57
@ -27,6 +27,7 @@
|
||||
#include "../world/getworld.hpp"
|
||||
#include "../core/attributes.hpp"
|
||||
#include "../core/method.tpp"
|
||||
#include "../log/logmessageexception.hpp"
|
||||
#include "../utils/displayname.hpp"
|
||||
|
||||
TrainList::TrainList(Object& _parent, std::string_view parentPropertyName) :
|
||||
@ -37,7 +38,15 @@ TrainList::TrainList(Object& _parent, std::string_view parentPropertyName) :
|
||||
auto& world = getWorld(parent());
|
||||
return Train::create(world, world.getUniqueId("train"));
|
||||
}}
|
||||
, delete_{*this, "delete", std::bind(&TrainList::deleteMethodHandler, this, std::placeholders::_1)}
|
||||
, delete_{*this, "delete",
|
||||
[this](const std::shared_ptr<Train>& train)
|
||||
{
|
||||
if(train->active)
|
||||
{
|
||||
throw LogMessageException(LogMessage::E3002_CANT_DELETE_ACTIVE_TRAIN);
|
||||
}
|
||||
deleteMethodHandler(train);
|
||||
}}
|
||||
{
|
||||
Attributes::addDisplayName(create, DisplayName::List::create);
|
||||
m_interfaceItems.add(create);
|
||||
|
||||
@ -76,7 +76,17 @@ template<class T>
|
||||
inline static void deleteAll(T& objectList)
|
||||
{
|
||||
while(!objectList.empty())
|
||||
{
|
||||
if constexpr(std::is_same_v<T, TrainList>)
|
||||
{
|
||||
if(objectList.front()->active)
|
||||
{
|
||||
objectList.front()->emergencyStop = true;
|
||||
objectList.front()->active = false;
|
||||
}
|
||||
}
|
||||
objectList.delete_(objectList.front());
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<World> World::create()
|
||||
|
||||
@ -178,6 +178,7 @@ enum class LogMessage : uint32_t
|
||||
E2023_SOCKET_IOCTL_FAILED_X = LogMessageOffset::error + 2023,
|
||||
E2024_UNKNOWN_LOCOMOTIVE_MFX_UID_X = LogMessageOffset::error + 2024,
|
||||
E3001_CANT_DELETE_RAIL_VEHICLE_WHEN_IN_ACTIVE_TRAIN = LogMessageOffset::error + 3001,
|
||||
E3002_CANT_DELETE_ACTIVE_TRAIN = LogMessageOffset::error + 3002,
|
||||
E9001_X_DURING_EXECUTION_OF_X_EVENT_HANDLER = LogMessageOffset::error + 9001,
|
||||
E9999_X = LogMessageOffset::error + 9999,
|
||||
|
||||
|
||||
@ -4322,5 +4322,9 @@
|
||||
{
|
||||
"term": "input_map_item.block:identification",
|
||||
"definition": "Identification"
|
||||
},
|
||||
{
|
||||
"term": "message:E3002",
|
||||
"definition": "Can't delete active train"
|
||||
}
|
||||
]
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren