summaryrefslogtreecommitdiff
path: root/inc/client/client.h
blob: 14e2e1b2613c6b184d39096046cf7d25dd7e267a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
Copyright (C) 2003-2006 Andrey Nazarov

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#ifndef CLIENT_H
#define CLIENT_H

#include "common/cmd.h"
#include "common/net/net.h"
#include "common/utils.h"

#define CHAR_WIDTH  8
#define CHAR_HEIGHT 8

#if USE_CLIENT

#define MAX_LOCAL_SERVERS   16
#define MAX_STATUS_PLAYERS  64

typedef struct {
    char name[MAX_CLIENT_NAME];
    int ping;
    int score;
} playerStatus_t;

typedef struct {
    char infostring[MAX_INFO_STRING];
    playerStatus_t players[MAX_STATUS_PLAYERS];
    int numPlayers;
} serverStatus_t;

typedef struct {
    char map[MAX_QPATH];
    char pov[MAX_CLIENT_NAME];
    qboolean mvd;
} demoInfo_t;

typedef enum {
    ACT_MINIMIZED,
    ACT_RESTORED,
    ACT_ACTIVATED
} active_t;

qboolean CL_ProcessEvents(void);
#if USE_ICMP
void CL_ErrorEvent(netadr_t *from);
#endif
void CL_Init(void);
void CL_Disconnect(error_type_t type);
void CL_Shutdown(void);
unsigned CL_Frame(unsigned msec);
void CL_RestartFilesystem(qboolean total);
void CL_Activate(active_t active);
void CL_UpdateUserinfo(cvar_t *var, from_t from);
void CL_SendStatusRequest(const netadr_t *address);
demoInfo_t *CL_GetDemoInfo(const char *path, demoInfo_t *info);
qboolean CL_CheatsOK(void);
void CL_SetSky(void);

#if USE_CURL
ssize_t HTTP_FetchFile(const char *url, void **data);
#endif

qboolean CL_ForwardToServer(void);
// adds the current command line as a clc_stringcmd to the client message.
// things like godmode, noclip, etc, are commands directed to the server,
// so when they are typed in at the console, they will need to be forwarded.

void Con_Init(void);
void Con_SetColor(color_index_t color);
void Con_Print(const char *text);
void Con_Printf(const char *fmt, ...) q_printf(1, 2);
void Con_Close(qboolean force);

// this is in the client code, but can be used for debugging from server
void SCR_DebugGraph(float value, int color);
void SCR_BeginLoadingPlaque(void);
void SCR_EndLoadingPlaque(void);
void SCR_ModeChanged(void);
void SCR_UpdateScreen(void);

#define U32_BLACK   MakeColor(  0,   0,   0, 255)
#define U32_RED     MakeColor(255,   0,   0, 255)
#define U32_GREEN   MakeColor(  0, 255,   0, 255)
#define U32_YELLOW  MakeColor(255, 255,   0, 255)
#define U32_BLUE    MakeColor(  0,   0, 255, 255)
#define U32_CYAN    MakeColor(  0, 255, 255, 255)
#define U32_MAGENTA MakeColor(255,   0, 255, 255)
#define U32_WHITE   MakeColor(255, 255, 255, 255)

#define UI_LEFT             0x00000001
#define UI_RIGHT            0x00000002
#define UI_CENTER           (UI_LEFT | UI_RIGHT)
#define UI_BOTTOM           0x00000004
#define UI_TOP              0x00000008
#define UI_MIDDLE           (UI_BOTTOM | UI_TOP)
#define UI_DROPSHADOW       0x00000010
#define UI_ALTCOLOR         0x00000020
#define UI_IGNORECOLOR      0x00000040
#define UI_XORCOLOR         0x00000080
#define UI_AUTOWRAP         0x00000100
#define UI_MULTILINE        0x00000200
#define UI_DRAWCURSOR       0x00000400

extern const uint32_t   colorTable[8];

qboolean SCR_ParseColor(const char *s, color_t *color);

float V_CalcFov(float fov_x, float width, float height);

#else // USE_CLIENT

#define CL_Init()                       (void)0
#define CL_Disconnect(type)             (void)0
#define CL_Shutdown()                   (void)0
#define CL_UpdateUserinfo(var, from)    (void)0
#define CL_ErrorEvent(from)             (void)0
#define CL_RestartFilesystem(total)     FS_Restart(total)
#define CL_ForwardToServer()            qfalse
#define CL_CheatsOK()                   (!!Cvar_VariableInteger("cheats"))

#define Con_Init()                      (void)0
#define Con_SetColor(color)             (void)0
#define Con_Print(text)                 (void)0

#define SCR_DebugGraph(value, color)    (void)0
#define SCR_BeginLoadingPlaque()        (void)0
#define SCR_EndLoadingPlaque()          (void)0

#endif // !USE_CLIENT

#endif // CLIENT_H