| | |
| | |
| | |
| |
|
| | #include "common/assert.h" |
| | #include "common/logging/log.h" |
| | #include "enet/enet.h" |
| | #include "network/network.h" |
| |
|
| | namespace Network { |
| |
|
| | static std::shared_ptr<RoomMember> g_room_member; |
| | static std::shared_ptr<Room> g_room; |
| | |
| |
|
| | bool Init() { |
| | if (enet_initialize() != 0) { |
| | LOG_ERROR(Network, "Error initalizing ENet"); |
| | return false; |
| | } |
| | g_room = std::make_shared<Room>(); |
| | g_room_member = std::make_shared<RoomMember>(); |
| | LOG_DEBUG(Network, "initialized OK"); |
| | return true; |
| | } |
| |
|
| | std::weak_ptr<Room> GetRoom() { |
| | return g_room; |
| | } |
| |
|
| | std::weak_ptr<RoomMember> GetRoomMember() { |
| | return g_room_member; |
| | } |
| |
|
| | void Shutdown() { |
| | if (g_room_member) { |
| | if (g_room_member->IsConnected()) |
| | g_room_member->Leave(); |
| | g_room_member.reset(); |
| | } |
| | if (g_room) { |
| | if (g_room->GetState() == Room::State::Open) |
| | g_room->Destroy(); |
| | g_room.reset(); |
| | } |
| | enet_deinitialize(); |
| | LOG_DEBUG(Network, "shutdown OK"); |
| | } |
| |
|
| | } |
| |
|