Files
Sun1602/Server/CommunityServer/PacketHandler/Handler_CW.h
T
2022-10-26 12:25:11 +08:00

139 lines
8.3 KiB
C++

#pragma once
#ifndef WORLDSERVER_HANDLER_CW_H
#define WORLDSERVER_HANDLER_CW_H
#include <PacketStruct_CW.h>
#include "./PacketHandler.h"
namespace ns_world {
;
class ServerSessionInWorld;
}; //end of namespace
//==================================================================================================
namespace ns_world { namespace handlers {
;
class Handler_CW
{
public:
static const ns_world::PacketHandlerInfo GetPacketHandlerNodes();
//----------------------------------------------------------------------------------------------
// internal utility
static ns_world::WorldUser* last_handled_user;
// NOTE: f110823.1L, if the server_session field is null,
// it means process using the session of user
static bool CheckEnabledChattingState(ns_world::WorldUser* user,
ns_world::ServerSessionInWorld* server_session);
#define FIND_USER_FROM_AGENT_MSG(_msg_base_) \
(((ns_world::handlers::Handler_CW::last_handled_user = \
ns_world::WorldUserManager::Instance()->FindUser((_msg_base_)->m_dwKey)) != NULL) \
? (ns_world::handlers::Handler_CW::last_handled_user) \
: (FlowControl::FCAssert(!"can't find user"), NULL))
//----------------------------------------------------------------------------------------------
#undef HANDLER_NODE_INFO
#define HANDLER_NODE_INFO(_category_, _protocol_, phase) \
static void Handler_CW::On##_protocol_(\
ns_world::ServerSessionInWorld* const server_session, \
const MSG_BASE* const msg, const uint16_t msg_size)
//----------------------------------------------------------------------------------------------
// Handler_CW.cpp
//----------------------------------------------------------------------------------------------
// CHANGES: f110823.1L, removed. do not use anymore
//HANDLER_NODE_INFO(CW_CONNECTION, CW_HEARTBEAT, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GM, CW_GM_NOTICE_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GM, CW_GM_STRING_CMD_SYN, PHASE_SERVICE);
// CHANGES: f110907.2L, removed, does not use anymore
//HANDLER_NODE_INFO(CW_VIEWPORT, CW_VIEWPORT_CHARSTATE, PHASE_SERVICE);
// CHANGES: f110823.1L, removed. do not use anymore
//HANDLER_NODE_INFO(CW_ARMORKIT, CW_ARMORKIT_FINDHACK_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_COMMUNITY, CW_COMM_USERID_REQ, PHASE_SERVICE);
//__NA_001359_20090619_HEIM_LOTTO_SYSTEM = {
HANDLER_NODE_INFO(CW_LOTTO, CW_LOTTO_INFO_SYN, PHASE_SERVICE); // (, 내) 하임 로또 정보 요청
HANDLER_NODE_INFO(CW_LOTTO, CW_LOTTO_ENTRY_SYN, PHASE_SERVICE); // 하임 로또 응모 요청
HANDLER_NODE_INFO(CW_LOTTO, CW_LOTTO_NOTICE_LIST_SYN, PHASE_SERVICE); // 당첨 안내 쪽지 목록 요청
HANDLER_NODE_INFO(CW_LOTTO, CW_LOTTO_NOTICE_CONFIRM, PHASE_SERVICE); // 당첨 안내 쪽지 읽음 확인
//}
//----------------------------------------------------------------------------------------------
// Handler_CW.Chatting.cpp
//----------------------------------------------------------------------------------------------
HANDLER_NODE_INFO(CW_CHAT, CW_WHISPER_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_NOTICE_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_WHISPER_SET_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_NORMAL_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_SHOUT_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_PARTY_SYN, PHASE_SERVICE);
// CHANGES: f110823.1L, removed. do not use anymore
//HANDLER_NODE_INFO(CW_CRYPTOGRAPHY, CW_CRYPTOGRAPHY_ACK, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CRYPTOGRAPHY, CW_CRYPTOGRAPHY_NAK, PHASE_SERVICE);
// CHANGES: f110907.2L, the voice chatting contents removed. do not use anymore
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_VOICE_REQUEST_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_VOICE_ACCEPT_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_VOICE_REJECT_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_VOICE_DISCONNECT_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_VOICE_MIC_STATUS_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_PARTY_MIC_STATUS_REQ, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_PLAYER_MIC_STATUS_REQ, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_JOIN_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_SEND_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_INVITE_SYN, PHASE_SERVICE);
//_NA_000849_20101001_ENHANCED_INVITATION_FOR_CHAT_CHANNEL
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_INVITE_NAK, PHASE_SERVICE); // 초대 대상자가 채널 초대를 거부하거나 차단했을 때 호출된다.
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_OUT_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_CHAT, CW_CHAT_CHANNEL_INFO_REQ, PHASE_SERVICE);
//----------------------------------------------------------------------------------------------
// Handler_CW.Friend.cpp
//----------------------------------------------------------------------------------------------
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_NEWLIST_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_ADD_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_OK_SYN, PHASE_SERVICE);
//HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_NO_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_DEL_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_BLOCK_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_BLOCK_FREE_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_CHAT_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_CHATBLOCK_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_MEMO_UPDATE_SYN, PHASE_SERVICE); //_NA_0_20100527_ADD_CHAR_RELATION_MEMO
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_STATUS_REQ, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_FRIEND, CW_FRIEND_STATUS_JOIN_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_REVENGE, CW_REVENGE_DEL_SYN, PHASE_SERVICE);
//----------------------------------------------------------------------------------------------
// Handler_CW.Memo.cpp
//----------------------------------------------------------------------------------------------
HANDLER_NODE_INFO(CW_MEMO, CW_MEMO_SEND_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_MEMO, CW_MEMO_LIST_REQ, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_MEMO, CW_MEMO_VIEW_REQ, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_MEMO, CW_MEMO_DELETE_SYN, PHASE_SERVICE);
//----------------------------------------------------------------------------------------------
// Handler_CW.Guild.cpp
//----------------------------------------------------------------------------------------------
HANDLER_NODE_INFO(CW_GUILD, CW_GUILD_CHAT_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GUILD, CW_GUILD_WAREHOUSE_LOGLIST_REQ, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GUILD, CW_GUILD_SELECT_NOTICE_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GUILD, CW_GUILD_CHANGE_NOTICE_SYN, PHASE_SERVICE);
HANDLER_NODE_INFO(CW_GUILD, CW_DOMINATION_RETURN_HEIM_CMD, PHASE_SERVICE);
//----------------------------------------------------------------------------------------------
// Handler_CW.Group.cpp
//----------------------------------------------------------------------------------------------
// implemented by __KR_001355_20090608_GROUPINGSYSTEM_CW = {
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_ADD_SYN, PHASE_SERVICE); //그룹 멤버 추가 요청
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_GROUPLIST_REQ, PHASE_SERVICE); //그룹 리스트 요청
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_ADD_RESPONSE_ACK, PHASE_SERVICE);//그룹 멤버 추가 요청 성공 응답
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_ADD_RESPONSE_NAK, PHASE_SERVICE);//그룹 멤버 추가 요청 실패 응답
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_STATUS_REQ, PHASE_SERVICE); //그룹 멤버 상세 정보 요청
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_DEL_SYN, PHASE_SERVICE); //그룹 멤버 삭제 요청
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_ADDBLOCK_SYN, PHASE_SERVICE); //그룹 맴버 추가 거부 토글 요청
HANDLER_NODE_INFO(CW_GROUP, CW_GROUP_RESTOR_CMD, PHASE_SERVICE); //그룹 정보 재요청
// }; end of '__KR_001355_20090608_GROUPINGSYSTEM_CW'
};
}}; //end of namespace
//==================================================================================================
#endif //WORLDSERVER_HANDLER_CW_H