user.h
1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#pragma once
#include <common.h>
#include <share_msg.pb.h>
#include "pet.h"
class gateway_t;
class room_service_t;
struct room_t;
class user_t
{
public:
user_t();
virtual ~user_t();
// 用户是否机器人
bool is_robot();
gateway_t* gateway;
share_msg::user_show_t user_show;
pet_mgr_t pet_mgr;
room_t* room;
USER_ID uid();
void send_msg(CMD_ID cmd_id, google::protobuf::Message* msg, uint32_t seq = 0);
void kaichang(user_t* user_def, share_msg::btl_round_t* out_btl_round);
void xianfa(user_t* user_def, share_msg::btl_round_t* out_btl_round);
void zhudong(user_t* user_def, share_msg::btl_round_t* out_btl_round);
};
class user_mgr_t
{
public:
user_mgr_t(){}
std::map<USER_ID, user_t*> user_map;//key:user_id, val:user_t*
user_t* find( USER_ID uid );
user_t* add_user(USER_ID uid, gateway_t* gateway);
//delete user, erase from user_map
void del_user(USER_ID uid);
};
extern user_mgr_t* g_user_mgr;
struct room_t{
std::vector<user_t*> user_vec;
user_t* ack(){
return this->user_vec[0];
}
user_t* def(){
return this->user_vec[1];
}
// 每回合发牌前,更新一次buf [2019/3/5 Administrator]
void round_update_buf(user_t* user, share_msg::btl_round_t* out_btl_round);
// 更新死亡, 将死亡的移除列表 [2019/3/7 Administrator]
void del_die();
// 更新死亡宠物,位置 [2019/3/5 Administrator]
void update_room_pets(share_msg::btl_ack_t* out_btl_ack);
};