2018-07-15 23:59:15 +02:00
|
|
|
#ifndef SAPPHIRE_HOUSINGZONE_H
|
|
|
|
#define SAPPHIRE_HOUSINGZONE_H
|
|
|
|
|
|
|
|
#include "Zone.h"
|
|
|
|
#include "Forwards.h"
|
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
namespace Core
|
2018-07-15 23:59:15 +02:00
|
|
|
{
|
2018-11-11 17:20:47 +01:00
|
|
|
enum class LandPurchaseResult
|
2018-11-10 23:47:19 +01:00
|
|
|
{
|
|
|
|
SUCCESS,
|
|
|
|
ERR_NOT_ENOUGH_GIL,
|
|
|
|
ERR_NOT_AVAILABLE,
|
2018-11-11 17:20:47 +01:00
|
|
|
ERR_NO_MORE_LANDS_FOR_CHAR,
|
2018-11-10 23:47:19 +01:00
|
|
|
ERR_INTERNAL,
|
|
|
|
};
|
|
|
|
|
2018-11-11 17:20:47 +01:00
|
|
|
enum class LandPurchaseMode
|
|
|
|
{
|
|
|
|
FC = 1,
|
|
|
|
PRIVATE = 2,
|
|
|
|
RELOCATE = 4,
|
|
|
|
};
|
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
class HousingZone : public Zone
|
|
|
|
{
|
|
|
|
public:
|
2018-11-01 23:56:43 +01:00
|
|
|
HousingZone( uint8_t landSetId,
|
2018-11-05 23:07:39 +01:00
|
|
|
uint16_t territoryTypeId,
|
2018-11-01 00:18:19 +01:00
|
|
|
uint32_t guId,
|
|
|
|
const std::string& internalName,
|
|
|
|
const std::string& contentName );
|
2018-08-29 21:40:59 +02:00
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
virtual ~HousingZone();
|
2018-08-29 21:40:59 +02:00
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
bool init() override;
|
2018-08-29 21:40:59 +02:00
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
void onPlayerZoneIn( Entity::Player& player ) override;
|
|
|
|
void onUpdate( uint32_t currTime ) override;
|
2018-08-29 21:40:59 +02:00
|
|
|
|
2018-11-04 23:47:10 +01:00
|
|
|
void sendLandSet( Entity::Player& player );
|
2018-11-07 11:56:49 +01:00
|
|
|
void sendLandUpdate( uint8_t landId );
|
2018-11-01 00:18:19 +01:00
|
|
|
bool isPlayerSubInstance( Entity::Player& player );
|
2018-08-29 21:40:59 +02:00
|
|
|
|
2018-11-11 17:20:47 +01:00
|
|
|
LandPurchaseResult purchseLand( Entity::Player& player, uint8_t plot, uint8_t state );
|
2018-11-10 19:00:13 +01:00
|
|
|
|
2018-11-01 00:18:19 +01:00
|
|
|
/* returns current ward number for this zone */
|
2018-11-04 23:47:10 +01:00
|
|
|
uint8_t getWardNum() const;
|
|
|
|
|
|
|
|
uint32_t getLandSetId() const;
|
2018-11-01 23:56:43 +01:00
|
|
|
Core::LandPtr getLand( uint8_t id );
|
2018-11-01 00:18:19 +01:00
|
|
|
|
|
|
|
private:
|
2018-11-01 23:56:43 +01:00
|
|
|
using LandPtrMap = std::unordered_map< uint8_t, Core::LandPtr >;
|
2018-11-04 23:47:10 +01:00
|
|
|
const uint32_t m_landSetMax = 18;
|
2018-11-01 23:56:43 +01:00
|
|
|
LandPtrMap m_landPtrMap;
|
2018-11-04 23:47:10 +01:00
|
|
|
uint8_t m_wardNum;
|
|
|
|
uint32_t m_landSetId;
|
2018-11-01 00:18:19 +01:00
|
|
|
uint32_t m_zoneId;
|
|
|
|
};
|
2018-07-15 23:59:15 +02:00
|
|
|
|
|
|
|
}
|
2018-11-01 00:18:19 +01:00
|
|
|
#endif //SAPPHIRE_HOUSINGZONE_H
|