first commit
This commit is contained in:
97
Minecraft.World/RespawnPacket.cpp
Normal file
97
Minecraft.World/RespawnPacket.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
#include "stdafx.h"
|
||||
#include <iostream>
|
||||
#include "InputOutputStream.h"
|
||||
#include "PacketListener.h"
|
||||
#include "RespawnPacket.h"
|
||||
#include "LevelType.h"
|
||||
|
||||
RespawnPacket::RespawnPacket()
|
||||
{
|
||||
this->dimension = 0;
|
||||
this->difficulty = 1;
|
||||
this->mapSeed = 0;
|
||||
this->mapHeight = 0;
|
||||
this->playerGameType = NULL;
|
||||
this->m_newSeaLevel = false;
|
||||
m_pLevelType = NULL;
|
||||
m_newEntityId = 0;
|
||||
m_xzSize = LEVEL_MAX_WIDTH;
|
||||
m_hellScale = HELL_LEVEL_MAX_SCALE;
|
||||
}
|
||||
|
||||
RespawnPacket::RespawnPacket(char dimension, __int64 mapSeed, int mapHeight, GameType *playerGameType, char difficulty, LevelType *pLevelType, bool newSeaLevel, int newEntityId, int xzSize, int hellScale)
|
||||
{
|
||||
this->dimension = dimension;
|
||||
this->mapSeed = mapSeed;
|
||||
this->mapHeight = mapHeight;
|
||||
this->playerGameType = playerGameType;
|
||||
this->difficulty = difficulty;
|
||||
this->m_newSeaLevel = newSeaLevel;
|
||||
this->m_pLevelType=pLevelType;
|
||||
this->m_newEntityId = newEntityId;
|
||||
m_xzSize = xzSize;
|
||||
m_hellScale = hellScale;
|
||||
app.DebugPrintf("RespawnPacket - Difficulty = %d\n",difficulty);
|
||||
|
||||
}
|
||||
|
||||
void RespawnPacket::handle(PacketListener *listener)
|
||||
{
|
||||
listener->handleRespawn(shared_from_this());
|
||||
}
|
||||
|
||||
void RespawnPacket::read(DataInputStream *dis) //throws IOException
|
||||
{
|
||||
dimension = dis->readByte();
|
||||
playerGameType = GameType::byId(dis->readByte());
|
||||
mapHeight = dis->readShort();
|
||||
wstring typeName = readUtf(dis, 16);
|
||||
m_pLevelType = LevelType::getLevelType(typeName);
|
||||
if (m_pLevelType == NULL)
|
||||
{
|
||||
m_pLevelType = LevelType::lvl_normal;
|
||||
}
|
||||
mapSeed = dis->readLong();
|
||||
difficulty = dis->readByte();
|
||||
m_newSeaLevel = dis->readBoolean();
|
||||
m_newEntityId = dis->readShort();
|
||||
#ifdef _LARGE_WORLDS
|
||||
m_xzSize = dis->readShort();
|
||||
m_hellScale = dis->read();
|
||||
#endif
|
||||
app.DebugPrintf("RespawnPacket::read - Difficulty = %d\n",difficulty);
|
||||
|
||||
}
|
||||
|
||||
void RespawnPacket::write(DataOutputStream *dos) //throws IOException
|
||||
{
|
||||
dos->writeByte(dimension);
|
||||
dos->writeByte(playerGameType->getId());
|
||||
dos->writeShort(mapHeight);
|
||||
if (m_pLevelType == NULL)
|
||||
{
|
||||
writeUtf(L"", dos);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeUtf(m_pLevelType->getGeneratorName(), dos);
|
||||
}
|
||||
dos->writeLong(mapSeed);
|
||||
dos->writeByte(difficulty);
|
||||
dos->writeBoolean(m_newSeaLevel);
|
||||
dos->writeShort(m_newEntityId);
|
||||
#ifdef _LARGE_WORLDS
|
||||
dos->writeShort(m_xzSize);
|
||||
dos->write(m_hellScale);
|
||||
#endif
|
||||
}
|
||||
|
||||
int RespawnPacket::getEstimatedSize()
|
||||
{
|
||||
int length=0;
|
||||
if (m_pLevelType != NULL)
|
||||
{
|
||||
length = (int)m_pLevelType->getGeneratorName().length();
|
||||
}
|
||||
return 13+length;
|
||||
}
|
||||
Reference in New Issue
Block a user