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

60 lines
2.1 KiB
C++

#pragma once
#ifndef GAMESERVER_ETHEREALIZE_IMPL_H
#define GAMESERVER_ETHEREALIZE_IMPL_H
namespace nsSlot {
;
struct EtheriaControlOption;
//==================================================================================================
// implemented by _NA000109_100427_ITEM_CUSTOMIZING_CONTENTS_
class EtheriaImpl
{
public:
enum eResult {
eResult_Fail = 0,// fail Server -> Client(requester)
eResult_1to1 , // success Server -> Client(requester)
eResult_1toN , // related to casting Server -> Client(broadcast)
};
EtheriaImpl() { ZeroMemory(this, sizeof(*this)); }
eResult Casting(const EtheriaControl& req_info,
EtheriaControl* const result, EtheriaControlData* const broad_result_data);
eResult ExtractToEtheria(const EtheriaControl& req_info,
EtheriaControl* const result, EtheriaControlData* const result_data);
eResult CombineWithEtheria(const EtheriaControl& req_info,
EtheriaControl* const result, EtheriaControlData* const result_data);
private:
// call by a Player
void SetInstance(Player* player, EtheriaControlOption* control_option);
//
Player* player_;
EtheriaControlOption* control_option_;
friend class Player;
__DISABLE_COPY(EtheriaImpl);
};
//==================================================================================================
struct EtheriaFailHandler
{
EtheriaFailHandler(EtheriaControl* result, EtheriaControlData* result_data,
const EtheriaControl& req_info,
Player* player)
: player_(player), req_info_(req_info), result_(result), result_data_(result_data)
{}
//
void SetFailResult(uint8_t result_type, uint16_t result_code, bool show_log);
void OutputLog();
//
Player* const player_;
const EtheriaControl& req_info_;
EtheriaControl* const result_;
EtheriaControlData* const result_data_;
__DISABLE_COPY(EtheriaFailHandler);
};
}; //end of namespace
#endif //GAMESERVER_ETHEREALIZE_IMPL_H