From 8c178966f5ec9a01aa114412cf66e80527dc22a1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 26 Nov 2023 09:30:20 +0800 Subject: [PATCH] 1 --- server/robotserver/android_agent.cc | 43 +++++++++++++++++++++++++++-- server/robotserver/base_agent.h | 3 +- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index fc6446e5..2185f8e9 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -49,8 +49,15 @@ behaviac::EBTStatus AndroidAgent::CoIdle(int min_val, int max_val) behaviac::EBTStatus AndroidAgent::CoLogin() { + PRE_ENTER_COROUTINE(); + auto context = MAKE_BTCONTEXT + ( + std::string account_id; + std::optional login_ok; + ); + context->account_id = owner_->GetAccountId(); + auto co = std::make_shared(context, co_id, "CoLogin"); { - bool ret = false; auto url_params = a8::MutableXObject::CreateObject(); url_params->SetVal("c", "Login"); url_params->SetVal("a", "auth"); @@ -59,16 +66,46 @@ behaviac::EBTStatus AndroidAgent::CoLogin() url_params->SetVal("openid", owner_->GetIdx()); HttpProxy::Instance()->HttpGet ( - [] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) + [context] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) { if (ok) { + std::string account_id = rsp_obj->At("account_id")->AsXValue().GetString(); + std::string session_id = rsp_obj->At("session_id")->AsXValue().GetString(); + auto url_params = a8::MutableXObject::CreateObject(); + url_params->SetVal("c", "User"); + url_params->SetVal("a", "login"); + url_params->SetVal("account_id", account_id); + url_params->SetVal("session_id", session_id); + HttpProxy::Instance()->HttpGet + ( + [context] (bool ok, a8::XObject* rsp_obj, f8::HttpContext* ctx) + { + if (ok) { + + } else { + context->login_ok = false; + } + }, + "https://game2006api-test.kingsome.cn/webapp/index.php", + *url_params + ); + } else { + context->login_ok = false; } }, "https://login-test.kingsome.cn/webapp/index.php", *url_params ); } - return behaviac::BT_SUCCESS; + co->runing_cb = + [this, context] (BtCoroutine* co) + { + if (context->login_ok == std::nullopt) { + return behaviac::BT_RUNNING; + } + return behaviac::BT_SUCCESS; + }; + return StartCoroutine(co); } behaviac::EBTStatus AndroidAgent::CoConnectBattleServer() diff --git a/server/robotserver/base_agent.h b/server/robotserver/base_agent.h index 83a39cc6..2d7a1853 100644 --- a/server/robotserver/base_agent.h +++ b/server/robotserver/base_agent.h @@ -31,9 +31,10 @@ class Context : public BtContext \ {public: \ __VA_ARGS__; \ - long long frameno = 0; \ + long long create_tick = 0; \ }; \ auto context = std::make_shared(); \ +context->create_tick = a8::XGetTickCount(); \ return context; \ }(this)