Skip to content

Commit 6087ce1

Browse files
committed
Simulator: send initial state on new connection
1 parent 2136fd5 commit 6087ce1

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

shared/src/traintastic/simulator/simulator.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,7 @@ void Simulator::accept()
698698
if(!ec)
699699
{
700700
m_connections.emplace_back(std::make_shared<SimulatorConnection>(shared_from_this(), std::move(socket)))->start();
701+
sendInitialState(*m_connections.rbegin());
701702
accept();
702703
}
703704
});
@@ -1619,3 +1620,15 @@ Simulator::StaticData Simulator::load(const nlohmann::json& world, StateData& st
16191620

16201621
return data;
16211622
}
1623+
1624+
void Simulator::sendInitialState(const std::shared_ptr<SimulatorConnection> &connection)
1625+
{
1626+
// Send current sensor state
1627+
const size_t count = staticData.sensors.size();
1628+
for(size_t i = 0; i < count; ++i)
1629+
{
1630+
const auto& sensor = staticData.sensors[i];
1631+
auto& sensorState = m_stateData.sensors[i];
1632+
connection->send(SimulatorProtocol::SensorChanged(sensor.channel, sensor.address, sensorState.value));
1633+
}
1634+
}

shared/src/traintastic/simulator/simulator.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ class Simulator : public std::enable_shared_from_this<Simulator>
289289
void accept();
290290
void doReceive();
291291

292+
void sendInitialState(const std::shared_ptr<SimulatorConnection>& connection);
293+
292294
void tick();
293295

294296
void updateTrainPositions();

0 commit comments

Comments
 (0)