server: TurnoutRailTile update from Output state
Also adapt all subclasses
Dieser Commit ist enthalten in:
Ursprung
37b485c7c4
Commit
eb18c16b86
@ -49,6 +49,8 @@ Turnout3WayRailTile::Turnout3WayRailTile(World& world, std::string_view _id)
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
void Turnout3WayRailTile::getConnectors(std::vector<Connector>& connectors) const
|
||||
|
||||
@ -57,6 +57,8 @@ TurnoutDoubleSlipRailTile::TurnoutDoubleSlipRailTile(World& world, std::string_v
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
void TurnoutDoubleSlipRailTile::getConnectors(std::vector<Connector>& connectors) const
|
||||
|
||||
@ -76,4 +76,6 @@ TurnoutLeftRailTile::TurnoutLeftRailTile(World& world, std::string_view _id, Til
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
@ -99,14 +99,25 @@ bool TurnoutRailTile::isValidPosition(TurnoutPosition value)
|
||||
return values->contains(static_cast<int64_t>(value));
|
||||
}
|
||||
|
||||
bool TurnoutRailTile::doSetPosition(TurnoutPosition value)
|
||||
bool TurnoutRailTile::doSetPosition(TurnoutPosition value, bool skipAction)
|
||||
{
|
||||
if(!isValidPosition(value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
(*outputMap)[value]->execute();
|
||||
if(!skipAction)
|
||||
(*outputMap)[value]->execute();
|
||||
position.setValueInternal(value);
|
||||
positionChanged(*this, value);
|
||||
return true;
|
||||
}
|
||||
|
||||
void TurnoutRailTile::connectOutputMap()
|
||||
{
|
||||
outputMap->onOutputStateMatchFound.connect([this](TurnoutPosition pos)
|
||||
{
|
||||
doSetPosition(pos, true);
|
||||
});
|
||||
|
||||
//TODO: disconnect somewhere?
|
||||
}
|
||||
|
||||
@ -43,7 +43,9 @@ class TurnoutRailTile : public RailTile
|
||||
void worldEvent(WorldState state, WorldEvent event) override;
|
||||
|
||||
bool isValidPosition(TurnoutPosition value);
|
||||
virtual bool doSetPosition(TurnoutPosition value);
|
||||
virtual bool doSetPosition(TurnoutPosition value, bool skipAction = false);
|
||||
|
||||
void connectOutputMap();
|
||||
|
||||
public:
|
||||
boost::signals2::signal<void (const TurnoutRailTile&, TurnoutPosition)> positionChanged;
|
||||
|
||||
@ -76,4 +76,6 @@ TurnoutRightRailTile::TurnoutRightRailTile(World& world, std::string_view _id, T
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
@ -55,6 +55,8 @@ TurnoutSingleSlipRailTile::TurnoutSingleSlipRailTile(World& world, std::string_v
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
void TurnoutSingleSlipRailTile::getConnectors(std::vector<Connector>& connectors) const
|
||||
|
||||
@ -49,6 +49,8 @@ TurnoutWyeRailTile::TurnoutWyeRailTile(World& world, std::string_view _id)
|
||||
|
||||
Attributes::addValues(setPosition, setPositionValues);
|
||||
m_interfaceItems.add(setPosition);
|
||||
|
||||
connectOutputMap();
|
||||
}
|
||||
|
||||
void TurnoutWyeRailTile::getConnectors(std::vector<Connector>& connectors) const
|
||||
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren