mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 14:37:44 +00:00
95 lines
2.3 KiB
C++
95 lines
2.3 KiB
C++
![]() |
#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;
|
||
|
|
||
|
Core::HousingZone::HousingZone(uint8_t wardNum,
|
||
|
uint16_t territoryId,
|
||
|
uint32_t guId,
|
||
|
const std::string& internalName,
|
||
|
const std::string& contentName)
|
||
|
: Zone(territoryId, guId, internalName, contentName),
|
||
|
m_wardNum( wardNum )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
bool Core::HousingZone::init()
|
||
|
{
|
||
|
uint32_t LandSetId;
|
||
|
|
||
|
for ( LandSetId = 0; LandSetId < 60; LandSetId++ )
|
||
|
{
|
||
|
//TODO: load house information here
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
Core::HousingZone::~HousingZone()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
void Core::HousingZone::onPlayerZoneIn(Entity::Player& player)
|
||
|
{
|
||
|
auto pLog = g_fw.get< Logger >();
|
||
|
pLog->debug( "HousingZone::onPlayerZoneIn: Zone#" + std::to_string(getGuId()) + "|" +
|
||
|
+ ", Entity#" + std::to_string( player.getId() ) );
|
||
|
|
||
|
uint32_t landSetId;
|
||
|
uint32_t yardPacketNum;
|
||
|
|
||
|
auto wardInfoPackage = makeZonePacket< FFXIVIpcWardInfo >( player.getId() );
|
||
|
auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >(player.getId());
|
||
|
|
||
|
wardInfoPackage->data().wardNum = m_wardNum;
|
||
|
wardInfoPackage->data().zoneId = player.getZoneId();
|
||
|
//TODO: get current WorldId
|
||
|
wardInfoPackage->data().worldId = 67;
|
||
|
//TODO: handle Subdivision
|
||
|
wardInfoPackage->data().SubInstance = 1;
|
||
|
|
||
|
for (landSetId = 0; landSetId < 30 ; landSetId++)
|
||
|
{
|
||
|
wardInfoPackage->data().landSet[landSetId].HouseSize = 1;
|
||
|
wardInfoPackage->data().landSet[landSetId].HouseState = 1;
|
||
|
}
|
||
|
|
||
|
wardYardInfoPackage->data().pad1 = 0xFFFFFFFF;
|
||
|
wardYardInfoPackage->data().pad2 = 0xFFFFFFFF;
|
||
|
wardYardInfoPackage->data().pad3 = 0xFF;
|
||
|
wardYardInfoPackage->data().packetTotal = 8;
|
||
|
|
||
|
player.queuePacket( wardInfoPackage );
|
||
|
|
||
|
for (yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++)
|
||
|
{
|
||
|
//Add Objects here
|
||
|
wardYardInfoPackage->data().packetNum = yardPacketNum;
|
||
|
|
||
|
player.queuePacket( wardYardInfoPackage );
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
uint8_t Core::HousingZone::getWardNum() const
|
||
|
{
|
||
|
return m_wardNum;
|
||
|
}
|