merge master

This commit is contained in:
aozhiwei 2019-06-04 10:41:29 +08:00
commit eb3b0f4e9b
6 changed files with 40 additions and 9 deletions

View File

@ -2,4 +2,4 @@
cd ../tools/robot/virtualclient cd ../tools/robot/virtualclient
python robot.py ws://192.168.100.21:7101 hao1069 hao1069 $1 python robot.py ws://192.168.100.21:7101 hao1069 hao1069 $1
#python robot.py "wss://game2001.kingsome.cn" hao1069 hao1069 $1

View File

@ -1867,6 +1867,11 @@ void Human::InternalSendGameOver()
}; };
auto on_error = [] (a8::XParams& param, const std::string& response) auto on_error = [] (a8::XParams& param, const std::string& response)
{ {
a8::UdpLog::Instance()->Error("battleReport params: %s response: %s",
{
param.param2,
response
});
long long room_uuid = param.sender; long long room_uuid = param.sender;
int hum_uniid = param.param1; int hum_uniid = param.param1;
Room* room = RoomMgr::Instance()->GetRoomByUuid(room_uuid); Room* room = RoomMgr::Instance()->GetRoomByUuid(room_uuid);
@ -1892,10 +1897,13 @@ void Human::InternalSendGameOver()
} else { } else {
url = "https://game2001api.kingsome.cn/webapp/index.php?c=Role&a=battleReport"; url = "https://game2001api.kingsome.cn/webapp/index.php?c=Role&a=battleReport";
} }
std::string data;
params->ToUrlEncodeStr(data);
f8::HttpClientPool::Instance()->HttpGet( f8::HttpClientPool::Instance()->HttpGet(
a8::XParams() a8::XParams()
.SetSender(room->room_uuid) .SetSender(room->room_uuid)
.SetParam1(entity_uniid), .SetParam1(entity_uniid)
.SetParam2(data),
on_ok, on_ok,
on_error, on_error,
url.c_str(), url.c_str(),

View File

@ -42,7 +42,7 @@ void Obstacle::RecalcSelfCollider()
} else { } else {
self_collider2_->_min = Vector2D(0.0f - door_state1->width() / 2.0f, self_collider2_->_min = Vector2D(0.0f - door_state1->width() / 2.0f,
0.0f - door_state1->height() / 2.0f); 0.0f - door_state1->height() / 2.0f);
self_collider2_->_max = Vector2D(door_state1->width(), door_state1->height()); self_collider2_->_max = Vector2D(door_state1->width() / 2.0f, door_state1->height() / 2.0f);
} }
} else if (meta->i->attack_type() != 2){ } else if (meta->i->attack_type() != 2){
switch (meta->i->type()) { switch (meta->i->type()) {

View File

@ -3,6 +3,7 @@
#include "playermgr.h" #include "playermgr.h"
#include "player.h" #include "player.h"
#include "cs_proto.pb.h" #include "cs_proto.pb.h"
#include "room.h"
void PlayerMgr::Init() void PlayerMgr::Init()
{ {
@ -14,10 +15,10 @@ void PlayerMgr::UnInit()
void PlayerMgr::_SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg) void PlayerMgr::_SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg)
{ {
auto itr = socket_hash_.find(hdr.socket_handle); Player* hum = GetPlayerBySocket(hdr.socket_handle);
if (itr != socket_hash_.end()) { if (hum) {
itr->second->socket_handle = 0; RemovePlayerBySocket(hdr.socket_handle);
socket_hash_.erase(itr); hum->room->OnPlayerOffline(hum);
} }
} }
@ -78,11 +79,19 @@ void PlayerMgr::OnClientDisconnect(a8::XParams& param)
} }
} }
for (int socket_handle : socket_list) { for (int socket_handle : socket_list) {
socket_hash_.erase(socket_handle); Player* hum = GetPlayerBySocket(socket_handle);
if (hum) {
RemovePlayerBySocket(socket_handle);
hum->room->OnPlayerOffline(hum);
}
} }
} }
void PlayerMgr::RemovePlayerBySocket(int socket_handle) void PlayerMgr::RemovePlayerBySocket(int socket_handle)
{ {
socket_hash_.erase(socket_handle); auto itr = socket_hash_.find(socket_handle);
if (itr != socket_hash_.end()) {
itr->second->socket_handle = 0;
socket_hash_.erase(itr);
}
} }

View File

@ -713,6 +713,19 @@ bool Room::CanJoin(const std::string& accountid)
} }
} }
void Room::OnPlayerOffline(Player* hum)
{
bool has_player = false;
for (auto& pair : accountid_hash_) {
if (pair.second->socket_handle != 0) {
has_player = true;
}
}
if (!has_player) {
RoomMgr::Instance()->AddOverRoom(room_uuid);
}
}
std::set<Human*>* Room::GetAliveTeam() std::set<Human*>* Room::GetAliveTeam()
{ {
for (auto& pair : team_hash_) { for (auto& pair : team_hash_) {

View File

@ -88,6 +88,7 @@ public:
int GetAliveTeamNum(); int GetAliveTeamNum();
std::set<Human*>* GetAliveTeam(); std::set<Human*>* GetAliveTeam();
bool CanJoin(const std::string& accountid); bool CanJoin(const std::string& accountid);
void OnPlayerOffline(Player* hum);
private: private:
unsigned short AllocUniid(); unsigned short AllocUniid();