forked from Kolyah35/minecraft-pe-0.6.1
the whole game
This commit is contained in:
107
src/network/ClientSideNetworkHandler.h
Executable file
107
src/network/ClientSideNetworkHandler.h
Executable file
@@ -0,0 +1,107 @@
|
||||
#ifndef _MINECRAFT_NETWORK_CLIENTSIDENETWORKHANDLER_H_
|
||||
#define _MINECRAFT_NETWORK_CLIENTSIDENETWORKHANDLER_H_
|
||||
|
||||
|
||||
#include "NetEventCallback.h"
|
||||
#include "../raknet/RakNetTypes.h"
|
||||
#include "../world/level/LevelConstants.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class Minecraft;
|
||||
class Level;
|
||||
class IRakNetInstance;
|
||||
|
||||
struct SBufferedBlockUpdate
|
||||
{
|
||||
int x, z;
|
||||
unsigned char y;
|
||||
unsigned char blockId;
|
||||
unsigned char blockData;
|
||||
bool setData;
|
||||
};
|
||||
typedef std::vector<SBufferedBlockUpdate> BlockUpdateList;
|
||||
|
||||
typedef struct IntPair {
|
||||
int x, y;
|
||||
} IntPair;
|
||||
|
||||
class ClientSideNetworkHandler : public NetEventCallback
|
||||
{
|
||||
public:
|
||||
ClientSideNetworkHandler(Minecraft* minecraft, IRakNetInstance* raknetInstance);
|
||||
virtual ~ClientSideNetworkHandler();
|
||||
|
||||
virtual void levelGenerated(Level* level);
|
||||
|
||||
virtual void onConnect(const RakNet::RakNetGUID& hostGuid);
|
||||
virtual void onUnableToConnect();
|
||||
virtual void onDisconnect(const RakNet::RakNetGUID& guid);
|
||||
|
||||
virtual void handle(const RakNet::RakNetGUID& source, LoginStatusPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, StartGamePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, MessagePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SetTimePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AddItemEntityPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AddPaintingPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, TakeItemEntityPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AddEntityPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AddMobPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AddPlayerPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, RemoveEntityPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, RemovePlayerPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, MovePlayerPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, MoveEntityPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, UpdateBlockPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ExplodePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, LevelEventPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, TileEventPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, EntityEventPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ChunkDataPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, PlayerEquipmentPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, PlayerArmorEquipmentPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, InteractPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SetEntityDataPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SetEntityMotionPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SetHealthPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SetSpawnPositionPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AnimatePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, UseItemPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, HurtArmorPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, RespawnPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerOpenPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerClosePacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerSetContentPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerSetSlotPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ContainerSetDataPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, ChatPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, AdventureSettingsPacket* packet);
|
||||
virtual void handle(const RakNet::RakNetGUID& source, SignUpdatePacket* packet);
|
||||
private:
|
||||
|
||||
void requestNextChunk();
|
||||
void arrangeRequestChunkOrder();
|
||||
|
||||
bool isChunkLoaded(int x, int z);
|
||||
bool areAllChunksLoaded();
|
||||
void clearChunksLoaded();
|
||||
private:
|
||||
|
||||
Minecraft* minecraft;
|
||||
Level* level;
|
||||
IRakNetInstance* raknetInstance;
|
||||
RakNet::RakPeerInterface* rakPeer;
|
||||
|
||||
RakNet::RakNetGUID serverGuid;
|
||||
|
||||
BlockUpdateList bufferedBlockUpdates;
|
||||
int requestNextChunkPosition;
|
||||
|
||||
static const int NumRequestChunks = CHUNK_CACHE_WIDTH * CHUNK_CACHE_WIDTH;
|
||||
|
||||
int requestNextChunkIndex;
|
||||
IntPair requestNextChunkIndexList[NumRequestChunks];
|
||||
bool chunksLoaded[NumRequestChunks];
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user