1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00
sapphire/src/servers/sapphire_zone/Zone/HousingZone.cpp

95 lines
2.5 KiB
C++
Raw Normal View History

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,
const std::string& contentName )
: Zone( territoryId, guId, internalName, contentName ),
m_wardNum( wardNum )
2018-07-15 23:59:15 +02:00
{
}
bool Core::HousingZone::init()
{
2018-07-16 11:58:25 +02:00
uint32_t landSetId;
2018-07-15 23:59:15 +02:00
2018-07-16 11:58:25 +02:00
for( landSetId = 0; landSetId < 60; landSetId++ )
2018-07-15 23:59:15 +02:00
{
//TODO: load house information here
}
return true;
}
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
{
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() );
2018-07-16 11:58:25 +02:00
auto wardYardInfoPackage = makeZonePacket< FFXIVIpcWardYardInfo >( player.getId() );
2018-07-15 23:59:15 +02:00
wardInfoPackage->data().wardNum = m_wardNum;
wardInfoPackage->data().zoneId = player.getZoneId();
//TODO: get current WorldId
wardInfoPackage->data().worldId = 67;
//TODO: handle Subdivision
2018-07-16 11:58:25 +02:00
wardInfoPackage->data().subInstance = 1;
2018-07-15 23:59:15 +02:00
2018-07-16 11:58:25 +02:00
for( landSetId = 0; landSetId < 30 ; landSetId++ )
2018-07-15 23:59:15 +02:00
{
2018-07-16 11:58:25 +02:00
wardInfoPackage->data().landSet[landSetId].houseSize = 1;
wardInfoPackage->data().landSet[landSetId].houseState = 1;
2018-07-15 23:59:15 +02:00
}
2018-07-16 11:58:25 +02:00
wardYardInfoPackage->data().unknown1 = 0xFFFFFFFF;
wardYardInfoPackage->data().unknown2 = 0xFFFFFFFF;
wardYardInfoPackage->data().unknown3 = 0xFF;
2018-07-15 23:59:15 +02:00
wardYardInfoPackage->data().packetTotal = 8;
player.queuePacket( wardInfoPackage );
2018-07-16 11:58:25 +02:00
for( yardPacketNum = 0; yardPacketNum < wardYardInfoPackage->data().packetTotal; yardPacketNum++ )
2018-07-15 23:59:15 +02:00
{
//Add Objects here
wardYardInfoPackage->data().packetNum = yardPacketNum;
player.queuePacket( wardYardInfoPackage );
}
}
uint8_t Core::HousingZone::getWardNum() const
{
return m_wardNum;
}