Files
Sun1602/Server/GameServer/DominationArea.h
T
2022-10-26 12:25:11 +08:00

183 lines
4.5 KiB
C++

#pragma once
/*
拥有占领前地区信息管理类、DominationAuction.
*/
#ifndef DOMINATION_AREA_H
#define DOMINATION_AREA_H
#ifdef _NA001385_20090924_DOMINATION
#include "DominationAuction.h"
#include "DominationMember.h"
class DominationArea
{
public:
DominationArea(MAPCODE map_code);
~DominationArea();
//占领战基本/拍卖信息加载状态确认
bool IsLoaded()const;
//Data Load请求
void DataLoad()const;
//占领战情报SET
void SetInfo(const DOMINATION_INFO& domination_info);
#ifdef _NA_006826_20130722_DOMINATION_RENEWAL
void SetInfo(const DOMINATION_INFO& domination_info, const eDOMINATION_EVENT_STATE domi_state);
#endif //_NA_006826_20130722_DOMINATION_RENEWAL
//占领战信息Update
void UpdateInfo(const DOMINATION_INFO& domination_info);
//获取占领战基本信息
const DOMINATION_INFO& GetInfo()const;
//占领战基本信息访问
DOMINATION_INFO& GetInfo();
//本地地图代码
MAPCODE GetMapCode()const;
//屏障点交易标志值设置
void SetTransactionToDeffenseWall(bool set_value);
//是否可以增加障碍点?
bool CanIncreaseDeffenseWall()const;
//获取本地拍卖类实例
DominationAuction* GetAuction();
const DominationAuction* GetAuction()const;
const RC::eDOMINATION_RESULT CanJoinMember(const GUILDGUID guild_guid, const CHARGUID char_guid)const;
//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
//获取本地成员类实例
DominationMember* GetMember();
const DominationMember* GetMember()const;
//GUILDGUID 参与征服战争
bool IsDeffenseGuild(GUILDGUID guild_guid)const;
bool IsAttackGuild(GUILDGUID guild_guid)const;
bool IsApplyGuild(GUILDGUID guild_guid)const;
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
//这是当前地图上以前占领的公会吗??
bool IsPrevInGuild(GUILDGUID guild_guid)const;
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
//GUILDGUID对应的公会是否存在于职业或攻击公会中??
bool ExistGuild(GUILDGUID guild_guid)const;
//入职前地区信息变更(公会标志、公会名称、公会会长)
void ChangeGuildMark(GUILDGUID guild_guid, GUILDMARKIDX pattern_index, GUILDMARKIDX background_index);
void ChangeGuildName(GUILDGUID guild_guid, TCHAR* guild_name);
void ChangeGuildMaster(GUILDGUID guild_guid, TCHAR* master_name);
#ifdef _NA_006826_20130722_DOMINATION_RENEWAL
eDOMINATION_PROGRESS_STATE GetAreaProgressState() { return domination_info_.progress_state_; }
void ChangeAreaProgressState(const eDOMINATION_PROGRESS_STATE area_state);
#endif //_NA_006826_20130722_DOMINATION_RENEWAL
private:
//is_load_data_ 访问方法
bool _IsLoadData()const;
void _IsLoadData(bool set_value);
//占用前请求加载信息
void _RequestData()const;
//GUILDGUID 返回公会对应的公会(占领或攻击)信息的指针。
DOMINATION_BASIC_GUILD_INFO* _WhatGuild(GUILDGUID guild_guid);
private:
MAPCODE map_code_;
DOMINATION_INFO domination_info_;//占领战基本信息
bool transaction_increase_deffense_wall_; //与屏障更新相关的事务标志
bool is_load_data_;//占领战基本信息加载状态
DominationAuction auction_;//拍卖
//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
DominationMember member_;//占领战成员
#ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION
//DOMINATION INFO拥有太大(要从DBP开始考虑同步)
//该信息不需要存储在DB中,只在蒙特夏恩占领战时使用,因此在该类中作为成员
DOMINATION_BASIC_GUILD_INFO m_PrevInGuildInfo; //先前占领帮派信息
#endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION
};
inline void
DominationArea::UpdateInfo(const DOMINATION_INFO& domination_info)
{
domination_info_ = domination_info;
}
inline const DOMINATION_INFO&
DominationArea::GetInfo() const
{
return domination_info_;
}
inline DOMINATION_INFO&
DominationArea::GetInfo()
{
return domination_info_;
}
inline void
DominationArea::SetTransactionToDeffenseWall(bool set_value)
{
transaction_increase_deffense_wall_ = set_value;
}
inline bool
DominationArea::_IsLoadData()const
{
return is_load_data_;
}
inline void
DominationArea::_IsLoadData(bool set_value)
{
is_load_data_ = set_value;
}
inline bool
DominationArea::IsLoaded()const
{
//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
return _IsLoadData() && auction_.IsLoaded() && member_.IsLoaded();
}
inline MAPCODE
DominationArea::GetMapCode()const
{
return map_code_;
}
inline DominationAuction*
DominationArea::GetAuction()
{
return &auction_;
}
inline const DominationAuction*
DominationArea::GetAuction()const
{
return &auction_;
}
//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
inline DominationMember*
DominationArea::GetMember()
{
return &member_;
}
inline const DominationMember*
DominationArea::GetMember()const
{
return &member_;
}
#endif//_NA001385_20090924_DOMINATION
#endif//DOMINATION_AREA_H