Files
2022-10-26 12:25:11 +08:00

203 lines
7.8 KiB
C++

#pragma once
#ifdef _NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL
namespace GuildSystem{
class GuildSystemData
{
public:
enum GuildMemberSortType
{
kSortByName,
kSortByLevel,
kSortByClass,
kSortByDuty,
kSortByGuildCoin,
kSortByLogin,
kMaxType,
};
struct GuildLogInfo
{
DWORD guild_log_category;
GuildInGameLogData guild_log_data;
};
struct GuildInfoForClient
{
GAME_GUILD_INFO game_guild_info_;
GUILD_INFO_EXTRA guild_info_extra_;
GuildInfoForClient(GAME_GUILD_INFO game_guild_info, GUILD_INFO_EXTRA guild_info_extra)
:game_guild_info_(game_guild_info), guild_info_extra_(guild_info_extra)
{
}
};
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
struct GuildFacilityInfoForClient
{
FCODE facility_code_;
FLEVEL facility_level_;
bool facility_active_;
GuildFacilityInfoForClient()
{
facility_code_ = 0;
facility_level_ = 0;
facility_active_ = false;
}
};
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
typedef STLX_VECTOR<GUILD_MEMBER_INFO> GuildMemberContainer;
typedef STLX_VECTOR<GUILD_RELATION> GuildRelationContainer;
typedef STLX_LIST<STRUCT_GUILDWAREHOUSE_LOGINFO> GuildWareHouseLogContainer;
typedef STLX_MULTIMAP<INT64, GuildLogInfo, std::greater<INT64> > GuildLogInfoContainer;
typedef STLX_VECTOR<GUILD_RANKING_INFO> GuildRankingInfoContainer;
typedef STLX_MAP<GUILDGUID, GuildInfoForClient> GuildRankingGuildInfoContainer;
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
typedef STLX_VECTOR<GUILD_JOIN_REQUEST_INFO> GuildJoinRequestInfoContainer;
typedef STLX_MAP<FCODE, GuildFacilityInfoForClient> GuildFacilityContainer;
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
public:
GuildSystemData();
~GuildSystemData();
void Clear();
// 기본 길드 정보
void SetGuildInfo(GUILD_INFO& guild_info);
GUILD_INFO& GetGuildInfo() { return guild_info_; }
bool is_recv_guild_info() const { return recv_guild_info_; }
bool is_recv_total_info() const { return recv_total_info_; }
// 길드원 정보
void SetGuildMemberInfo(GUILD_MEMBER_TOTAL_INFO& guild_total_member_info);
void AddGuildMemberInfo(GUILD_MEMBER_INFO& add_member_info);
void DeleteGuildMemberInfo(TCHAR* member_name);
GUILD_MEMBER_INFO* GetGuildMemberInfo(const TCHAR* member_name);
GUILD_MEMBER_INFO* GetGuildMemberInfo(CHARGUID member_guid);
void SortGuildMember(GuildMemberSortType sort_type);
// 길드명
void SetGuildName(const char* guild_name);
const char* GetGuildName() { return guild_name_.c_str(); }
// 길드마스터
void SetMasterName(const char* master_name);
const char* GetMasterName() { return master_name_.c_str(); }
// 길드멤버
GuildMemberContainer& guild_member_container() { return guild_member_container_; }
// 길드마크 텍스쳐
void LoadGuildMarkTexture();
HANDLE GetGuildMarkTexture();
// 길드 관계
void SetGuildRelationInfo(BASE_GUILD_ADD_INFO& guild_add_info);
void AddGuildRelation(GUILD_RELATION& guild_relation);
void DeleteGuildRelation(GUILD_RELATION& guild_relation);
void DeleteGuildRelation(GUILDGUID guild_guid, eGUILD_RELATION guild_relation);
GUILD_RELATION* GetGuildRelation(GUILDGUID guild_guid);
GUILD_RELATION* GetGuildRelation(const TCHAR* guild_name);
void GetRelationGuildName(GUILDGUID guild_guid, TCHAR* OUT guild_name);
void ClearGuildRelation();
GUILDGUID GetGuildGUID(const TCHAR* guild_name);
bool IsHaveGuildRelation();
int GetRelationProclaimCount(); // 적대선포한 횟수
// 길드로그
void ClearWareHouseLog();
void AddWareHouseLog(STRUCT_GUILDWAREHOUSE_LOGINFO* warehouse_log_info, DWORD num_of_log);
void ClearGuildLog();
void AddGuildLog(DWORD guild_log_category, GuildInGameLogData* guild_log_data, DWORD num_of_log);
// 길드랭킹
void AddGuildRankingInfo(GUILD_RANKING_INFO* guild_ranking_info, int num_of_info);
WORD guild_rank() const { return guild_rank_; }
void set_guild_rank(WORD value) { guild_rank_ = value; }
#ifdef _NA_004034_20120102_GUILD_INTRODUCTION
void set_guild_intro(TCHAR* string) { strncpy(guild_intro_, string, MAX_GUILD_INTRODUCTION_LENGTH+1); }
TCHAR* guild_intro(){ return guild_intro_; }
#endif//_NA_004034_20120102_GUILD_INTRODUCTION
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
void set_guild_join_request_total_info_(GUILD_JOIN_REQUEST_TOTAL_INFO* guild_join_request_total_info);
bool get_guildname_for_guild_join_request(const GUILDGUID& guild_guid, OUT TCHAR* guild_name);
void init_guild_facility_container();
void set_guild_facility_container(const GUILD_FACILITY_TOTAL_INFO& facility_total_info);
void set_element_guild_facility(const GUILD_FACILITY_INFO& facility_info);
void set_element_guild_facility_active(const FCODE& facility_code, const bool& is_active);
bool get_guild_facility_info(const FCODE& facility_code, OUT GuildFacilityInfoForClient& facility_info);
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
GuildRelationContainer& alliance_container() { return alliance_container_; }
GuildRelationContainer& hostility_container() { return hostility_container_; }
GuildRelationContainer& wait_hostility_container() { return wait_hostility_container_; }
GuildWareHouseLogContainer& wareshoue_deposit_log() { return wareshoue_deposit_log_; }
GuildWareHouseLogContainer& wareshoue_withdraw_log() { return wareshoue_withdraw_log_; }
GuildLogInfoContainer& guild_log_info_container() { return guild_log_info_container_; }
GuildRankingInfoContainer& guild_ranking_info_container() { return guild_ranking_info_container_; }
GuildRankingGuildInfoContainer& guild_ranking_guild_info_container() { return guild_ranking_guild_info_container_; }
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
GuildJoinRequestInfoContainer& guild_join_request_info_container() { return guild_join_request_info_container_; }
GuildFacilityContainer& guild_facility_container() { return guild_facility_container_; }
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
DWORD& verify_dialog_key() { return verify_dialog_key_; }
#ifdef _NA_008334_20150608_SONNENSCHEIN
BYTE get_sonnenschein_phase();
void set_sonnenschein_phase(BYTE phase) { GetGuildInfo().sonnenschein_phase_ = phase; }
#endif //_NA_008334_20150608_SONNENSCHEIN
private:
void set_recv_guild_info(bool value) { recv_guild_info_ = value; }
void set_recv_total_info(bool value) { recv_total_info_ = value; }
private:
bool recv_guild_info_;
bool recv_total_info_;
GUILD_INFO guild_info_;
WORD guild_rank_;
GuildMemberContainer guild_member_container_;
STLX_STRING guild_name_;
STLX_STRING master_name_;
HANDLE guild_mark_texture_;
TCHAR guild_intro_[MAX_GUILD_INTRODUCTION_LENGTH+1];
// 길드관계
GuildRelationContainer alliance_container_;
GuildRelationContainer hostility_container_;
GuildRelationContainer wait_hostility_container_;
// 길드로그
GuildWareHouseLogContainer wareshoue_deposit_log_;
GuildWareHouseLogContainer wareshoue_withdraw_log_;
GuildLogInfoContainer guild_log_info_container_;
// 길드랭킹
GuildRankingInfoContainer guild_ranking_info_container_;
GuildRankingGuildInfoContainer guild_ranking_guild_info_container_;
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
// 길드 가입 요청 목록
GuildJoinRequestInfoContainer guild_join_request_info_container_;
GuildFacilityContainer guild_facility_container_;
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
// 안내창 다이얼로그 키
DWORD verify_dialog_key_;
};
GuildSystemData& GetGuildSystemData();
}; //namespace GuildSystem
#endif //_NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL