This commit is contained in:
azw 2023-08-18 15:42:16 +00:00
parent 08ad1ade1c
commit a20f329c6d
5 changed files with 36 additions and 19 deletions

View File

@ -1,9 +1,33 @@
#include "precompile.h" #include "precompile.h"
#include <f8/coroutine.h> #include <f8/coroutine.h>
#include <a8/awaiter.h>
#include <a8/promise.h>
#include <f8/comgr.h>
#include "player.h" #include "player.h"
class ConnectedPromise : public a8::Promise
{
protected:
virtual void DoAwait() override
{
}
};
class JoinSuccessPromise : public a8::Promise
{
protected:
virtual void DoAwait() override
{
}
};
void Player::Update() void Player::Update()
{ {
@ -17,26 +41,21 @@ void Player::Init(int idx,
account_id_ = account_id; account_id_ = account_id;
session_id_ = session_id; session_id_ = session_id;
web_socket_ = socket; web_socket_ = socket;
} f8::CoMgr::Instance()->CreateCo
(
void Player::CoNet(f8::Coroutine* co) [this] (f8::Coroutine* co)
{ {
#if 0 CoLogin(co);
co->Await(CoLogin); });
co->Await(CoGame);
#endif
} }
void Player::CoLogin(f8::Coroutine* co) void Player::CoLogin(f8::Coroutine* co)
{ {
while (NetConnected()) { auto a = struct{}{};
co->CoAwait(std::make_shared<ConnectedPromise>());
} co->CoAwait(std::make_shared<JoinSuccessPromise>());
} }
void Player::CoGame(f8::Coroutine* co) void Player::CoGame(f8::Coroutine* co)
{ {
while (NetConnected()) {
}
} }

View File

@ -34,10 +34,9 @@ public:
int GetSocketId() { return socket_id_; } int GetSocketId() { return socket_id_; }
bool NetConnected() { return net_connected_; } bool NetConnected() { return net_connected_; }
const std::string& GetAccountId() { return account_id_; } const std::string& GetAccountId() { return account_id_; }
auto GetWebSocket() { return web_socket_; }
private: private:
void CoNet(f8::Coroutine* co);
void CoLogin(f8::Coroutine* co); void CoLogin(f8::Coroutine* co);
void CoGame(f8::Coroutine* co); void CoGame(f8::Coroutine* co);

View File

@ -111,5 +111,4 @@ void PlayerMgr::CoCreatePlayer(f8::Coroutine* co,
auto hum = std::make_shared<Player>(); auto hum = std::make_shared<Player>();
hum->Init(idx, account_id, session_id, socket); hum->Init(idx, account_id, session_id, socket);
account_id_hash_[hum->GetAccountId()] = hum; account_id_hash_[hum->GetAccountId()] = hum;
socket->Open();
} }

2
third_party/a8 vendored

@ -1 +1 @@
Subproject commit 91b5f74b3a08a51674e825a499beba668b5d23be Subproject commit 0d5c381b38618310d7b438a03c8942b14c0e0725

2
third_party/f8 vendored

@ -1 +1 @@
Subproject commit 1a93316b3852e72c999331172e293083bb059fdb Subproject commit 4384bc7ac05ef6bad5e1dfe94b7d4211b81930c0