Make sure new default value of sv_maxidle_playertospectator takes effect immediately
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / sv_minigames.qh
1 #pragma once
2
3 bool autocvar_sv_minigames;
4 bool autocvar_sv_minigames_observer;
5
6 /// Create a new minigame session
7 /// \return minigame session entity
8 entity start_minigame(entity player, string minigame );
9
10 /// Join an existing minigame session
11 /// \return minigame session entity
12 entity join_minigame(entity player, string game_id );
13
14 /// Invite a player to join in a minigame
15 /// \return Error string
16 string invite_minigame(entity inviter, entity player);
17
18 // Part minigame session
19 void part_minigame(entity player);
20
21 // Ends a minigame session
22 void end_minigame(entity minigame_session);
23
24 // Ends all minigame sessions
25 void end_minigames();
26
27 // Only sends entities to players who joined the minigame
28 // Use on customizeentityforclient for gameplay entities
29 bool minigame_CheckSend(entity this, entity client);
30
31 // Check for minigame impulses
32 bool MinigameImpulse(entity this, int imp);
33
34 // Parse a client command ( cmd minigame ... )
35 void ClientCommand_minigame(entity caller, int request, int argc, string command);
36
37 // Find the minigame_player entity for the given client entity
38 entity minigame_find_player(entity client);
39
40 /// For players: Minigame being played
41 .entity active_minigame;
42
43 /// For minigame sessions: list of players
44 /// For minigame_player: client entity
45 .entity minigame_players;
46
47 entity minigame_sessions;
48
49 bool minigame_SendEntity(entity this, entity to, int sf);
50
51 REGISTRY(Minigames, BITS(4))
52 REGISTER_REGISTRY(Minigames)
53 REGISTRY_CHECK(Minigames)
54
55 REGISTRY_DEFINE_GET(Minigames, NULL)
56 #define REGISTER_MINIGAME(name,nicename) \
57     REGISTER(Minigames, MINIGAME_##name, m_id, new_pure(minigame_descriptor)); \
58     int name##_server_event(entity, string, ...); \
59     REGISTER_INIT(MINIGAME_##name) { \
60         this.netname = strzone(strtolower(#name)); \
61         this.message = nicename; \
62                 this.minigame_event = name##_server_event; \
63     } \
64     REGISTER_INIT(MINIGAME_##name)