This commit is contained in:
aozhiwei 2023-12-08 10:45:32 +08:00
parent 13ce94f65e
commit 2764aac6c1
6 changed files with 44 additions and 13 deletions

View File

@ -126,31 +126,33 @@ behaviac::EBTStatus AndroidAgent::CoConnectBattleServer()
(
std::function<void (a8::WebSocketClient*, int)> old_on_error;
std::function<void (a8::WebSocketClient*)> old_on_connect;
std::function<void (a8::WebSocketClient*)> old_on_disconnect;
std::function<void (a8::WebSocketClient*, int)> old_on_disconnect;
bool pending = true;
bool connect_ok = false;
int socket_id = 0;
);
context->old_on_error = owner_->GetWebSocket()->on_error;
context->old_on_connect = owner_->GetWebSocket()->on_connect;
context->old_on_disconnect = owner_->GetWebSocket()->on_disconnect;
context->socket_id = owner_->GetSocketId();
owner_->GetWebSocket()->on_error =
[this, context] (a8::WebSocketClient*, int err_code)
{
a8::XPrintf("WebSocketClient on_error:%d\n", {err_code});
a8::XPrintf("id:%d WebSocketClient on_error:%d\n", {context->socket_id, err_code});
context->pending = false;
context->connect_ok = false;
};
owner_->GetWebSocket()->on_connect =
[this, context] (a8::WebSocketClient* )
{
a8::XPrintf("WebSocketClient on_connect\n", {});
a8::XPrintf("id:%d WebSocketClient on_connect\n", {context->socket_id});
context->pending = false;
context->connect_ok = true;
};
owner_->GetWebSocket()->on_disconnect =
[this, context] (a8::WebSocketClient* )
[this, context] (a8::WebSocketClient*, int err_code)
{
a8::XPrintf("WebSocketClient on_disconnect\n", {});
a8::XPrintf("id:%d WebSocketClient on_disconnect:%d\n", {context->socket_id, err_code});
context->pending = false;
context->connect_ok = false;
};
@ -172,6 +174,7 @@ behaviac::EBTStatus AndroidAgent::CoConnectBattleServer()
behaviac::EBTStatus AndroidAgent::CoJoin()
{
PRE_ENTER_COROUTINE();
cs::CMJoin msg;
msg.set_server_id(6);
msg.set_team_uuid("");
@ -187,14 +190,36 @@ behaviac::EBTStatus AndroidAgent::CoJoin()
msg.set_session_id(owner_->GetSessionId());
owner_->SendMsg(msg);
a8::XPrintf("CoJoin\n", {});
return behaviac::BT_SUCCESS;
a8::XPrintf("CoJoin %d\n", {owner_->GetSocketId()});
auto context = MAKE_BTCONTEXT
(
);
auto co = std::make_shared<BtCoroutine>(context, co_id, "CoJoin");
co->runing_cb =
[this, context] (BtCoroutine* co)
{
if (!owner_->IsJoinOk()) {
return behaviac::BT_RUNNING;
}
return behaviac::BT_SUCCESS;
};
return StartCoroutine(co);
}
behaviac::EBTStatus AndroidAgent::CoUpdateGame()
{
cs::CMMove msg;
owner_->SendMsg(msg);
#if 1
if (owner_->GetWebSocket()->Connected()) {
{
cs::CMMove msg;
owner_->SendMsg(msg);
}
{
cs::CMPing msg;
owner_->SendMsg(msg);
}
}
#endif
return behaviac::BT_SUCCESS;
}

View File

@ -15,7 +15,7 @@ void IoMgr::Init()
auto w = std::make_shared<asio::io_context::work>(*c);
works.push_back(w);
contexts.push_back(c);
new std::thread(&IoMgr::WorkerThreadProc, this, contexts.at(0));
//new std::thread(&IoMgr::WorkerThreadProc, this, contexts.at(0));
}
}

View File

@ -105,7 +105,7 @@ void Player::_SMKcpHandshake(f8::MsgHdr* hdr, const cs::SMKcpHandshake& msg)
void Player::_SMPing(f8::MsgHdr* hdr, const cs::SMPing& msg)
{
f8::UdpLog::Instance()->Info("%s %s", {msg.GetTypeName(), f8::PbToJson(&msg)});
//f8::UdpLog::Instance()->Info("%s %s", {msg.GetTypeName(), f8::PbToJson(&msg)});
}
void Player::_SMRpcError(f8::MsgHdr* hdr, const cs::SMRpcError& msg)

View File

@ -37,6 +37,7 @@ public:
void SetLoginSucess();
void SetLoginFail();
bool IsLoginSucess() { return is_login_success_; };
bool IsJoinOk() { return join_ok_; }
void _SMKcpHandshake(f8::MsgHdr* hdr, const cs::SMKcpHandshake& msg);
void _SMPing(f8::MsgHdr* hdr, const cs::SMPing& msg);

View File

@ -28,10 +28,11 @@ void PlayerMgr::Init()
socket_id_hash_[hum->GetSocketId()] = hum;
}
#endif
int count = 0;
f8::Timer::Instance()->SetInterval
(
3000,
[this] (int et, const a8::Args* args)
[this, count] (int et, const a8::Args* args) mutable
{
if (et == a8::TIMER_EXEC_EVENT) {
int idx = account_id_hash_.size() + 1;
@ -40,6 +41,10 @@ void PlayerMgr::Init()
hum->Init(idx, account_id);
account_id_hash_[hum->GetAccountId()] = hum;
socket_id_hash_[hum->GetSocketId()] = hum;
++count;
if (count >= 200) {
f8::Timer::Instance()->DeleteCurrentTimer();
}
}
});
}

2
third_party/a8 vendored

@ -1 +1 @@
Subproject commit 380074e2f78043a71b134c420af20b00127b1967
Subproject commit af7a9093a0d6a9c7427e08c5ee042d692c94c70b