2018-07-15 23:59:15 +02:00
|
|
|
#include <Common.h>
|
|
|
|
#include <Logging/Logger.h>
|
|
|
|
#include <Util/Util.h>
|
|
|
|
#include <Util/UtilMath.h>
|
|
|
|
|
|
|
|
#include <Network/GamePacketNew.h>
|
|
|
|
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
|
|
|
|
|
|
|
#include "Actor/Player.h"
|
|
|
|
|
|
|
|
#include "Forwards.h"
|
|
|
|
#include "HousingZone.h"
|
|
|
|
#include "Framework.h"
|
|
|
|
|
|
|
|
extern Core::Framework g_fw;
|
|
|
|
|
|
|
|
using namespace Core::Common;
|
|
|
|
using namespace Core::Network::Packets;
|
|
|
|
using namespace Core::Network::Packets::Server;
|
|
|
|
|
2018-07-16 11:58:25 +02:00
|
|
|
Core::HousingZone::HousingZone( uint8_t wardNum,
|
|
|
|
uint16_t territoryId,
|
|
|
|
uint32_t guId,
|
|
|
|
const std::string& internalName,
|
2018-07-16 12:37:04 +02:00
|
|
|
const std::string& contentName ) :
|
2018-08-29 21:40:59 +02:00
|
|
|
Zone( territoryId, guId, internalName, contentName ),
|
|
|
|
m_wardNum( wardNum )
|
2018-07-15 23:59:15 +02:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bool Core::HousingZone::init()
|
|
|
|
{
|
2018-08-29 21:40:59 +02:00
|
|
|
uint32_t landSetId;
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
for( landSetId = 0; landSetId < 60; landSetId++ )
|
|
|
|
{
|
|
|
|
//TODO: load house information here
|
|
|
|
}
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
return true;
|
2018-07-15 23:59:15 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Core::HousingZone::~HousingZone()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-07-16 11:58:25 +02:00
|
|
|
void Core::HousingZone::onPlayerZoneIn( Entity::Player& player )
|
2018-07-15 23:59:15 +02:00
|
|
|
{
|
2018-08-29 21:40:59 +02:00
|
|
|
auto pLog = g_fw.get< Logger >();
|
|
|
|
pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string( getGuId() ) + "|" +
|
|
|
|
+", Entity#" + std::to_string( player.getId() ) );
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
uint32_t landSetId;
|
|
|
|
uint32_t yardPacketNum;
|
|
|
|
uint32_t yardPacketTotal = 8;
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
auto wardInfoPacket = makeZonePacket< FFXIVIpcWardInfo >( player.getId() );
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
wardInfoPacket->data().wardNum = m_wardNum;
|
|
|
|
wardInfoPacket->data().zoneId = player.getZoneId();
|
|
|
|
//TODO: get current WorldId
|
|
|
|
wardInfoPacket->data().worldId = 67;
|
|
|
|
//TODO: handle Subdivision
|
|
|
|
wardInfoPacket->data().subInstance = 1;
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
for( landSetId = 0; landSetId < 30; landSetId++ )
|
|
|
|
{
|
|
|
|
wardInfoPacket->data().landSet[ landSetId ].houseSize = 1;
|
|
|
|
wardInfoPacket->data().landSet[ landSetId ].houseState = 1;
|
|
|
|
}
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
player.queuePacket( wardInfoPacket );
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
for( yardPacketNum = 0; yardPacketNum < yardPacketTotal; yardPacketNum++ )
|
|
|
|
{
|
|
|
|
auto wardYardInfoPacket = makeZonePacket< FFXIVIpcWardYardInfo >( player.getId() );
|
|
|
|
wardYardInfoPacket->data().unknown1 = 0xFFFFFFFF;
|
|
|
|
wardYardInfoPacket->data().unknown2 = 0xFFFFFFFF;
|
|
|
|
wardYardInfoPacket->data().unknown3 = 0xFF;
|
|
|
|
wardYardInfoPacket->data().packetNum = yardPacketNum;
|
|
|
|
wardYardInfoPacket->data().packetTotal = yardPacketTotal;
|
2018-07-16 12:37:04 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
//TODO: Add Objects here
|
2018-07-15 23:59:15 +02:00
|
|
|
|
2018-08-29 21:40:59 +02:00
|
|
|
player.queuePacket( wardYardInfoPacket );
|
|
|
|
}
|
2018-07-15 23:59:15 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t Core::HousingZone::getWardNum() const
|
|
|
|
{
|
2018-08-29 21:40:59 +02:00
|
|
|
return m_wardNum;
|
2018-07-15 23:59:15 +02:00
|
|
|
}
|