We need to check m_running separate from the server loop as well otherwise it just terminates after we check for a packet.
parent
6231d1ab03
commit
5887f99a74
|
@ -70,57 +70,63 @@ Iris::~Iris() { enet_host_destroy(m_server); }
|
|||
|
||||
void Iris::run()
|
||||
{
|
||||
while (enet_host_service(m_server, &m_event, 50) > 0 && m_running)
|
||||
while (m_running)
|
||||
{
|
||||
switch (m_event.type)
|
||||
while (enet_host_service(m_server, &m_event, 50) > 0 && m_running)
|
||||
{
|
||||
case ENET_EVENT_TYPE_CONNECT:
|
||||
printf("A new client connected from %x:%u.\n",
|
||||
m_event.peer->address.host, m_event.peer->address.port);
|
||||
switch (m_event.type)
|
||||
{
|
||||
auto entity = m_registry->create();
|
||||
m_registry->emplace<User>(entity, "toby", m_event.peer);
|
||||
m_event.peer->data = static_cast<void*>(&entity);
|
||||
m_registry->emplace<Player>(
|
||||
entity, ActorSystem::registerActor(m_registry));
|
||||
}
|
||||
break;
|
||||
case ENET_EVENT_TYPE_CONNECT:
|
||||
printf("A new client connected from %x:%u.\n",
|
||||
m_event.peer->address.host, m_event.peer->address.port);
|
||||
{
|
||||
auto entity = m_registry->create();
|
||||
m_registry->emplace<User>(entity, "toby", m_event.peer);
|
||||
m_event.peer->data = static_cast<void*>(&entity);
|
||||
m_registry->emplace<Player>(
|
||||
entity, ActorSystem::registerActor(m_registry));
|
||||
}
|
||||
break;
|
||||
|
||||
case ENET_EVENT_TYPE_RECEIVE:
|
||||
// printf ("A packet of length %u containing %s
|
||||
// was received from %s on channel %u.\n",
|
||||
// m_event.packet -> dataLength,
|
||||
// m_event.packet -> data,
|
||||
// m_event.peer -> data -> userName,
|
||||
// m_event.channelID);
|
||||
case ENET_EVENT_TYPE_RECEIVE:
|
||||
// printf ("A packet of length %u containing %s
|
||||
// was received from %s on channel %u.\n",
|
||||
// m_event.packet -> dataLength,
|
||||
// m_event.packet -> data,
|
||||
// m_event.peer -> data -> userName,
|
||||
// m_event.channelID);
|
||||
|
||||
switch (m_event.channelID)
|
||||
{
|
||||
case 0:
|
||||
parseEvent(static_cast<entt::entity*>(m_event.peer->data),
|
||||
m_event.packet->data, m_event.packet->dataLength);
|
||||
m_event.packet->data,
|
||||
m_event.packet->dataLength);
|
||||
break;
|
||||
case 1:
|
||||
parseState(static_cast<entt::entity*>(m_event.peer->data),
|
||||
m_event.packet->data, m_event.packet->dataLength);
|
||||
m_event.packet->data,
|
||||
m_event.packet->dataLength);
|
||||
break;
|
||||
case 2:
|
||||
parseMessage(static_cast<entt::entity*>(m_event.peer->data),
|
||||
m_event.packet->data, m_event.packet->dataLength);
|
||||
m_event.packet->data,
|
||||
m_event.packet->dataLength);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Clean up the packet now that we're done using it. */
|
||||
enet_packet_destroy(m_event.packet);
|
||||
break;
|
||||
/* Clean up the packet now that we're done using it. */
|
||||
enet_packet_destroy(m_event.packet);
|
||||
break;
|
||||
|
||||
case ENET_EVENT_TYPE_DISCONNECT:
|
||||
printf("%s disconnected.\n",
|
||||
static_cast<const char*>(m_event.peer->data));
|
||||
break;
|
||||
case ENET_EVENT_TYPE_DISCONNECT:
|
||||
printf("%s disconnected.\n",
|
||||
static_cast<const char*>(m_event.peer->data));
|
||||
break;
|
||||
|
||||
case ENET_EVENT_TYPE_NONE:
|
||||
break;
|
||||
case ENET_EVENT_TYPE_NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue