You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3coop/apps/openmw/mwmp/Networking.hpp

70 lines
1.8 KiB
C++

//
// Created by koncord on 04.01.16.
//
#ifndef OPENMW_NETWORKING_HPP
#define OPENMW_NETWORKING_HPP
#include <RakPeerInterface.h>
#include <BitStream.h>
#include <string>
#include "ActorList.hpp"
#include "WorldEvent.hpp"
#include <components/openmw-mp/NetworkMessages.hpp>
#include <components/openmw-mp/Controllers/PlayerPacketController.hpp>
#include <components/openmw-mp/Controllers/ActorPacketController.hpp>
#include <components/openmw-mp/Controllers/WorldPacketController.hpp>
#include <components/files/collections.hpp>
namespace mwmp
{
class LocalPlayer;
class Networking
{
public:
Networking();
~Networking();
void connect(const std::string& ip, unsigned short port, std::vector<std::string> &content, Files::Collections &collections);
void update();
PlayerPacket *getPlayerPacket(RakNet::MessageID id);
ActorPacket *getActorPacket(RakNet::MessageID id);
WorldPacket *getWorldPacket(RakNet::MessageID id);
RakNet::SystemAddress serverAddress()
{
return serverAddr;
}
bool isConnected();
LocalPlayer *getLocalPlayer();
ActorList *getActorList();
WorldEvent *getWorldEvent();
private:
bool connected;
RakNet::RakPeerInterface *peer;
RakNet::SystemAddress serverAddr;
RakNet::BitStream bsOut;
PlayerPacketController playerPacketController;
ActorPacketController actorPacketController;
WorldPacketController worldPacketController;
ActorList actorList;
WorldEvent worldEvent;
void receiveMessage(RakNet::Packet *packet);
void preInit(std::vector<std::string> &content, Files::Collections &collections);
};
}
#endif //OPENMW_NETWORKING_HPP