The Battle for Wesnoth  1.17.0-dev
multiplayer.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2005 - 2021
3  by Philippe Plantier <ayin@anathas.org>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 #pragma once
17 
18 #include <functional>
19 #include <string>
20 
22 class config;
23 
24 namespace ng { class connect_engine; }
25 
26 /** Main entry points of multiplayer mode. */
27 namespace mp
28 {
29 /** Max length of a player name. */
30 const std::size_t max_login_size = 20;
31 
32 /**
33  * Starts a multiplayer game in client mode.
34  *
35  * @param host The host to connect to.
36  */
37 void start_client(const std::string& host);
38 
39 /** Starts a multiplayer game in single-user mode. */
40 void start_local_game();
41 
42 /**
43  * Starts a multiplayer game in single-user mode using command line settings.
44  *
45  * @param cmdline_opts The commandline options.
46  */
47 void start_local_game_commandline(const commandline_options& cmdline_opts);
48 
49 /**
50  * Opens the MP Staging screen and sets the game state according to the changes made.
51  * Meant to be used between scenarios in a campaign.
52  *
53  * @param engine A connect_engine instance to pass to MP Staging.
54  */
56 
57 /**
58  * Opens the MP Join Game screen and sets the game state according to the changes made.
59  * Meant to be used between scenarios in a campaign.
60  *
61  * @param observe Whether entering as an observer or player.
62  */
63 bool goto_mp_wait(bool observe);
64 
65 /** Gets whether the currently logged-in user is a moderator. */
67 
68 /** Gets the forum profile link for the given user. */
69 std::string get_profile_link(int user_id);
70 
71 /** Attempts to send given data to server if a connection is open. */
72 void yeet_to_server(const config& data);
73 
74 /** RAII helper class to register a network handler. */
76 {
77 public:
78  using handler = std::function<void(const config&)>;
79 
82 
83 private:
84  std::function<void()> remove_handler{};
85 };
86 
87 } // namespace mp
const std::size_t max_login_size
Max length of a player name.
Definition: multiplayer.hpp:30
bool goto_mp_wait(bool observe)
Opens the MP Join Game screen and sets the game state according to the changes made.
bool logged_in_as_moderator()
Gets whether the currently logged-in user is a moderator.
Main entry points of multiplayer mode.
Definition: lobby_data.cpp:52
std::string get_profile_link(int user_id)
Gets the forum profile link for the given user.
std::function< void(const config &)> handler
Definition: multiplayer.hpp:78
void start_local_game_commandline(const commandline_options &cmdline_opts)
Starts a multiplayer game in single-user mode using command line settings.
void yeet_to_server(const config &data)
Attempts to send given data to server if a connection is open.
RAII helper class to register a network handler.
Definition: multiplayer.hpp:75
bool goto_mp_staging(ng::connect_engine &engine)
Opens the MP Staging screen and sets the game state according to the changes made.
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:61
void start_client(const std::string &host)
Pubic entry points for the MP workflow.
void start_local_game()
Starts a multiplayer game in single-user mode.