]> git.xonotic.org Git - xonotic/darkplaces.git/blob - host.h
NudgeOutOfSolid: fix moving entities out of the world in complex cases
[xonotic/darkplaces.git] / host.h
1 #ifndef HOST_H
2 #define HOST_H
3
4 #include <setjmp.h>
5 #include "qtypes.h"
6 #include "qdefs.h"
7 #include "cmd.h"
8 #include "cvar.h"
9
10 extern cvar_t developer;
11 extern cvar_t developer_entityparsing;
12 extern cvar_t developer_extra;
13 extern cvar_t developer_insane;
14 extern cvar_t developer_loadfile;
15 extern cvar_t developer_loading;
16 extern cvar_t host_isclient;
17 extern cvar_t sessionid;
18
19 struct cmd_state_s;
20
21 typedef enum host_state_e
22 {
23         host_init,
24         host_loading,
25         host_active,
26         // states >= host_shutdown cause graceful shutdown, see Sys_HandleCrash() comments
27         host_shutdown,
28         host_failing, ///< crashing
29         host_failed ///< crashed or aborted, SDL dialog open
30 } host_state_t;
31
32 typedef struct host_static_s
33 {
34         jmp_buf abortframe;
35         int state;
36         unsigned int framecount; // incremented every frame, never reset (checked by Host_Error and Host_SaveConfig_f)
37         double realtime; // the accumulated mainloop time since application started (with filtering), without any slowmo or clamping
38         double dirtytime; // the main loop wall time for this frame, equal to Sys_DirtyTime() at the start of this host frame
39         double sleeptime; // time spent sleeping after the last frame
40         qbool restless; // don't sleep
41         qbool paused; // global paused state, pauses both client and server
42         cmd_buf_t *cbuf;
43
44         struct
45         {
46                 void (*ConnectLocal)(void);
47                 void (*Disconnect)(qbool, const char *, ... );
48                 void (*ToggleMenu)(void);
49                 qbool (*CL_Intermission)(void); // Quake compatibility
50                 void (*CL_SendCvar)(struct cmd_state_s *);
51                 void (*SV_SendCvar)(struct cmd_state_s *);
52                 void (*SV_Shutdown)(void);
53         } hook;
54 } host_static_t;
55
56 extern host_static_t host;
57
58 void Host_Main(void);
59 void Host_Error(const char *error, ...) DP_FUNC_PRINTF(1) DP_FUNC_NORETURN;
60 void Host_LockSession(void);
61 void Host_UnlockSession(void);
62 void Host_AbortCurrentFrame(void) DP_FUNC_NORETURN;
63 void Host_SaveConfig(const char *file);
64
65 #endif