#pragma once #include #include #include "Client.hh" #include "ServerState.hh" std::shared_ptr create_game_generic( std::shared_ptr s, std::shared_ptr c, const std::string& name, const std::string& password = "", Episode episode = Episode::EP1, GameMode mode = GameMode::NORMAL, Difficulty difficulty = Difficulty::NORMAL, bool allow_v1 = false, std::shared_ptr watched_lobby = nullptr, std::shared_ptr battle_player = nullptr); void set_lobby_quest(std::shared_ptr l, std::shared_ptr q, bool substitute_v3_for_ep3 = false); asio::awaitable start_login_server_procedure(std::shared_ptr c); asio::awaitable start_proxy_session( std::shared_ptr c, const std::string& host, uint16_t port, bool use_persistent_config); asio::awaitable end_proxy_session(std::shared_ptr c, const std::string& error_message = ""); asio::awaitable on_connect(std::shared_ptr c); asio::awaitable on_disconnect(std::shared_ptr c); asio::awaitable on_command(std::shared_ptr c, std::unique_ptr msg); asio::awaitable on_command_with_header(std::shared_ptr c, const std::string& data);