Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
sv_minigames.qh
Go to the documentation of this file.
1#pragma once
2
3enum
4{
13};
15 {"create", "join", "list", "list-sessions", "end", "part", "invite"};
16
19
22entity start_minigame(entity player, string minigame );
23
26entity join_minigame(entity player, string game_id );
27
30string invite_minigame(entity inviter, entity player);
31
32// Part minigame session
33void part_minigame(entity player);
34
35// Ends a minigame session
36void end_minigame(entity minigame_session);
37
38// Ends all minigame sessions
39void end_minigames();
40
41// Only sends entities to players who joined the minigame
42// Use on customizeentityforclient for gameplay entities
43bool minigame_CheckSend(entity this, entity client);
44
45// Check for minigame impulses
46bool MinigameImpulse(entity this, int imp);
47
48// Parse a client command ( cmd minigame ... )
49void ClientCommand_minigame(entity caller, int request, int argc, string command);
50
51// Find the minigame_player entity for the given client entity
53
56
60
62
63bool minigame_SendEntity(entity this, entity to, int sf);
64
65// FIXME: de-duplicate registry definitions and use pseudo-class references
66REGISTRY(Minigames, BITS(4))
67REGISTER_REGISTRY(Minigames)
68REGISTRY_CHECK(Minigames)
69// enable to sort minigames alphabetically
70#if 0
71REGISTRY_SORT(Minigames)
72
73STATIC_INIT(Minigames_renumber)
74{
75 FOREACH(Minigames, true, it.m_id = i);
76}
77#endif
78
79REGISTRY_DEFINE_GET(Minigames, NULL)
80#define REGISTER_MINIGAME(name,nicename) \
81 REGISTER(Minigames, MINIGAME_##name, m_id, new_pure(minigame_descriptor)); \
82 int name##_server_event(entity, string, ...); \
83 REGISTER_INIT(MINIGAME_##name) { \
84 this.netname = strzone(strtolower(#name)); \
85 this.message = nicename; \
86 this.minigame_event = name##_server_event; \
87 } \
88 REGISTER_INIT(MINIGAME_##name)
#define BITS(n)
Definition bits.qh:9
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
entity active_minigame
#define FOREACH(list, cond, body)
Definition iter.qh:19
#define NULL
Definition post.qh:14
#define REGISTRY_SORT(...)
Definition registry.qh:163
#define REGISTER_REGISTRY(id)
Definition registry.qh:270
#define REGISTRY(id, max)
Declares a new registry.
Definition registry.qh:23
#define REGISTRY_CHECK(id)
Definition registry.qh:213
#define REGISTRY_DEFINE_GET(id, null)
Definition registry.qh:50
int int int imp
Definition impulse.qc:90
#define STATIC_INIT(func)
during worldspawn
Definition static.qh:33
entity minigame_players
For minigame sessions: list of players For minigame_player: client entity.
bool MinigameImpulse(entity this, int imp)
entity minigame_sessions
bool minigame_CheckSend(entity this, entity client)
string MINIGAME_COMMON_CMD[MINIGAME_COMMON_CMD_COUNT]
bool autocvar_sv_minigames
@ MINIGAME_COMMON_CMD_COUNT
@ MINIGAME_COMMON_CMD_ID_LIST_SESSIONS
@ MINIGAME_COMMON_CMD_ID_PART
@ MINIGAME_COMMON_CMD_ID_JOIN
@ MINIGAME_COMMON_CMD_ID_END
@ MINIGAME_COMMON_CMD_ID_INVITE
@ MINIGAME_COMMON_CMD_ID_LIST
@ MINIGAME_COMMON_CMD_ID_CREATE
entity join_minigame(entity player, string game_id)
Join an existing minigame session.
bool autocvar_sv_minigames_observer
void end_minigames()
bool minigame_SendEntity(entity this, entity to, int sf)
void part_minigame(entity player)
void end_minigame(entity minigame_session)
entity start_minigame(entity player, string minigame)
Create a new minigame session.
string invite_minigame(entity inviter, entity player)
Invite a player to join in a minigame.
entity minigame_find_player(entity client)
void ClientCommand_minigame(entity caller, int request, int argc, string command)