93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
#pragma once
|
|
|
|
class Room;
|
|
class MobaTeam;
|
|
class MobaMember;
|
|
class Player;
|
|
struct BattleDataContext;
|
|
|
|
class MobaMember
|
|
{
|
|
public:
|
|
|
|
void Join(Player* hum);
|
|
MobaTeam* GetTeam() { return team_; }
|
|
bool IsJoined() { return joined_; }
|
|
int GetJoinTime() { return join_time_; }
|
|
bool IsView();
|
|
const std::string& GetAccountId() { return account_id_; }
|
|
const std::string& GetSessionId() { return session_id_; }
|
|
const std::string& GetName() { return name_; }
|
|
const std::string& GetAvatarUrl() { return avatar_url_; }
|
|
int GetHeadFrame() { return head_frame_; }
|
|
int GetSex() { return sex_; }
|
|
std::shared_ptr<BattleDataContext>& GetNetData() { return battle_context_; };
|
|
|
|
private:
|
|
MobaTeam *team_ = nullptr;
|
|
bool joined_ = false;
|
|
int join_time_ = 0;
|
|
std::string account_id_;
|
|
std::string session_id_;
|
|
std::string name_;
|
|
std::string avatar_url_;
|
|
int head_frame_ = 0;
|
|
int sex_ = 0;
|
|
std::shared_ptr<BattleDataContext> battle_context_;
|
|
friend class MobaBattle;
|
|
};
|
|
|
|
class MobaTeam
|
|
{
|
|
public:
|
|
|
|
std::string GetTeamUuid() { return team_uuid_; }
|
|
int GetMemberNum();
|
|
void TraverseMember(std::function<bool (std::shared_ptr<MobaMember>)> cb);
|
|
|
|
private:
|
|
std::string team_uuid_;
|
|
bool is_view_ = false;
|
|
std::map<std::string, std::shared_ptr<MobaMember>> member_hash_;
|
|
friend class MobaBattle;
|
|
};
|
|
|
|
class MobaBattle
|
|
{
|
|
public:
|
|
|
|
void Init();
|
|
void UnInit();
|
|
|
|
bool GetParseOk() { return parse_ok_; }
|
|
Room* GetRoom() { return room_; }
|
|
void SetRoom(Room* room) { room_ = room; }
|
|
const std::string& GetRoomUuid() { return room_uuid_; }
|
|
const std::string& GetSign() { return sign_; }
|
|
const std::shared_ptr<a8::XObject>& GetRawData() { return raw_data_; }
|
|
int GetZoneId() { return zone_id_; }
|
|
int GetNodeId() { return zone_id_; }
|
|
int GetStartTime() { return start_time_; }
|
|
void ParseResult(a8::XObject& obj);
|
|
std::shared_ptr<MobaTeam> GetTeamByAccountId(const std::string& account_id);
|
|
std::shared_ptr<MobaMember> GetMemberByAccountId(const std::string& account_id);
|
|
std::shared_ptr<MobaTeam> GetTeamByTeamUuid(const std::string& team_uuid);
|
|
int GetMemberNum();
|
|
int GetTeamNum();
|
|
void TraverseMemberList(std::function<bool (MobaMember*)> func);
|
|
void TraverseTeam(std::function<bool (std::shared_ptr<MobaTeam>)> cb);
|
|
|
|
private:
|
|
bool parse_ok_ = false;
|
|
Room *room_ = nullptr;
|
|
std::string room_uuid_;
|
|
int zone_id_ = 0;
|
|
int node_id_ = 0;
|
|
int start_time_ = 0;
|
|
std::string sign_;
|
|
std::shared_ptr<a8::XObject> raw_data_;
|
|
std::map<std::string, std::shared_ptr<MobaTeam>> uuid_hash_;
|
|
std::map<std::string, std::shared_ptr<MobaTeam>> account_hash_;
|
|
std::map<std::string, std::shared_ptr<MobaMember>> member_id_hash_;
|
|
};
|