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

153 lines
3.2 KiB
C++

#pragma once
#ifndef DBPROXY_GUILD_CORPS_H
#define DBPROXY_GUILD_CORPS_H
/**********************************************/
/* 길드 군단
/* 길드 군단의 최대 인원은 20명 이다.
/* 길드 군단은 1명의 군단장, 1명의 훈련대장, 5명의 훈련병, 13명의 정예병으로 이루어 질 수 있다.
/**********************************************/
#include <map>
#include "Services/Guild/GuildMember.h"
typedef std::map< CHARGUID, GuildMember*> CorpsMemberMap;
typedef std::map< std::string, GuildMember*> CorpsMemberStringMap;
class GuildCorps
{
public:
GuildCorps(void);
~GuildCorps(void);
public:
void Destroy();
void SerializeBaseMemberTotalInfo(
INOUT BASE_GUILD_MEMBER_TOTAL_INFO& base_member_total_info,
eSERIALIZE se
);
void SerializeMemberTotalInfo(
INOUT GUILD_MEMBER_TOTAL_INFO& member_total_info,
eSERIALIZE se
);
void SerializeServerMemberTotalInfo(
INOUT SERVER_GUILD_MEMBER_TOTAL_INFO& server_member_total_info,
eSERIALIZE se
);
void SetGuid(DWORD corps_guid);
DWORD GetGuid();
void SetNumber(BYTE corps_number);
BYTE GetNumber();
BYTE GetMemberCount();
//현재 새로 길드에 가입시 이 함수를 쓴다.( GuildMember 객체 자체를 소멸시킨다. )
GuildMember* CreateMember(
CHARGUID char_guid,
const TCHAR* char_name,
eGUILD_DUTY duty,
BYTE char_class,
LEVELTYPE char_level,
BYTE chao_state,
bool is_login
);
void DestroyMember(
CHARGUID char_guid
);
//같은 길드 내에서 군단 변경시 이 함수를 쓴다.( 컨테이너에서 GuildMember 원소만 삭제 한다. )
bool InsertMember (
GuildMember* insert_member
);
void DeleteMember(
CHARGUID char_guid
);
GuildMember* FindMember(
CHARGUID char_guid
);
GuildMember* FindMember(
const TCHAR* member_name
);
GuildMember* FindCommander();
GuildMember* FindMemberByDuty(
const eGUILD_DUTY duty
);
bool IsExistMemberDuty(
eGUILD_DUTY duty
);
BYTE GetMemberCountByDuty(
eGUILD_DUTY duty
);
BOOL IsExistRearCamp();
void SetRearCamp(
BOOL is_camp
);
#ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
const void FindMembersByDuty(eGUILD_DUTY guild_duty, CorpsMemberMap& member_map);
#endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION
private:
DWORD corps_guid_;// 군단 Guid
BYTE corps_number_;// 군단 번호( 0군단(직할), 1군단, 2군단.... )
CorpsMemberMap member_map_;
CorpsMemberStringMap member_string_map_;
BOOL is_create_rear_camp;// 길드 육성캠프 존재여부.
};
inline void
GuildCorps::SetGuid(DWORD corps_guid)
{
corps_guid_ = corps_guid;
}
inline DWORD
GuildCorps::GetGuid()
{
return corps_guid_;
}
inline void
GuildCorps::SetNumber(BYTE corps_number)
{
corps_number_ = corps_number;
}
inline BYTE
GuildCorps::GetNumber()
{
return corps_number_;
}
inline BYTE
GuildCorps::GetMemberCount()
{
return static_cast<BYTE>(member_map_.size());
}
inline BOOL
GuildCorps::IsExistRearCamp()
{
return is_create_rear_camp;
}
inline void
GuildCorps::SetRearCamp(BOOL is_camp)
{
is_create_rear_camp = is_camp;
}
#endif //DBPROXY_GUILD_CORPS_H